如果没有映射目录,那么需要执行以下步骤进行备份:

1.2. HA 部署备份

指定 rke 配置文件进行 local 集群备份:

  1. ./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:

  1. 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之后,取值tokenbase64 -d解密后备用。

2.4. 获取新的 CA 证书

  1. kubeconfig=xxx.yaml
  2. cattle_token=$( kubectl --kubeconfig=${kubeconfig} -n cattle-system get secret | grep 'cattle-token-' | awk '{print $1}' )

在重建 Agent Pod 后,cluster agent 运行起来后会自动获取新cattle-token-xxx中的catoken并上报给 rancher,并保存在 clusters crd 资源中。

在 local 集群中执行以下命令查看对应集群的 CRD 配置 YAML 文件中serviceAccountToken和是否有更新。

  • 备份 crd clusters 资源
  1. local_kubeconfig=xxx.yaml
  2. Cluster_ID= #浏览器地址栏查看集群ID
  3. 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。