K8S集群新增和删除Node节点


1 新增节点到K8S集群

新增节点可以分为准备节点、配置节点和将其加入集群三步。

1.1 准备新节点

准备一个相同操作系统的主机作为新节点。需要安装相同版本的kubeadm。

安装步骤参考Ubuntu部署 Kubernetes1.23

需要注意的点:

(1)hosts文件配置 每个节点的hosts保持一致

[root@master~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.8.128   master
192.168.8.130   node1
192.168.8.131   node2
192.168.8.132   node3

(2)给新加节点做免密(可选)

ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.8.132

1.2 通过 kubeadm 将节点加入集群

默认token有效期为24小时,过了24小时需要重新生成。

获取加入命令:(master上执行)

[root@master~]# kubeadm token create --print-join-command
kubeadm join 192.168.8.128:6443 --token naplk8.5r28hqqime7agil9 --discovery-token-ca-cert-hash sha256:7627203f93ab4334f80ebb32ee666298440bef63010160839fa44eb1d9c2d853

运行加入命令:(新增节点上执行)

[root@node3 ~]# kubeadm join 192.168.8.128:6443 --token naplk8.5r28hqqime7agil9 --discovery-token-ca-cert-hash sha256:7627203f93ab4334f80ebb32ee666298440bef63010160839fa44eb1d9c2d853

1.3 验证节点状态

在 Master 节点上查看节点是否加入成功:

[root@master~]# kubectl get node
NAME     STATUS   ROLES                  AGE     VERSION
master   Ready    control-plane,master   25d     v1.23.0
node1    Ready    <none>                 25d     v1.23.0
node2    Ready    <none>                 25d     v1.23.0
node3    Ready    <none>                 8m35s   v1.23.0

新节点已显示为 Ready 状态,说明新节点已添加成功。

2 从K8S集群中删除节点

2.1 确保节点安全下线

驱逐节点上的 Pod

在删除节点前,先将其标记为不可调度,确保新 Pod 不会调度到该节点:

[root@master~]# kubectl cordon node3
node/node3 cordoned

逐步迁移 Pod

使用 drain 命令驱逐节点上的 Pod,并迁移到其他节点:

[root@master~]# kubectl drain node3 --ignore-daemonsets --delete-emptydir-data

参数说明:

  • --ignore-daemonsets:忽略 DaemonSet 管理的 Pod。
  • --delete-emptydir-data:删除带有 emptyDir 卷的 Pod。

2.2 从集群中移除节点

从 Master 节点中删除节点记录:

[root@master~]# kubectl delete node node3
node "node3" deleted

再次查看节点情况

[root@master~]# kubectl get node
NAME         STATUS   ROLES           AGE   VERSION
master       Ready    control-plane   32d   v.1.23.0
node1        Ready    worker          32d   v.1.23.0
node2        Ready    worker          32d   v.1.23.0

可以看到node3节点已经被移除

2.3 清理被移除的节点

在要删除的节点上停止 kubelet:

[root@node3 ~]# systemctl stop kubelet

重置节点:清理该节点上的 Kubernetes 配置:

[root@node3 ~]# kubeadm reset

清理残余数据:删除 etcd 数据目录和 Kubernetes 配置文件:

[root@node3 ~]# rm -rf /etc/cni/net.d /var/lib/kubelet /var/lib/etcd

3 注意事项

  • 新增节点时,Master 和节点之间的网络需要畅通,特别是用于控制平面通信的端口(如 6443)。
  • 删除节点时,建议逐步迁移工作负载,避免业务中断。
  • 对于启用了网络插件(如 Calico 或 Flannel)的集群,确保新节点安装了对应的网络配置。