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

K8s多控制平面HA集群故障恢复咨询:双节点宕机后重启能否恢复可用?

3节点K8s控制平面HA集群故障恢复方案

3节点控制平面HA集群的核心依赖是etcd的法定人数(quorum)——3节点集群需要至少2个节点在线才能正常提供服务。当第二个节点宕机后,仅剩1个节点无法达成quorum,集群会进入只读或完全不可用状态;重启宕机节点后无法恢复,通常是因为etcd数据不一致、网络连通性问题或节点配置损坏,以下是可行的恢复步骤:

一、先确认存活节点的etcd状态

登录仅剩的存活控制平面节点,执行命令查看etcd成员状态:

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 member list

从输出里标记出两个宕机节点的ID,以及存活节点的状态。

二、尝试重启宕机节点并排查基础问题

  1. 启动宕机节点的etcd服务:
    systemctl start etcd
    
  2. 实时查看etcd日志,排查是否有网络连接失败、证书错误或数据损坏的报错:
    journalctl -u etcd -f
    
  3. 先修复节点间的网络连通性:确保所有节点的2379(客户端端口)、2380(peer端口)能互相访问,浮动IP也能正常切换到存活节点。

三、手动重建etcd集群(自动恢复失败时)

如果宕机节点的etcd数据已损坏,无法自动同步,需要将其作为新成员重新加入集群:

  1. 在存活节点上移除故障的etcd成员:
    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 member remove <故障节点ID>
    
    对两个宕机节点分别执行此操作。
  2. 在每个宕机节点上清空旧的etcd数据:
    rm -rf /var/lib/etcd/*
    
  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 member add <节点名称> --peer-urls=https://<节点IP>:2380
    
    复制输出中的ETCD_INITIAL_CLUSTER等环境变量。
  4. 在宕机节点的etcd配置文件(通常是/etc/kubernetes/manifests/etcd.yaml或systemd服务文件)中更新这些环境变量,然后重启etcd服务:
    systemctl restart etcd
    

四、恢复控制平面组件

当etcd集群重新达成quorum(至少2个节点在线)后,检查kube-apiserver等组件状态:

kubectl get componentstatuses

如果组件未正常启动,逐个重启:

systemctl restart kube-apiserver kube-controller-manager kube-scheduler

五、验证集群可用性

执行基础操作确认集群恢复:

kubectl get nodes
kubectl create namespace test-recovery
kubectl delete namespace test-recovery

如果这些命令能正常执行,说明集群已恢复可用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 07:10:15