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

Rancher 建议启用,但是您也可以轻松的进行一次性快照。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 版本和形式的集群配置组成。您可以使用快照中的这些组件。选择如何从快照中恢复集群:

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

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

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

  4. 单击保存

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

先决条件:

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

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

  3. 单击 保存

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

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

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

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

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

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

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

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