如今,你几乎不可避免地会听到来自Kubernetes的发声,你更没有充分的理由拒绝去听。 一旦一切就绪,这个强大的容器编排工具将以您难以想象的敏捷性来扩展您的操作。
为了实际使用Kubernetes进行部署和管理容器,您首先必须创建Kubernetes服务器集群。 一旦集群建立后,您就能够部署,扩展和管理您的容器化应用程序了。
在Ubuntu Server 18.04的帮助下,我将引导您完成此过程。 我们至少需要2个Ubuntu Server 18.04实例和一个具有sudo特权的用户帐户才能完成此工作。 您需要确保所有计算机都已做完更新(使用sudo apt-get update和sudo apt-get upgrade -y命令)。
还需要一些时间,大约30分钟左右。
我将在两台机器上进行示范操作:一个master节点和一个worker节点。
我们开始吧!
安装Docker
master节点和worker节点上都需要进行下面的操作。
我们要做的第一件事就是安装Docker。要安装docker,先要登录到Server上,输入并执行下面命令:
sudo apt-get install docker.io
一旦docker安装成功后,你需要将你的账号添加到docker组中(否则,每次运行docker命令,都需要带上sudo,这可能导致安全问题)。执行下面命令将你的账号添加到docker组中:
sudo usermod -aG docker $USER
登出并重新登录,这样上述配置变化才能生效。
启动并使能docker后台驻留程序:
sudo systemctl start docker
sudo systemctl enable docker
安装Kubernetes
现在我们需要在所有节点上安装Kubernetes了。首先,我们通过下面命令添加Kubernetes GPG key:
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add
如果没有安装curl,可以通过下面命令安装:
sudo apt-get install curl -y
接下来,添加必要的仓库:
sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"
通过下面命令安装必要的软件:
sudo apt-get install kubeadm kubelet kubectl -y
上面的命令将自动安装目标软件以及它们的依赖。
主机名
为了让后续操作更简单,我们通过下面命令为每个server赋予新的主机名。
sudo hostnamectl set-hostname HOSTNAME
HOSTNAME是主机的名字
你可以使用下面这些主机名:
- kubemaster
- node1
- node2
- node3
- 其他等等
登出并重新登录。最后,将主机名映射为IP地址。通过下面命令打开host文件并编辑:
sudo nano /etc/hosts
在文件末尾附加类似下面的内容(保证你的主机名与其正确的ip一一对应):
192.168.1.218 kubemaster
192.168.1.219 kubenode1
192.168.1.220 kubenode2
关闭并保存文件。
关闭Swap
要运行kubernetes,你必须首先关闭swap。我们可以通过下面命令来做到这一点:
sudo swapoff -a
如果要使修改永久生效(否则,下次重启时,swap会重新启用),执行下面命令:
sudo nano /etc/fstab
在fstab文件中,将swap入口注释掉,如下图:
图: 通过fstab关闭swap
初始化Master
接下来,我们通过下面命令来初始化master节点。
sudo kubeadm init --pod-network-cidr=192.168.1.90/16
初始化结束后,你将看到将worker node加入集群的精确命令(如下图),保证要拷贝下该命令:
图: 将worker node加入master的命令
仅在master上创建下面目录:
mkdir -p $HOME/.kube
将相应的配置你文件拷贝到该目录下:
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
赋予配置文件适当的权限:
sudo chown $(id -u):$(id -g) $HOME/.kube/config
部署Pod网络
在将worker加入到master之前,你必须先部署pod网络(否则,所有事情都无法按照预期那样正常工作)。Flannel是可选的Pod网络之一。我们通过下面命令安装它(仅在master运行下面命令):
sudo kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
将worker node加入到master
现在我们具备将worker node加入master的条件了。登录到worker node上,执行类型下面的命令:
sudo kubeadm join 192.168.1.190:6443 --token bzbwl4.ll5o9x3jjhqqwofa --discovery-token-ca-cert-hash sha256:ecb0223a05be3502c2d102f3e56104b10fcd105430eb723d3b3e816618323d73
在每个worker node上执行join命令。一旦join命令执行成功,返回master node执行下面命令:
kubectl get nodes
你可以看到所有加入到集群的worker node列表:
图: 我们的node已经加入并处于ready状态
到此,kubernetes集群已经就绪并可以部署你的第一个容器化的应用或服务了。不要忘了,如果你要加入更多worker node(提高伸缩能力),你需要join命令。如果你忘记保存之前那个join命令了,你可以在任何时候通过下面命令获取它:
kubeadm token create --print-join-command
上面命令将输出join命令,在你的新worker node上执行它即可。
讲师主页:tonybai_cn
讲师博客: Tony Bai
实战课:《Kubernetes实战:高可用集群搭建,配置,运维与应用》
免费课:《Kubernetes基础:开启云原生之门》
热门评论
楼主好,咨询一下,为什么我的master节点一直处于NOTready状态,而其他node都是ready?通过pod查看显示有一个calico-node-vvppp没用ready,难道是我的网络插件没有插好吗?还是其他原因?(网络上该问题的答案查过了,感觉跟自己的情况不一样,不适用)