本文来自Rancher Labs
作者介绍
王海龙,Rancher中国社区技术经理,负责Rancher中国技术社区的维护和运营。拥有6年的云计算领域经验,经历了OpenStack到Kubernetes的技术变革,无论底层操作系统Linux,还是虚拟化KVM或是Docker容器技术都有丰富的运维和实践经验。
在实际使用Rancher过程中,偶尔会因为误操作删除了System Workload、节点或集群, 导致集群状态异常而无法访问。如果用户不了解恢复方法,通常会重新添加节或重新搭建集群。
本文将根据以下几个场景来介绍如何恢复由于误操作引起的Rancher集群故障:
-
如何恢复System Project Workload
-
如何恢复从Rancher UI或kubectl误删的节点
-
如何恢复执行过清理节点脚本的节点
-
如何恢复被删除的
custom
集群
重要说明
-
本文档基于Rancher 2.4.x测试,其他版本操作可能会略有不同
-
本文介绍的场景均是针对
custom
集群 -
如果您在此过程中遇到问题,则应该熟悉Rancher架构/故障排除
-
您应该熟悉单节点安装和高可用安装之间的体系结构差异
如何恢复System Project Workload
System Project中包含了一些保证该集群能够正常运行的一些workload,如果删除某些workload可能会对该集功能群造成影响。
通常情况下,通过RKE创建的custom
集群应包括以下workload:
下面我们来分别介绍如果误删了这些workload之后应如何恢复。
恢复cattle-cluster-agent
和cattle-node-agent
模拟故障
从System Project下删除cattle-cluster-agent
和cattle-node-agent
生成Kubeconfig和集群yaml
1.在Rancher UI上创建API token(用户-> API & Keys)并保存Bearer Token
2.选择集群后,在Rancher UI(格式为c-xxxxx)中找到其clusterid,并在地址栏中找到它。
3.根据步骤1-2获取的变量替换:RANCHERURL
、CLUSTERID
、TOKEN
(主机需要安装curl和jq)
# Rancher URL
RANCHERURL="https://192.168.99.201"
# Cluster ID
CLUSTERID="c-v6mtr"
# Token
TOKEN="token-klt5n:2smg6n5cb5vstn7qm797l9fbc7s9gljxjw528r7c5c4mwf2g7kr6nm"
# Valid certificates
curl -s -H "Authorization: Bearer ${TOKEN}" "${RANCHERURL}/v3/clusterregistrationtokens?clusterId=${CLUSTERID}" | jq -r '.data[] | select(.name != "system") | .command'
# Self signed certificates
curl -s -k -H "Authorization: Bearer ${TOKEN}" "${RANCHERURL}/v3/clusterregistrationtokens?clusterId=${CLUSTERID}" | jq -r '