本篇文章将分享一下如何在已有集群添加新节点和删除现有节点
1 新增节点到K8S集群
新增节点可以分为准备节点、配置节点和将其加入集群三步。
1.1 准备新节点
准备一个相同操作系统的主机作为新节点。参考以前部署的文章:部署kubernetes集群(1.28.2版本),跟着操作到到2.2节即可。
需要注意的点:
(1)hosts文件配置 每个节点的hosts保持一致
[root@k8s-master ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.0.100 k8s-master
10.0.0.101 k8s-node1
10.0.0.102 k8s-node2
10.0.0.105 k8s-node3
(2)给新加节点做免密(可选)
ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.0.0.105
1.2 通过 kubeadm 将节点加入集群
默认token有效期为24小时,过了24小时需要重新生成。
获取加入命令:(master上执行)
[root@k8s-master ~]# kubeadm token create --print-join-command
kubeadm join 10.0.0.100:6443 --token naplk8.5r28hqqime7agil9 --discovery-token-ca-cert-hash sha256:7627203f93ab4334f80ebb32ee666298440bef63010160839fa44eb1d9c2d853
运行加入命令:(新增节点上执行)
[root@k8s-node3 ~]# kubeadm join 10.0.0.100:6443 --token naplk8.5r28hqqime7agil9 --discovery-token-ca-cert-hash sha256:7627203f93ab4334f80ebb32ee666298440bef63010160839fa44eb1d9c2d853
1.3 验证节点状态
在 Master 节点上查看节点是否加入成功:
[root@k8s-master ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
k8s-master Ready control-plane 32d v1.28.2
k8s-node1 Ready worker 32d v1.28.2
k8s-node2 Ready worker 32d v1.28.2
k8s-node3 Ready <none> 2m43s v1.28.2
新节点已显示为 Ready 状态,说明新节点已添加成功。
2 从K8S集群中删除节点
2.1 确保节点安全下线
驱逐节点上的 Pod
在删除节点前,先将其标记为不可调度,确保新 Pod 不会调度到该节点:
[root@k8s-master ~]# kubectl cordon k8s-node3
node/k8s-node3 cordoned
逐步迁移 Pod
使用 drain 命令驱逐节点上的 Pod,并迁移到其他节点:
[root@k8s-master ~]# kubectl drain k8s-node3 --ignore-daemonsets --delete-emptydir-data
参数说明:
--ignore-daemonsets:忽略 DaemonSet 管理的 Pod。 --delete-emptydir-data:删除带有 emptyDir 卷的 Pod。
2.2 从集群中移除节点
从 Master 节点中删除节点记录:
[root@k8s-master ~]# kubectl delete node k8s-node3
node "k8s-node3" deleted
再次查看节点情况
[root@k8s-master ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
k8s-master Ready control-plane 32d v1.28.2
k8s-node1 Ready worker 32d v1.28.2
k8s-node2 Ready worker 32d v1.28.2
可以看到node3节点已经被移除
2.3 清理被移除的节点
在要删除的节点上停止 kubelet:
[root@k8s-node3 ~]# systemctl stop kubelet
重置节点:清理该节点上的 Kubernetes 配置:
[root@k8s-node3 ~]# kubeadm reset
清理残余数据:删除 etcd 数据目录和 Kubernetes 配置文件:
[root@k8s-node3 ~]# rm -rf /etc/cni/net.d /var/lib/kubelet /var/lib/etcd
3 注意事项
新增节点时,Master 和节点之间的网络需要畅通,特别是用于控制平面通信的端口(如 6443)。 删除节点时,建议逐步迁移工作负载,避免业务中断。 对于启用了网络插件(如 Calico 或 Flannel)的集群,确保新节点安装了对应的网络配置。
END
往期推荐
1 | |
2 | |
3 |
4 | |
5 | |
6 |