1.需求情景:机房网络调整,突然要回收我k8s集群上一台node节点机器的ip,并调予新的ip到这台机器上,所以有了k8s集群节点更换ip一说;同时,k8s集群节点更换ip也相当于k8s集群添加新节点,他们的操作流程是一样的。
2.机器更换ip后发生的现象:
(1)查看节点状态,kubectl get node ,还是原来的节点名称和Ready状态,但事实上它已经不工作了;
(2)查看集群pods,运行在已更换ip node节点的pod已处于Terminating,已无法正常工作
3.修复node节点可用性
(1)生成新的证书,本节点涉及的变更进程有:etcd,flanneld,kubelet,kube-proxy,所以全部证书需要重新生成,执行脚本:sh k8s_ssl_create_only_one.sh
(2)拷贝新的证书到各节点的ssl目录下
(3)修改配置文件,把涉及到变更节点ip的配置文件都要修改:sed -i 's/old_ip/new_ip/g' *
(4)删除变更节点下ssl证书目录的kubelet-client-*文件:rm -rf kubelet-client-*
(5)重新生成cfg下的*.kubeconfig文件,注意environment.sh下的token是否有所改变:sh environment.sh 【只要证书变更,都要执行一下sh environment.sh】
(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.完毕