1.需求情景:机房网络调整,忽然要回收我k8s集群上一台node节点机器的ip,并调予新的ip到这台机器上,因此有了k8s集群节点更换ip一说;同时,k8s集群节点更换ip也至关于k8s集群添加新节点,他们的操做流程是同样的。node
2.机器更换ip后发生的现象:网络
(1)查看节点状态,kubectl get node ,仍是原来的节点名称和Ready状态,但事实上它已经不工做了;app
(2)查看集群pods,运行在已更换ip node节点的pod已处于Terminating,已没法正常工做spa
3.修复node节点可用性rest
(1)生成新的证书,本节点涉及的变动进程有:etcd,flanneld,kubelet,kube-proxy,因此所有证书须要从新生成,执行脚本:sh k8s_ssl_create_only_one.shserver
(2)拷贝新的证书到各节点的ssl目录下blog
(3)修改配置文件,把涉及到变动节点ip的配置文件都要修改:sed -i 's/old_ip/new_ip/g' *token
(4)删除变动节点下ssl证书目录的kubelet-client-*文件:rm -rf kubelet-client-*进程
(5)从新生成cfg下的*.kubeconfig文件,注意environment.sh下的token是否有所改变:sh environment.sh 【只要证书变动,都要执行一下sh environment.sh】ip
(6)重启集群各服务:
sh k8s_master_server_restart.sh restart
sh k8s_node_server_restart.sh restart
(7)master审批node节点加入集群:
kubectl get csr
/usr/local/k8s/kubernetes/bin/kubectl certificate approve XXXXID 【审批加入】
(8)查看节点:kubectl get nodes
可见旧的节点还在记录中
(9)删除弃用node节点:kubectl delete node NODE_NAME
4.完毕