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.完畢