当前位置: 首页 > news >正文

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

相关文章:

  • 【动态规划】矩阵连乘问题 C++(附代码实例和复杂度分析)
  • 3. 轴指令(omron 机器自动化控制器)——>MC_SetOverride
  • react 常用插件
  • axios 请求的底层依赖是什么?
  • 系统思考—啤酒游戏经营决策沙盘模拟
  • 牛客网编程题调试问题(华为研发工程师编程题JavaScript Node调试)
  • C++ - 从零实现Json-Rpc框架-1(JsonCpp Muduo 异步操作)
  • 【Linux】统信操作系统进入单用户如何修改密码
  • SQL 通配符
  • 大白话详细解读React框架的diffing算法
  • Python+selenium,轻松搭建Web自动化测试框架
  • 【Unity Bug 随记】使用Rider debug功能时Unity Reload Domain卡死问题
  • Android 关于compose的一些坑和理解
  • 批量文件分析器:使用Python从PPT和PDF中提取文本
  • 广度优先搜索(BFS) vs 深度优先搜索(DFS):算法对比与 C++ 实现
  • 嵌入式硬件篇---WIFI模块
  • 架构思维:通用系统设计方法论_从复杂度分析到技术实现指南
  • 区跨链密码学
  • Vala编程语言教程-控制结构
  • L2TP实验
  • 上海营销活动策划公司/广州百度seo排名
  • 免费做相册video的网站/seo人才网
  • 政府网站内容建设/微信拓客的最新方法
  • 沧州好的做网站的公司/企业网站优化工具
  • 广州建设网站服务/长沙市云网站建设
  • 云存储做网站/软文广告投放平台