本节主要是完整地搭建一套Kubernetes集群出来,包括实验环境的准备、安装Master、把Worker加入集群、安装Calico网络等。
要完成本章及后续的实验,我们需要3台机器:1台Master,2台Worker。实验拓扑图如图3-5所示。
图3-5 实验拓扑图
机器的配置如表3-3所示。
表3-3 机器的配置
在安装Kubernetes之前,需要设置好yum源、关闭SELinux及关闭Swap等。下面的准备操作都是在所有节点上进行的。
第1步 建议所有节点使用CentOS 7.6,在所有节点上同步/etc/hosts。
第2步 在所有节点上配置防火墙和关闭SELinux。
这里SELinux的配置,如果getenforce的值原来不是Disabled,则需要重启系统才能生效。
第3步 在所有节点上关闭Swap,并注释掉/etc/fstab里的Swap相关条目。
第4步 在所有节点上配置好yum源(请提前安装好wget,再执行下面的操作)。
第5步 在所有节点上设置内核参数。
让其立即生效。
第6步 在所有节点上安装并启动Containerd,并设置Containerd自动启动。
第7步 修改Containerd的配置文件。
删除默认的配置文件,然后下载已经修改好的配置文件。
第8步 安装nerdctl和CNI网络插件。
下载地址如下。
下载好之后,按如下步骤进行安装(可以参考前面容器部分的安装步骤)。
第9步 在所有节点上安装软件包。
重启Containerd服务。
第10步 在所有节点上安装软件包。
安装时如果没有指定版本,则安装的是最新版本。
第11步 在所有节点上启动Kubelet,并设置开机自动启动。
此时Kubelet的状态为Activating。
下面的操作是在vms10上进行的,目的是把vms10配置成Master。
第1步 在Master上执行初始化。
上面输出的是安装完之后的操作,按上面的提示分别执行每条命令。
(1)这里使用--image-repository选项来指定使用阿里云的镜像。
(2)--pod-network-cidr=10.244.0.0/16 在这里指的是Pod的网段。
第2步 复制Kubeconfig文件。
上面的提示中,如下命令是用于把Worker加入Kubernetes集群的命令。
如果忘记了保存此命令,可以使用如下命令获取。
下面的步骤是把vms11和vms12以Worker的身份加入Kubernetes集群。
第1步 在vms11和vms12上分别执行以下命令。
第2步 切换到Master上,可以看到所有节点已经加入集群了。
可以看到,所有节点的状态为NotReady,我们需要安装Calico网络才能使K8s正常工作。
因为在整个Kubernetes集群里,Pod都是分布在不同的主机上的,为了实现这些Pod的跨主机通信,必须安装CNI网络插件,这里选择Calico网络。
第1步 在Master上下载配置Calico网络的YAML文件。
下载地址为https://raw.githubusercontent.com/projectcalico/calico/v3.26.0/manifests/calico.yaml或https://docs.tigera.io/calico/latest/getting-started/(图3-6)。
图3-6 下载配置Calico网络的YAML文件
如果下载不下来,可以按如下命令下载。
第2步 修改calico.yaml里的Pod网段。
把calico.yaml里Pod所在的网段改为kubeadm init时--pod-network-cidr选项所指定的网段,用Vim编辑器打开此文件后查找“IPV4POOL_CIDR”,按如下标记进行修改。
把两个#及#后面的空格去掉,并把192.168.0.0/16改为10.244.0.0/16。
改的时候请看清缩进关系,即这里的对齐关系。同时这里添加了变量:
这里的ens32要根据自己机器上的网卡名进行修改,比如所使用的服务器网卡名是eth0,这里就改为eth0,笔者的网卡名是ens32,所以这里写的是ens32。
修改这个的原因请参阅文章https://www.rhce.cc/3374.html。
下载的这个calico.yaml已经改好了,特别要注意上面说的网卡名。
第3步 提前下载所需要的镜像。
查看此文件用哪些镜像。
建议提前在所有节点(包括Master)上把这些镜像拉取下来。
第4步 安装Calico网络。
在Master上执行如下命令。
第5步 验证结果。
再次在Master上运行kubectl get nodes命令,查看运行结果。
可以看到,所有节点的状态已经变为Ready了。