etcd 数据库简化了RKE 集群执行 etcd 备份和恢复的过程。etcd 数据库的快照被获取并保存到本地的 etcd 节点或 S3 兼容的目标上,即使所有的 etcd 节点都丢失了,因为您的快照保存在云端,您可以用它恢复集群。
Rancher 建议启用,但是您也可以轻松的进行一次性快照。Rancher 允许从恢复数据,或者如果您没有任何快照,您仍然可以恢复 etcd。
从 Rancher v2.4.0 开始,您还可以还原集群的 Kubernetes 版本和集群配置。
在 Rancher UI 中,您可以查看所有可用快照的列表。
在 全局 视图中,导航到要查看快照的集群。
从导航栏中单击 工具 > 快照 查看保存的快照列表。这些快照包括创建它们的时间戳。
如果 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 版本和集群配置,则应使用此选项。
在 全局 视图中,导航到要恢复的集群。
从可用快照的下拉菜单中选择要用于恢复集群的快照。
在恢复类型字段中,选择上述恢复方式之一。
单击保存。
结果: 集群将进入Updating
状态,从快照恢复etcd
节点的过程将启动。当集群回到active
状态时,表示集群已经被恢复了。
先决条件:
- 确保您的 etcd 节点运行状况良好。如果要还原的集群中的 etcd 节点不可用,建议在尝试还原之前从 Rancher 中删除所有 etcd 节点。如果您使用的是通过节点池的集群,那么新的 etcd 节点将自动创建。对于自定义集群,请确保将新的 etcd 节点添加到集群。
- 要从 S3 恢复快照,需要将集群配置为
在 全局 视图中,导航到要恢复的集群。
单击 垂直省略号 (…) > 恢复。
单击 保存。
结果: 集群将进入状态,从快照恢复etcd
节点的过程将启动。当集群回到active
状态时,表示集群已经被恢复了。
如果 etcd 节点组没有保持法定的成员数(quorum),即超过半数以上的 etcd 节点组成员丢失,Kubernetes 集群将报告失败,因为在 Kubernetes 集群中不能执行任何操作,例如部署工作负载。请查看 Kubernetes 集群中的etcd 节点数量的最佳实践。如果您想恢复您的 etcd 节点集,请遵循以下说明:
在剩下的 etcd 节点上,运行以下命令:
此命令输出 etcd 的运行命令,保存此命令供以后使用。
停止上一步启动的 etcd 容器,将其重命名为
etcd-old
。$ docker rename etcd etcd-old
修改步骤 2 中保存的命令
- 如果您最初拥有一个以上的 etcd 节点,那么您需要将
--initial-cluster
更改为只包含剩余的节点。 - 在命令末尾添加
--force-new-cluster
。
- 如果您最初拥有一个以上的 etcd 节点,那么您需要将
运行修改后的命令。
在单个节点启动并运行之后,Rancher 建议向集群添加额外的 etcd 节点。如果您有一个并且希望重用旧节点,则需要在尝试将它们重新添加回集群之前清理节点。