K8S集群新增和删除Node节点(K8s Cluster Adds and Removes Node Nodes)

实战:在已有K8S集群如何新增和删除Node节点

在Kubernetes (K8S) 集群中,Node节点是集群中的工作节点,它们运行着容器的实际实例。管理K8S集群中的Node节点,包括新增和删除节点,是一个常见且重要的操作,可以帮助你根据需求扩展或缩减集群的容量。本篇文章将分享一下如何在已有集群添加新节点和删除现有节点

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)的集群,确保新节点安装了对应的网络配置。

相关推荐
顾默@8 分钟前
双系统Ubuntu18.04升级22.04,安装docker进行openclaw安装
运维·docker·容器
杨充17 分钟前
1.1 数据编码设计原理
linux·运维·网络·底层原理·数据编码
fan_music17 分钟前
Linux I/O
linux
Java小白笔记19 分钟前
Linux 手动部署 Oracle JDK 17 完全指南
java·linux·oracle
蜀道山老天师1 小时前
Docker Compose 多容器编排实战:LNMP、Tomcat 集群、云桌面、Portainer、Zabbix 一键部署
运维·docker·容器·tomcat·zabbix
慵懒的猫mi1 小时前
deepin 25部署x11vnc+xrdp,实现vnc和mstsc双重访问
linux·windows·开源软件·deepin
田里的水稻1 小时前
OE_永久配置网络_linux系统终端命令行ip_setting
人工智能·网络协议·机器人·运维开发
剑神一笑2 小时前
Linux lsof 命令深度解析:从文件描述符到进程追踪
linux·运维·php
见牛羊2 小时前
docker理解
java·docker·容器
LDR0062 小时前
LDR6020:多 Type‑C 端口角色管理与外设上电顺序的智慧核心
c语言·开发语言·云计算