猿创征文|云原生|kubernetes二进制1.18单master扩展为多master(一)

本文摘要:前言#xff1a;在此前已经部署了单master节点#xff0c;但#xff0c;出于集群稳定性的考虑#xff0c;需要将其扩展为多master。原单master部署链接#xff1a;kubernetes二进制安装教程单master_zsk_john的博客-CSDN博客计划是在此基础上扩展......

前言


在此前已经部署了单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


标签