k8s集群节点更换ip 或者 k8s集群添加新节点

时间:2024-07-15 12:36:14

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

     k8s集群节点更换ip 或者 k8s集群添加新节点

  (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

    k8s集群节点更换ip 或者 k8s集群添加新节点

    /usr/local/k8s/kubernetes/bin/kubectl certificate approve XXXXID  【审批加入】

  (8)查看节点:kubectl get nodes

    k8s集群节点更换ip 或者 k8s集群添加新节点

    可见旧的节点还在记录中

  (9)删除弃用node节点:kubectl delete node NODE_NAME

    k8s集群节点更换ip 或者 k8s集群添加新节点

4.完毕