kubeadm 集群运维:Worker 节点下线删除、整套集群销毁重建指南

K8s Node 节点管理|节点下线、删除、重置、完整集群销毁重建实操

基于 v1.30.2 集群,演示节点维护删除、重置、完整集群销毁与重建流程

一、查看节点信息

bash 复制代码
#查看所有节点简要状态
kubectl get nodes

#查看单个节点详细信息,事件、污点、资源、条件
kubectl describe node worker31.laoma.cloud

二、删除单个 worker 节点完整流程

1. 节点排空(维护模式,驱逐 Pod)

--ignore‑daemonsets忽略 daemonset 守护进程集 pod,daemonset 不会被驱逐

bash 复制代码
kubectl drain worker31.laoma.cloud --ignore-daemonsets

执行完成节点会变成Ready,SchedulingDisabled,不再调度新 pod。

2. master 端删除 node 对象

bash 复制代码
kubectl delete node worker31.laoma.cloud

3. 登录被删除的 worker 节点执行重置

⚠️这条命令在 worker 本机运行,不是 master

bash 复制代码
kubeadm reset -f

kubeadm reset 不会自动清理:

  1. CNI 网络配置目录 /etc/cni/net.d 需要手动删除
  2. iptables/ipvs 转发规则,需要手动清空 ipvsadm --clear
  3. 用户目录下.kube/config文件需要手动删除

清理残留(可选)

bash 复制代码
rm -rf /etc/cni/net.d
ipvsadm --clear
rm -rf ~/.kube

三、销毁整个集群完整步骤

步骤 1:排空并删除全部 worker 节点(master 执行)

bash 复制代码
kubectl drain worker31.laoma.cloud --ignore-daemonsets --force
kubectl drain worker32.laoma.cloud --ignore-daemonsets --force

kubectl delete node worker31.laoma.cloud worker32.laoma.cloud

步骤 2:每个 worker 节点本机重置

bash 复制代码
# worker31执行
kubeadm reset -f
# worker32执行
kubeadm reset -f

步骤 3:处理 master 控制平面节点

备份集群配置

bash 复制代码
kubectl get cm kubeadm-config -n kube-system -o yaml > kubeadm.yml

编辑 kubeadm.yml,保留 ClusterConfiguration,清理无关字段,用于后续重建。

master 节点删除 node 对象,执行重置

bash 复制代码
kubectl delete node master30.laoma.cloud
kubeadm reset -f
rm -fr .kube/

四、集群重建

方式 1:使用备份的 kubeadm 配置文件初始化

bash 复制代码
kubeadm init --config kubeadm.yml

方式 2:直接使用完整命令初始化

bash 复制代码
kubeadm init --kubernetes-version=v1.30.2 --pod-network-cidr=10.224.0.0/16 --image-repository hub.laoma.cloud/kubernetes

配置 kubectl

bash 复制代码
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

部署 calico 网络

bash 复制代码
kubectl apply -f calico.yaml

worker 重新加入集群

bash 复制代码
kubeadm join 10.1.8.30:6443 --token xxx --discovery-token-ca-cert-hash sha256:xxxxxx

补充:token 丢失,master 执行 kubeadm token create --print‑join‑command 获取 join 完整命令。

五、关键注意事项总结

  1. kubectl drain:排空节点,用于维护下线;删除节点前必须先 drain,避免业务 pod 异常。
  2. kubectl delete node:只是从 k8s api 移除节点记录,不会修改 worker 本机任何配置。
  3. kubeadm reset:必须登录目标节点本机执行,清理本机 k8s 组件、证书、配置。
  4. reset 不会清理 CNI、iptables、ipvs、用户 kubeconfig,生产环境需要手动清理残留,否则重新加入集群会出现网络异常。
  5. 重建集群前备份 kubeadm‑config,可以直接复用配置,不用重复写一长串 init 参数。
相关推荐
荒--1 小时前
Ubuntu软件包查询,弹框下载文件
运维·服务器·ubuntu
tachibana21 小时前
Go 语言里的 Context 是什么?
开发语言·后端·golang·go·语言
天桥下的卖艺者1 小时前
R语言使用ggcube包轻松绘制文章中的各类3D图形
开发语言·3d·r语言
‎ദ്ദിᵔ.˛.ᵔ₎2 小时前
Linux:对有关 SIGCHLD 的深层理解
linux·运维·服务器
aichitang20242 小时前
QCU 2.0.0:补齐 Windows、Linux 与 GNOME Wayland
linux·运维·windows·ai·agent·ai编程
Lv_沐曦2 小时前
Linux 上的Web文件管理器-filebrowser
linux·运维·服务器
科技每日热闻2 小时前
电气设备综合维保服务商怎么选?从预防性维护到数字化运维,看懂五个关键能力——企业选择维保合作伙伴,不能只看“坏了能不能修”,更要看能否覆盖资产与系统的长期运营
大数据·运维·人工智能
唐钰小宝B3 小时前
深度解读 JDK 8、JDK 11、JDK 17 和 JDK 21 的区别
java·开发语言·windows
最强小杰3 小时前
Claude Opus 4.8 调用报 529 怎么办?并发限制触发过载——退避策略与降级方案完整指南
运维·网络·python·ai