![再也不踩坑的kubernetes实战指南](https://wfqqreader-1252317822.image.myqcloud.com/cover/323/27563323/b_27563323.jpg)
1.2 Kubeadm高可用安装K8S集群(1.13.x和1.14.x)
Kubeadm安装Kubernetes 1.13.x和1.14.x版本差异并不是很大,相对于1.12.x和1.11.x版本更加简单,只需要对其中一台Master初始化即可,其他Master节点和Node使用join即可,Master和Node添加到集群中只差了一个参数,修改命令如下:
--experimental-control-plane
1.2.1 基本组件的安装
关于基本环境配置和内核升级,请参考1.1节。
和上节一样,需要提前安装Kubernetes集群的必需组件。
安装Docker:
yum -y install docker-ce-17.09.1.ce-1.el7.centos
安装Kubernetes组件:
![](https://epubservercos.yuewen.com/62A1DF/15825992304144506/epubprivate/OEBPS/Images/Figure-P30_57202.jpg?sign=1739423897-ptmqI9DXAsyI0jOmVxbDGvdWiwyJBCMR-0-5b914cc4c032ea3dfc97efa4866183ff)
所有节点启动Docker:
systemctl enable --now docker
配置Kubelet:
![](https://epubservercos.yuewen.com/62A1DF/15825992304144506/epubprivate/OEBPS/Images/Figure-P30_57205.jpg?sign=1739423897-1er45LobHv3WB2ilG8PkESd8Q5eTZVq9-0-fd69b903c96640a8571db297cede7a22)
HAProxy和KeepAlived的安装请参考1.1.4节。
1.2.2 集群初始化
Master01节点集群初始化和上一节演示的版本一致,但是kubeadm-config.yaml有所变化,去掉了内置于Kubernetes集群中的Etcd集群配置。在1.13.x版本中,Master02和Master03无须kubeadm-config.yaml也可,但是为了提前下载镜像,一般也会拷贝过去。
使用kubeadm安装Kubernetes高可用集群1.13.x和1.14.x版本,kubeadm的配置文件如下:
![](https://epubservercos.yuewen.com/62A1DF/15825992304144506/epubprivate/OEBPS/Images/Figure-P30_57206.jpg?sign=1739423897-uVqJxiYpC2Ce1zRgXV18R9xr0r4mLyTd-0-5f3003e64b2d0b4c03b77d44420ea2b5)
和上一节不同的是直接开启了ipvs模式的rr模式,这样在初始化完成以后不用再次修改了,其中podSubnet为Pod的网段,如果安装1.14.x,只需要将Kubernetes版本改成1.14.x即可。
Master节点提前下载镜像:
kubeadm config images pull --config /root/kubeadm-config.yaml
Master01节点初始化:
kubeadm init --config /root/kubeadm-config.yaml
对于Kubernetes 1.14.x,在初始化时加入--experimental-upload-certs参数,使集群初始化更加简单,无须再复制证书至其他节点,之后join时添加--certificate-key参数即可自动加入集群。Kubernetes 1.14.x的初始化命令如下:
kubeadm init --config=kubeadm-config.yaml --experimental-upload-certs
如果初始化失败,重置后再次初始化:
kubeadm reset
记录token值,在节点加入集群时使用:
![](https://epubservercos.yuewen.com/62A1DF/15825992304144506/epubprivate/OEBPS/Images/Figure-P31_57214.jpg?sign=1739423897-jADV4VfRE2otSnhsxBccStYroXW1gBWV-0-fff27c3a5cd5f0a41b948470ac08077a)
对于Kubernetes 1.14.x版本,初始化完成以后生成的Token如下:
![](https://epubservercos.yuewen.com/62A1DF/15825992304144506/epubprivate/OEBPS/Images/Figure-P31_57215.jpg?sign=1739423897-FOosm3QEXw2kN0ABSlBdZRhxROmvaTqK-0-3f639856b08bfca1d5d526ad07f46ba8)
其中,Master节点使用--experimental-control-plane和--certificate-key参数即可完成初始化,并以Master的角色加入集群:
![](https://epubservercos.yuewen.com/62A1DF/15825992304144506/epubprivate/OEBPS/Images/Figure-P32_57216.jpg?sign=1739423897-V3Xebc2HbS3XOHrAQFbmBKsSeXnMf1Du-0-d065aac946680718bf8e5a939c0b38c5)
所有Master节点配置环境变量:
cat <<EOF >> /root/.bashrc export KUBECONFIG=/etc/kubernetes/admin.conf EOF source /root/.bashrc
查看节点状态:
![](https://epubservercos.yuewen.com/62A1DF/15825992304144506/epubprivate/OEBPS/Images/Figure-P32_57218.jpg?sign=1739423897-UMTbcX7P3yvhhGnA0GUHDven1MCvnCcT-0-7b16c478e54bbf53aa451bc83a6efedf)
查看Pod状态:
![](https://epubservercos.yuewen.com/62A1DF/15825992304144506/epubprivate/OEBPS/Images/Figure-P32_57219.jpg?sign=1739423897-xq26JQXprnngqQOgAIHfcOixYoJKTPmA-0-6aa4fd39d0a12f6021954229730a54e8)
1.2.3 Calico组件的安装
可安装截止本书截稿时的最新版3.6.1,也可以参考1.1.5节,POD_CIDR为上述配置的podSubnet:
POD_CIDR="<your-pod-cidr>" \ sed -i -e "s?192.168.0.0/16?$POD_CIDR?g" calico/v3.6.1/calico.yaml kubectl apply -f calico/v3.6.1/calico.yaml
1.2.4 高可用Master
Kubernetes 1.13.x版需要复制证书至其他Master节点,1.14.x版则无须再复制证书至其他Master节点:
![](https://epubservercos.yuewen.com/62A1DF/15825992304144506/epubprivate/OEBPS/Images/Figure-P33_57221.jpg?sign=1739423897-vBR9CrdW2rEZsg5xUAUqawsSWvDi01JW-0-c01032eb792951e0a762fe0975ff564c)
Master02提前下载镜像:
kubeadm config images pull --config /root/kubeadm-config.yaml
Master02加入集群,与Node节点相差的参数就是--experimental-control-plane:
![](https://epubservercos.yuewen.com/62A1DF/15825992304144506/epubprivate/OEBPS/Images/Figure-P33_57223.jpg?sign=1739423897-QHjnysH8kdRHnzzZUKIqhaCiFM6C1QiP-0-d54727ece2883680ae9c07c7db3e10e0)
对于Kubernetes 1.14.x,使用如下命令加入集群,多了一个--certificate-key参数:
![](https://epubservercos.yuewen.com/62A1DF/15825992304144506/epubprivate/OEBPS/Images/Figure-P33_57224.jpg?sign=1739423897-De6CtXHV0P53r1ierrc6qO21dI3482Ag-0-47677259bbbfd75664f91197484a1fb2)
反馈如下:
![](https://epubservercos.yuewen.com/62A1DF/15825992304144506/epubprivate/OEBPS/Images/Figure-P33_57225.jpg?sign=1739423897-IV1x11T64t73bkI9LvDiWP4mcNujXWG1-0-4ceb738c6cbbf8f17bb98d2660b33fb3)
Master01查看状态:
![](https://epubservercos.yuewen.com/62A1DF/15825992304144506/epubprivate/OEBPS/Images/Figure-P34_57228.jpg?sign=1739423897-RrxSU8exUK04Fvq7sgUvZzqyrAjjlVXG-0-fb2d6caf93f4577711cb8085455756a3)
其他Master节点操作相同,查看Master最终的状态:
![](https://epubservercos.yuewen.com/62A1DF/15825992304144506/epubprivate/OEBPS/Images/Figure-P34_57229.jpg?sign=1739423897-5FgKfJNt4AjtJhw3zs4uFJwxMt4FqqWS-0-a877bfdadd61beab1570d014d215852c)
查看CSR:
![](https://epubservercos.yuewen.com/62A1DF/15825992304144506/epubprivate/OEBPS/Images/Figure-P35_57231.jpg?sign=1739423897-OJhbouTUvObAB6soPKhoVvQzKqSnW64z-0-549f51c411aeb489a06f32cc9002dd46)
在所有Master节点上允许HPA采集数据,修改后自动重启:
![](https://epubservercos.yuewen.com/62A1DF/15825992304144506/epubprivate/OEBPS/Images/Figure-P35_57232.jpg?sign=1739423897-WfYLVRC92kEHXyVoXTmr7dhAlcWvnY1E-0-18204017eeaacaabed4a5760fcbf670b)
1.2.5 Node节点的配置
在1.13.x和1.14.x版本中,Node节点和Master节点加入集群的方式与1.11.x和1.12.x版本相比只是少了--experimental-control-plane参数。
将Node节点加入集群,所有Node节点配置相同:
![](https://epubservercos.yuewen.com/62A1DF/15825992304144506/epubprivate/OEBPS/Images/Figure-P35_57234.jpg?sign=1739423897-CdP0QtLWCFw3H505wDbPeNHds8O7KJQa-0-d9583f79f6ea7192031333f6fe605996)
反馈如下:
![](https://epubservercos.yuewen.com/62A1DF/15825992304144506/epubprivate/OEBPS/Images/Figure-P35_57235.jpg?sign=1739423897-xc7Ur5At8UPn0EW3wJUeBhSr7dakBZU2-0-9adf7d21ca4bfbdec57858fe2e491313)
查看Master节点的状态:
![](https://epubservercos.yuewen.com/62A1DF/15825992304144506/epubprivate/OEBPS/Images/Figure-P35_57236.jpg?sign=1739423897-JTG8jaUdR3ihKQI6ySPCfjJ85Y84H0lT-0-55121755370b3cb99ca28c70fdae9db3)
关于Metrics和Dashboard的部署请参考1.1.8节和1.1.9节。