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 不会自动清理:
- CNI 网络配置目录
/etc/cni/net.d需要手动删除- iptables/ipvs 转发规则,需要手动清空
ipvsadm --clear- 用户目录下
.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 完整命令。
五、关键注意事项总结
kubectl drain:排空节点,用于维护下线;删除节点前必须先 drain,避免业务 pod 异常。kubectl delete node:只是从 k8s api 移除节点记录,不会修改 worker 本机任何配置。kubeadm reset:必须登录目标节点本机执行,清理本机 k8s 组件、证书、配置。- reset 不会清理 CNI、iptables、ipvs、用户 kubeconfig,生产环境需要手动清理残留,否则重新加入集群会出现网络异常。
- 重建集群前备份 kubeadm‑config,可以直接复用配置,不用重复写一长串 init 参数。