![再也不踩坑的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=1738993977-gKZQ0bXPYZ2HuqNGYBm5CLgnyfyTiYWP-0-ea7b47bd22de4fc0368c0f55b26c1a6b)
所有节点启动Docker:
systemctl enable --now docker
配置Kubelet:
![](https://epubservercos.yuewen.com/62A1DF/15825992304144506/epubprivate/OEBPS/Images/Figure-P30_57205.jpg?sign=1738993977-9s17IIt8K0bgjaUK65oijazhOIH6GmMn-0-632c8f4094261caa38bd9b8932772c3d)
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=1738993977-jbsvBUDhEmJtEDe2zZHNIRwdoYKpMYtP-0-d4ad35aedcacba80342d556963b5b35c)
和上一节不同的是直接开启了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=1738993977-bhaNjm4OtIE8njfgWKzOu6XPZ5nQ4uVm-0-88a77a34c50cd2ee7142a1424692f745)
对于Kubernetes 1.14.x版本,初始化完成以后生成的Token如下:
![](https://epubservercos.yuewen.com/62A1DF/15825992304144506/epubprivate/OEBPS/Images/Figure-P31_57215.jpg?sign=1738993977-ucR5PhROFsUengnStQuNteBZ1LnjKkQf-0-a1c7ea206d6298504a171aeef2ba025f)
其中,Master节点使用--experimental-control-plane和--certificate-key参数即可完成初始化,并以Master的角色加入集群:
![](https://epubservercos.yuewen.com/62A1DF/15825992304144506/epubprivate/OEBPS/Images/Figure-P32_57216.jpg?sign=1738993977-Co6Y1NQxZl8bET2zr2afRdOHKlcNAYo4-0-09ee56593891425f4b00702a33695ea7)
所有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=1738993977-KQdIXuRgZcTKavhaLAahglnxBMsCcbLJ-0-ca25349f5361f6a20495a08bf0839d90)
查看Pod状态:
![](https://epubservercos.yuewen.com/62A1DF/15825992304144506/epubprivate/OEBPS/Images/Figure-P32_57219.jpg?sign=1738993977-TTD43uhC0MFa2zUey2pYCbuYig6aPLgp-0-d7f91a1c44e27280c3052c30826f743e)
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=1738993977-KxgD6gyy8P7trBcgLY7u9dVWP0QXfru0-0-1c53a5bf1ea6842ab3a61bdfe405a191)
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=1738993977-9rNGNJlhYGfsRXSF7b3DPUjJlp1tDVGb-0-4ff9ecb7394f865d34ba3bfcffaa0a8e)
对于Kubernetes 1.14.x,使用如下命令加入集群,多了一个--certificate-key参数:
![](https://epubservercos.yuewen.com/62A1DF/15825992304144506/epubprivate/OEBPS/Images/Figure-P33_57224.jpg?sign=1738993977-y8acXQpoAx1fR7JPKBtJw3C8q5u8CIxv-0-f6c525d29189dd7db0fe0c5b003f0bb7)
反馈如下:
![](https://epubservercos.yuewen.com/62A1DF/15825992304144506/epubprivate/OEBPS/Images/Figure-P33_57225.jpg?sign=1738993977-ywhBibuLdp8Iz4WBaexy8fxjuhMfHqxb-0-e0537991af14aaf7070031456a960277)
Master01查看状态:
![](https://epubservercos.yuewen.com/62A1DF/15825992304144506/epubprivate/OEBPS/Images/Figure-P34_57228.jpg?sign=1738993977-HhE0S1ViRzh0t0BjJBslnkhJvZ5rLaKF-0-98120f4023ba5cae53f36468ba303c61)
其他Master节点操作相同,查看Master最终的状态:
![](https://epubservercos.yuewen.com/62A1DF/15825992304144506/epubprivate/OEBPS/Images/Figure-P34_57229.jpg?sign=1738993977-DO65qh0EEqDDeUw0ko7Q7bDBYvkRYe8N-0-82cd0bf44d38672dc65bab0aa7304057)
查看CSR:
![](https://epubservercos.yuewen.com/62A1DF/15825992304144506/epubprivate/OEBPS/Images/Figure-P35_57231.jpg?sign=1738993977-SqpJIR86LEtVu9jtsRkWYOdLH8GvEYyw-0-a179fd4df3ddf5ab8931ca617cefa22f)
在所有Master节点上允许HPA采集数据,修改后自动重启:
![](https://epubservercos.yuewen.com/62A1DF/15825992304144506/epubprivate/OEBPS/Images/Figure-P35_57232.jpg?sign=1738993977-bbvVtFZwVi4FF6xdVNMPd2XGb1LvMGs8-0-69ee2054f4d67384c98b66de907d585f)
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=1738993977-bVfvqEQ1nXd2HupHOBCB6IXASHtP7jTj-0-11e71527160953a89ae9f23d693cb167)
反馈如下:
![](https://epubservercos.yuewen.com/62A1DF/15825992304144506/epubprivate/OEBPS/Images/Figure-P35_57235.jpg?sign=1738993977-GdgKvXjNQmIeo1ZiebztzDkzHKtUbxxW-0-fe29154a0cf14385289c604196b481fd)
查看Master节点的状态:
![](https://epubservercos.yuewen.com/62A1DF/15825992304144506/epubprivate/OEBPS/Images/Figure-P35_57236.jpg?sign=1738993977-BaeF8BAZlwqK73Gitg8pOr2uPWdbWTzP-0-5732c4b4cf2bc424596bad9ccc23c5d6)
关于Metrics和Dashboard的部署请参考1.1.8节和1.1.9节。