kubeasz K8S测试环境删除多余 node 节点
kubeasz K8S测试环境删除多余 node 节点
背景:公司之前存在3套 test 环境,有 1 套环境部署的 生产环境老系统,目前生产环境已经完成了新老系统切换,不在需要老系统 test 环境,需要进行回收
1 | 查看节点列表
使用kubectl命令来查看当前集群中的节点列表,以确认要删除的节点的名称。
kubectl get nodes
2 | 标记节点为不可调度
将要删除的节点标记为不可调度,这样Kubernetes将不会再将新的Pod调度到该节点上。
kubectl cordon <node-name>
3 | 驱逐Pods
将原本运行在该节点上的Pods调度到其他节点上。这将使得要删除的节点上的Pods有机会在其他节点上运行。
kubectl drain <node-name> --ignore-daemonsets
--ignore-daemonsets选项用于忽略DaemonSet控制器创建的Pods。
4 | 确认Pod已经全部迁移
确保已经没有Pod运行在要删除的节点上。
kubectl get pods -A -o wide | grep <node-name>
5 | 删除节点 移除节点信息
当确认节点上的Pods已经全部迁移后,可以安全地删除节点。
cd /etc/kubeasz/
kubectl get nodes
./ezctl del-node k8s <node-name>
执行上面脚本后,会一并删除集群的etcd中节点的信息
6 | 检查集群状态
确保集群状态正常,且没有影响到运行中的应用程序。