如果没有映射目录,那么需要执行以下步骤进行备份:
1.2. HA 部署备份
指定 rke 配置文件进行 local 集群备份:
./rke_linux-amd64 etcd snapshot-save --name SNAPSHOT-201903xx.db --config cluster.yml
RKE 会获取每个节点 etcd 的快照,并保存到每个节点的/opt/rke/etcd-snapshots
目录下。
升级完业务集群的证书之后,Rancher 中集群会报 x509 错误,需要执行以下步骤修复。
文件准备:
kubeconfig
: 更新证书后的集群连接配置文件
2.2. 重建 Agent Pod
因为 Agent Pod 绑定了SA
,而 SA 绑定了secrets
,所以当删除cattle-token-xxx
后需重建 Pod,以加载新的secrets
。
执行以下命令批量删除 Agent Pod:
kubectl --kubeconfig=${kubeconfig} -n cattle-system get pod | grep -v 'NAME' | awk '{print $1}' | xargs kubectl --kubeconfig=${kubeconfig} -n cattle-system delete pod
重新生成cattle-token-xxx
之后,取值token
并base64 -d
解密后备用。
2.4. 获取新的 CA 证书
kubeconfig=xxx.yaml
cattle_token=$( kubectl --kubeconfig=${kubeconfig} -n cattle-system get secret | grep 'cattle-token-' | awk '{print $1}' )
在重建 Agent Pod 后,cluster agent 运行起来后会自动获取新cattle-token-xxx
中的ca
和token
并上报给 rancher,并保存在 clusters crd 资源中。
在 local 集群中执行以下命令查看对应集群的 CRD 配置 YAML 文件中serviceAccountToken
和是否有更新。
- 备份 crd clusters 资源
local_kubeconfig=xxx.yaml
Cluster_ID= #浏览器地址栏查看集群ID
kubectl --kubeconfig=${local_kubeconfig} get clusters ${Cluster_ID} -o yaml > ${Cluster_ID}.yaml
修改 crd clusters 资源
serviceAccountToken
字段参数:使用上面步骤中获取的token
替换;字段参数: 使用上面步骤获取的新 CA 证书替换;
业务集群升级证书并按照以上步骤操作后,可以正常进入 Rancher UI,也可以正常的部署应用,但是无法查看日志和执行 web shell 终端。
目前有效的方法只有重启 Rancher server pod。