07.kubernetes 集群维护-节点重置与重新加入

Kubernetes 生产集群节点重置与重新加入

一、适用范围

需硬件维护/系统升级的节点
发生不可恢复故障的节点(如内核崩溃、磁盘损坏)
Kubernetes 组件异常且无法修复的节点

二、前置准备

1. 集群状态检查

kubectl get nodes -o wide # 确认其他节点状态
kubectl get pods -A -o wide # 查看Pod分布
kubectl get leases -n kube-node-lease # 检查节点租约

2. 关键数据备份

# 备份证书目录
tar -czvf /backup/k8s-pki-$(date +%s).tar.gz /etc/kubernetes/pki

# 备份etcd数据(控制平面节点)
ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 \
  --cacert=/etc/kubernetes/pki/etcd/ca.crt \
  --cert=/etc/kubernetes/pki/etcd/server.crt \
  --key=/etc/kubernetes/pki/etcd/server.key \
  snapshot save /backup/etcd-snapshot-$(date +%s).db

3. 负载迁移准备

标记节点为不可调度

kubectl cordon

驱逐工作负载(保持15分钟优雅终止期)

kubectl drain --ignore-daemonsets --delete-emptydir-data --force --timeout=900s

删除节点

kubectl delete node

三、节点重置操作流程

1. 停止Kubernetes服务

systemctl stop kubelet  docker
或
systemctl stop kubelet  containerd

2. 执行深度清理

kubeadm reset --force \
  --cert-dir=/etc/kubernetes/pki \
  --cri-socket=unix:///var/run/cri-dockerd.sock \
  --cleanup-tmp-dir

# 清理残留网络配置
ipvsadm --clear
iptables -F && iptables -t nat -F && iptables -t mangle -F
rm -rf /var/lib/cni/ /var/lib/kubelet/* /var/lib/etcd/

3. ‌容器运行时清理


### Docker 运行时 ###
docker ps -aq | xargs docker rm -f
docker volume prune -f
docker system prune -a -f

### Containerd 运行时 ###
crictl rm -f $(crictl ps -aq)
crictl rmp -f $(crictl pods -q)

4. 操作系统级清理

Calico插件

rm -rf /etc/cni/net.d/* /var/lib/calico/* /run/calico/*
ip link delete vxlan.calico
ip link delete kube-ipvs0

Flannal插件

ip link delete cni0
ip link delete flannel.1
ip link delete kube-ipvs0
rm -f /etc/cni/net.d/10-flannel.conflist /run/flannel/subnet.env
rm -rf /etc/cni/net.d/*  /var/run/flannel/

四、节点重新加入集群

1. 初始化基础环境

# 安装依赖(以 containerd 为例)
apt-get install -y containerd  kubelet=1.32.3-1.1 kubeadm=1.32.3-1.1 kubectl=1.32.3-1.1

# 配置容器运行时
containerd config default > /etc/containerd/config.toml
systemctl restart containerd

2. ‌加入集群操作

# 获取加入命令(在控制平面节点执行)
kubeadm token create --ttl=30m --print-join-command

# 在新节点执行加入命令(示例)
kubeadm join 192.168.1.100:6443 \
  --token 9a08jv.2gz1k9r4qj7c5s3d \
  --discovery-token-ca-cert-hash sha256:4c0d72d14c2ba4c6c9b7e5a3e8f9b1c4d5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c

3. 验证加入状态

kubectl get nodes -w  # 观察节点状态转为Ready
kubectl describe node <node-name> | grep -i 'kubelet version'  # 验证版本一致性

五、后置配置恢复

‌网络插件修复

# Calico 网络恢复
kubectl delete pod -n calico-system -l k8s-app=calico-node
calicoctl node status  # 验证BGP连接

# Flannel 网络恢复
systemctl restart flanneld

工作负载重新调度

kubectl uncordon <node-name>
kubectl rollout restart deploy -n <namespace>  # 触发Pod重新分布

六、监控与告警验证

节点心跳 kubectl get leases -n kube-node-lease 存在该节点租约记录
资源指标 kubectl top node CPU/MEM使用率正常
网络连通 kubectl exec -it – ping 延迟 < 5ms
存储挂载 kubectl exec -it – df -h 挂载点容量正常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Liao wen xiu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值