
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组件:

所有节点启动Docker:
systemctl enable --now docker
配置Kubelet:

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的配置文件如下:

和上一节不同的是直接开启了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值,在节点加入集群时使用:

对于Kubernetes 1.14.x版本,初始化完成以后生成的Token如下:

其中,Master节点使用--experimental-control-plane和--certificate-key参数即可完成初始化,并以Master的角色加入集群:

所有Master节点配置环境变量:
cat <<EOF >> /root/.bashrc export KUBECONFIG=/etc/kubernetes/admin.conf EOF source /root/.bashrc
查看节点状态:

查看Pod状态:

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节点:

Master02提前下载镜像:
kubeadm config images pull --config /root/kubeadm-config.yaml
Master02加入集群,与Node节点相差的参数就是--experimental-control-plane:

对于Kubernetes 1.14.x,使用如下命令加入集群,多了一个--certificate-key参数:

反馈如下:

Master01查看状态:

其他Master节点操作相同,查看Master最终的状态:

查看CSR:

在所有Master节点上允许HPA采集数据,修改后自动重启:

1.2.5 Node节点的配置
在1.13.x和1.14.x版本中,Node节点和Master节点加入集群的方式与1.11.x和1.12.x版本相比只是少了--experimental-control-plane参数。
将Node节点加入集群,所有Node节点配置相同:

反馈如下:

查看Master节点的状态:

关于Metrics和Dashboard的部署请参考1.1.8节和1.1.9节。