一、需求:

在 Kubernetes 中,使用 kubeadm 的方式 删除和 重新添加节点

二、删除节点

  1. 从集群中删除节点

    首先,需要在主节点上将节点从集群中删除。假设要删除的节点名称为 node-1

    kubectl delete node node-1
    
  2. 在要删除的节点上执行

    你还需要在要删除的节点上执行以下命令,以清理本地的 K8s 配置和状态:

    kubeadm reset
    

    这个命令会删除 K8s 集群的所有配置文件和数据。执行后,还需要删除节点上的 K8s 配置文件和网络插件的配置,例如:

    rm -rf /etc/kubernetes
    rm -rf /var/lib/etcd
    

    以及清理 CNI 网络插件的配置,例如:

    rm -rf /var/lib/cni/
    

三、重新添加节点

  1. 重新初始化节点

    确保节点上的 kubeadm 工具已安装,并且网络插件和其他相关工具也已正确配置。

    然后,使用 kubeadm join 命令重新将节点加入集群。首先,你需要从主节点获取 kubeadm join 命令的令牌。可以通过以下命令生成新的令牌:

    kubeadm token create --print-join-command
    

    这条命令会输出类似以下内容的命令:

    kubeadm join <master-ip>:<master-port> --token <token> --discovery-token-ca-cert-hash sha256:<hash>
    

    在要重新加入的节点上执行输出的 kubeadm join 命令:

    kubeadm join <master-ip>:<master-port> --token <token> --discovery-token-ca-cert-hash sha256:<hash>
    
  2. 验证节点状态

    重新加入节点后,可以在主节点上检查节点状态以确保它成功加入:

    kubectl get nodes
    

    如果节点状态显示为 Ready,则说明节点已经成功加入集群。

注意事项

  • 确保在执行 kubeadm reset 命令时,节点上的所有数据和配置都被清除,以避免潜在的冲突。
  • 在重新加入节点之前,确保集群和节点的网络配置正常。
  • 如果你的集群使用了自定义的网络插件或配置,确保在节点上进行相应的配置。