You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

旧K8s集群重启后无法连接,如何恢复Pod与数据不执行reset?

旧K8s集群停机后恢复实操指南

一、无需kubeadm reset的恢复步骤

1. 修复控制平面连接问题(解决6443拒绝连接)

The connection to the server 123.70.70.70:6443 was refused本质是kube-apiserver未正常运行,按以下顺序排查:

  • 主节点上检查kubelet状态:systemctl status kubelet,若未运行,启动并设置自启:systemctl start kubelet && systemctl enable kubelet
  • 查看控制平面核心容器(kube-apiserver、kube-controller-manager、kube-scheduler、etcd)状态:docker ps -a | grep kube-
    • 若某容器未运行,查看日志定位原因:docker logs <容器ID>,常见问题包括etcd数据损坏、证书过期、配置路径错误
    • 针对etcd问题:先检查数据目录/var/lib/etcd,若数据完好,直接重启etcd容器;若数据损坏,有备份则用etcdctl snapshot restore <备份文件> --data-dir /var/lib/etcd恢复,无备份则需考虑后续reset方案
  • 核对kube-apiserver配置文件/etc/kubernetes/manifests/kube-apiserver.yaml,确认端口、证书路径、etcd地址等参数正确

2. 恢复节点与Pod运行

控制平面恢复正常(kubectl能执行命令)后:

  • 检查节点状态:kubectl get nodes,若worker节点处于NotReady状态,登录节点重启kubelet:systemctl restart kubelet,同时确认kube-proxy、容器运行时(docker/containerd)正常运行
  • 排查Pod状态:kubectl get pods --all-namespaces,对Exited/CrashLoopBackOff状态的Pod,查看日志定位问题:kubectl logs <Pod名称> -n <命名空间>
  • 触发Deployment重建:若Pod未自动重启,执行kubectl rollout restart deployment <Deployment名称> -n <命名空间>

二、必须执行kubeadm reset后的恢复方案

若控制平面彻底损坏无法修复,按以下流程尽量恢复应用:

1. reset前强制备份(关键步骤!)

  • 备份K8s配置目录:cp -r /etc/kubernetes/ /tmp/k8s-config-backup/
  • 备份etcd数据(若etcd还能访问):etcdctl snapshot save /tmp/etcd-snap.db
  • 导出所有K8s资源(能连接kubectl时执行):
    # 导出全量应用资源
    kubectl get all --all-namespaces -o yaml > /tmp/k8s-all-resources.yaml
    # 导出命名空间、ConfigMap、Secret、PVC/PV等核心资源
    kubectl get namespaces,configmaps,secrets,pvc,pv -o yaml > /tmp/k8s-core-resources.yaml
    
    若kubectl无法连接,可尝试从etcd备份提取资源,或查看节点上遗留的应用配置文件

2. 重置并重建集群

  • 主节点执行重置:kubeadm reset
  • 重新初始化主节点:kubeadm init --apiserver-advertise-address=123.70.70.70 --pod-network-cidr=<原集群Pod网段>(原网段可从备份的kubeadm-config.yaml中查找)
  • 安装与原集群一致的Pod网络插件(如flannel、calico),下载对应yaml文件到本地后执行kubectl apply -f <插件yaml文件>
  • 用kubeadm init输出的kubeadm join命令将worker节点重新加入集群

3. 恢复应用资源

  • 先恢复核心资源:kubectl apply -f /tmp/k8s-core-resources.yaml
  • 再恢复应用资源:kubectl apply -f /tmp/k8s-all-resources.yaml
  • 确认存储后端(如NFS、本地存储)正常运行,重新绑定PersistentVolumeClaim
  • 检查私有仓库123.70.70.70:444是否可访问,确保节点能拉取应用镜像

新手稳妥操作提醒

  • 所有操作前务必备份关键数据,避免不可逆损失
  • 优先尝试修复控制平面组件,kubeadm reset是最后选择
  • 日志排查时,重点搜索错误关键词(如certificate expired、etcd server is not ready),可快速定位问题

内容的提问来源于stack exchange,提问作者user19238163

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 11:55:27