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

RKE2高可用集群多场景故障及恢复失败求助

RKE2高可用集群多场景故障及恢复失败求助

我来帮你梳理下这几个RKE2高可用集群的故障场景,结合实际运维经验给你一些排查和恢复的具体思路:


针对Issue 1的两个故障场景

场景1:单节点重启后脱离集群,重启rke2-server后变成独立新集群

这种情况大概率是节点重启后无法连接到集群的etcd集群或控制平面导致的,你可以按以下步骤排查恢复:

  • 先查看该节点的RKE2启动日志,执行 journalctl -u rke2-server -f,重点关注有没有连接失败、etcd成员验证、证书报错这类信息,这能帮你定位是网络问题还是集群身份匹配问题。
  • 确认节点网络连通性:能不能ping通另外两个master节点的IP,以及负载均衡器的IP?RKE2控制节点必须和LB、其他控制节点保持6443(API端口)、2379/2380(etcd端口)的网络通畅。
  • 如果是etcd成员失联导致的,先在正常运行的master节点上执行 kubectl get etcdmembers -n kube-system,看看故障节点的状态是不是Unavailable。然后按下面的步骤修复:
    1. 在正常节点上执行 rke2-etcd member remove <失效节点的ID>(节点ID可以从上面的etcdmembers查询结果里获取)
    2. 回到故障节点,先停止rke2-server服务:systemctl stop rke2-server
    3. 删除节点本地的RKE2数据目录(注意先备份重要数据,比如证书如果需要保留可以单独复制出来):rm -rf /var/lib/rancher/rke2/
    4. 确保故障节点的/etc/rancher/rke2/config.yaml里配置了正确的集群接入地址(比如LB的6443端口,或者其他正常master节点的9345端口),并且token和集群一致(正常节点的token在/var/lib/rancher/rke2/server/node-token文件里),最后重启服务:systemctl start rke2-server

场景2:两台master节点故障导致etcd和API不可用,集群失联且恢复失败

RKE2的HA集群依赖etcd的仲裁机制,3节点etcd集群至少需要2个节点正常才能维持仲裁。当两台节点挂掉后,剩下的单节点无法形成仲裁,etcd会直接进入不可用状态。你可以尝试以下步骤恢复:

  • 先确认剩余的那个master节点能否启动rke2-server,查看日志 journalctl -u rke2-server -f,如果看到“not enough started members”这类报错,就需要手动调整etcd的仲裁配置。
  • 尝试强制启动单节点etcd集群:
    1. 停止rke2-server服务:systemctl stop rke2-server
    2. 备份etcd数据目录(一定要做,避免数据二次损坏):tar -czf etcd-backup-$(date +%Y%m%d).tar.gz /var/lib/rancher/rke2/server/db/etcd
    3. 执行强制启动命令:rke2-etcd --force-new-cluster --data-dir=/var/lib/rancher/rke2/server/db/etcd
    4. 等etcd启动成功后,再启动rke2-server服务:systemctl start rke2-server
  • 单节点集群恢复后,再把其他故障节点清理本地数据后重新加入集群(步骤参考场景1的节点重新加入流程)。
  • 如果已经出现数据丢失,还可以尝试从RKE2的自动备份恢复:RKE2默认会定期备份etcd,备份文件在/var/lib/rancher/rke2/server/db/snapshots/目录下,用rke2-etcd snapshot restore <备份文件名>命令即可恢复,恢复前记得停止rke2-server服务。

针对Issue 2(修改主机名后的未完成故障)

你提到修改了Linux节点的主机名,这在Kubernetes集群里很容易引发身份匹配问题——RKE2会依赖主机名生成节点证书、etcd成员标识,一旦主机名变更,很可能出现证书验证失败、节点无法注册的情况。你可以先做这些排查:

  • 在正常节点上执行kubectl get nodes,看看集群中注册的故障节点名称是不是和新主机名不符。
  • 查看故障节点的rke2-server/agent日志,有没有“hostname mismatch”或证书相关的报错。
  • 如果是证书不匹配的问题,你可以删除故障节点的本地证书目录(控制节点是/var/lib/rancher/rke2/server/tls,agent节点是/var/lib/rancher/rke2/agent/tls),然后重启服务让RKE2重新生成符合新主机名的证书,同时确保加入集群的参数(server地址、token)正确。

备注:内容来源于stack exchange,提问作者user24266244

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.17 10:19:52