前言:
在此前已经部署了单master节点,但,出于集群稳定性的考虑,需要将其扩展为多master。原单master部署链接:kubernetes二进制安装教程单master_zsk_john的博客-CSDN博客
计划是在此基础上扩展,其中的细节还是比较多的,单master和多master的集群规划计划如下:
单master集群规划:
多master集群规划:
规划思路:
增加一台新的服务器,安装master节点所必须的三个组件:kube-apiserver,kube-controller-manager,kube-proxy,etcd由于已经是三个节点了,符合集群的奇数规定,因此,新服务器上不安装etcd,负载均衡软件使用的是nginx和keepalived,负载均衡不能安装在master节点上,因为会端口占用,因此,在两个work节点安装的。docker环境是不管哪个节点都必须安装的,kubelet是节点管理服务,因此,master和work节点都安装。
在实际的生产中,当然负载均衡应该是单独的部署在新服务器上。因服务器不够多,也是实验性质,因此,负载均衡安装在了两个work节点上。
扩展部署master节点步骤:
一,新服务器11上面安装ntp时间服务器,与其他服务器做免密配置,设定主机名,四台服务器的hosts内容如下;
[root@centos1 nginx-offline]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.217.16 master k8s-master 192.168.217.17 slave1 k8s-node1 192.168.217.18 slave2 k8s-node2 192.168.217.11 master2 k8s-master2
hosts文件通过scp命令同步到所有节点。
新服务上安装docker 环境,可简单一点,如果前面是使用二进制安装的docker,在master服务器也就是16服务器上面执行命令:
scp /usr/bin/{docker,dockerd,docker-init,docker-proxy,ctr,runc,containerd,containerd-shim} 192.168.217.11:/usr/bin/ scp /etc/docker/daemon.json master2:/etc/docker scp /usr/lib/systemd/system/docker.service 192.168.217.11:/usr/lib/systemd/system/
在11服务器上执行命令,启动docker服务并查看docker状态是否正常:
systemctl enable docker && systemctl start docker && systemctl status docker
二,在Master2创建etcd证书目录:
mkdir -p /opt/etcd/ssl
在master节点,16服务器上,直接拷贝原有的master节点的现有文件到新服务器上,并做相关修改即可,命令如下:
scp -r /opt/kubernetes root@192.168.217.11:/opt scp -r /opt/cni/ root@192.168.217.11:/opt scp -r /opt/etcd/ssl root@192.168.217.11:/opt/etcd scp /usr/lib/systemd/system/kube* root@192.168.217.11:/usr/lib/systemd/system scp /usr/bin/kubectl root@192.168.217.11:/usr/bin
三,在master2节点,11服务器上,删除kubelet证书和kubeconfig文件:
删除的原因是kubelet服务会在启动的时候新生成这些文件,如果是旧的文件,将不会启动成功。
rm -f /opt/kubernetes/cfg/kubelet.kubeconfig rm -f /opt/kubernetes/ssl/kubelet*
四,仍然在master2节点, 11服务器上,修改配置文件(是三个配置文件,不要遗漏了哦):
修改apiserver、kubelet和kube-proxy配置文件为本地IP: vim /opt/kubernetes/cfg/kube-apiserver.conf ... --bind-address=192.168.217.11 \ --advertise-address=192.168.217.11 \ ... vim /opt/kubernetes/cfg/kubelet.conf --hostname-override=k8s-master2 vi /opt/kubernetes/cfg/kube-proxy-config.yml hostnameOverride: k8s-master2
五,在11服务器上启动相关服务:
systemctl daemon-reload systemctl start kube-apiserver systemctl start kube-controller-manager systemctl start kube-scheduler systemctl start kubelet systemctl start kube-proxy systemctl enable kube-apiserver systemctl enable kube-controller-manager systemctl enable kube-scheduler systemctl enable kubelet systemctl enable kube-proxy
六,检测是否正常:
kubectl get cs NAME STATUS MESSAGE ERROR scheduler Healthy ok controller-manager Healthy ok etcd-1 Healthy {"health":"true"} etcd-2 Healthy {"health":"true"} etcd-0 Healthy {"health":"true"}
此时应该可以看到新的node节点了:
[root@centos1 nginx-offline]# k get no NAME STATUS ROLES AGE VERSION k8s-master Ready <none> 9d v1.18.3 k8s-master2 Ready <none> 172m v1.18.3 k8s-node1 Ready <none> 8d v1.18.3 k8s-node2 Ready <none> 8d v1.18.3