从 v2.2.0 开始可用

etcd 数据库简化了RKE 集群执行 etcd 备份和恢复的过程。etcd 数据库的快照被获取并保存到本地的 etcd 节点或 S3 兼容的目标上,即使所有的 etcd 节点都丢失了,因为您的快照保存在云端,您可以用它恢复集群。

Rancher 建议启用对 etcd 进行定期快照的功能,但是您也可以轻松的进行一次性快照。Rancher 允许从已保存的快照恢复数据,或者如果您没有任何快照,您仍然可以恢复 etcd

从 Rancher v2.4.0 开始,您还可以还原集群的 Kubernetes 版本和集群配置。

查看可用的快照

在 Rancher UI 中,您可以查看所有可用快照的列表。

  1. 全局 视图中,导航到要查看快照的集群。

  2. 从导航栏中单击 工具 > 快照 查看保存的快照列表。这些快照包括创建它们的时间戳。

从快照中恢复集群

如果 Kubernetes 集群已损坏,您可以从快照中还原该集群。

在 Rancher v2.4.0 中恢复的功能有所变化。

import Tabs from ‘@theme/Tabs’; import TabItem from ‘@theme/TabItem’;

快照由 etcd 中的集群数据、Kubernetes 版本和cluster.yml形式的集群配置组成。您可以使用快照中的这些组件。选择如何从快照中恢复集群:

  • 仅恢复 etcd 中的集群数据: 此还原类似于在 v2.4.0 之前的 Rancher 中还原快照。
  • 恢复 etcd 和 Kubernetes 版本: 如果由于升级 Kubernetes 版本导致集群出现故障,并且您尚未进行任何集群配置更改,则应使用此选项。
  • 恢复 etcd,Kubernetes 版本和集群配置: 如果在升级时同时更改了 Kubernetes 版本和集群配置,则应使用此选项。

回滚到 Kubernetes 之前的版本时,升级策略选项是将不会生效。在将工作节点恢复到较早的 Kubernetes 版本之前,不会对其进行暂停(Cordon)驱散(Drain),这是为了尽快将运行状况不佳的集群恢复到健康状态。

先决条件: 要从 S3 恢复快照,需要将集群配置为在 S3 上进行定期快照

  1. 全局 视图中,导航到要恢复的集群。

  2. 单击 垂直省略号 (…)> 恢复

  3. 从可用快照的下拉菜单中选择要用于恢复集群的快照。

  4. 恢复类型字段中,选择上述恢复方式之一。

  5. 单击保存

结果: 集群将进入Updating状态,从快照恢复etcd节点的过程将启动。当集群回到active状态时,表示集群已经被恢复了。

先决条件:

  • 确保您的 etcd 节点运行状况良好。如果要还原的集群中的 etcd 节点不可用,建议在尝试还原之前从 Rancher 中删除所有 etcd 节点。如果您使用的是通过节点池在基础设施中创建节点的集群,那么新的 etcd 节点将自动创建。对于自定义集群,请确保将新的 etcd 节点添加到集群。
  • 要从 S3 恢复快照,需要将集群配置为在 S3 上进行定期快照
  1. 全局 视图中,导航到要恢复的集群。

  2. 单击 垂直省略号 (…) > 恢复

  3. 从可用快照的下拉菜单中选择要用于恢复集群的快照。

  4. 单击 保存

结果: 集群将进入Updating状态,从快照恢复etcd节点的过程将启动。当集群回到active状态时,表示集群已经被恢复了。

在没有快照的情况下恢复 etcd

如果 etcd 节点组没有保持法定的成员数(quorum),即超过半数以上的 etcd 节点组成员丢失,Kubernetes 集群将报告失败,因为在 Kubernetes 集群中不能执行任何操作,例如部署工作负载。请查看 Kubernetes 集群中的etcd 节点数量的最佳实践。如果您想恢复您的 etcd 节点集,请遵循以下说明:

  1. 通过删除所有其他 etcd 节点,在集群中只保留一个 etcd 节点。

  2. 在剩下的 etcd 节点上,运行以下命令:

    1. $ docker run --rm -v /var/run/docker.sock:/var/run/docker.sock assaflavie/runlike etcd

    此命令输出 etcd 的运行命令,保存此命令供以后使用。

  3. 停止上一步启动的 etcd 容器,将其重命名为 etcd-old

    1. $ docker stop etcd
    2. $ docker rename etcd etcd-old
  4. 修改步骤 2 中保存的命令

    • 如果您最初拥有一个以上的 etcd 节点,那么您需要将 --initial-cluster 更改为只包含剩余的节点。
    • 在命令末尾添加--force-new-cluster
  5. 运行修改后的命令。

  6. 在单个节点启动并运行之后,Rancher 建议向集群添加额外的 etcd 节点。如果您有一个自定义集群并且希望重用旧节点,则需要在尝试将它们重新添加回集群之前清理节点

在 Rancher v2.2.0 之前的版本中创建的集群里启用定期快照

如果您有任何在 v2.2.0 之前创建的 Rancher 启动的 Kubernetes 集群(RKE 集群),在升级 Rancher 之后,您必须编辑集群并且保存它,以启用更新的快照功能。即使您已经在 v2.2.0 之前创建了快照,也必须执行此步骤,因为在通过 UI 还原集群时,无法使用较早版本中创建的快照。