跳到主要内容
版本:v2.6

备份集群

在 Rancher UI 中,你可以轻松备份和恢复 Rancher 启动的 Kubernetes 集群的 etcd。

Rancher 建议为所有生产集群配置定期 etcd 快照。此外,你还可以轻松创建单次快照。

etcd 数据库的快照会保存在 etcd 节点S3 兼容目标上。配置 S3 的好处是,如果所有 etcd 节点都丢失了,你的快照会保存到远端并能用于恢复集群。

快照工作原理

快照组件

Rancher 创建快照时,快照里包括三个组件:

  • etcd 中的集群数据
  • Kubernetes 版本
  • cluster.yml 形式的集群配置

由于 Kubernetes 版本现在包含在快照中,因此你可以将集群恢复到原本的 Kubernetes 版本。

如果你需要使用快照恢复集群,快照的多个组件允许你选择:

  • 仅恢复 etcd 内容:类似于在 Rancher v2.4.0 之前版本中的使用快照恢复。
  • 恢复 etcd 和 Kubernetes 版本:如果 Kubernetes 升级导致集群失败,并且你没有更改任何集群配置,则应使用此选项。
  • 恢复 etcd、Kubernetes 版本和集群配置:如果你在升级时同时更改了 Kubernetes 版本和集群配置,则应使用此选项。

始终建议在升级之前创建一个快照。

从 etcd 节点生成快照

集群中的每个 etcd 节点都会检查 etcd 集群的健康状况。如果节点报告 etcd 集群是健康的,则会从中创建一个快照,并可选择上传到 S3。

快照存储在 /opt/rke/etcd-snapshots 中。如果该目录在节点上配置为共享挂载,它将被覆盖。由于所有 etcd 节点都会上传快照并保留最后一个,因此 S3 上始终会保留最后一个上传的节点的快照。

在存在多个 etcd 节点的情况下,任何快照都是在集群健康检查通过后创建的,因此这些快照可以认为是 etcd 集群中数据的有效快照。

快照命名规则

快照的名称是自动生成的。在使用 RKE CLI 创建一次性快照时,你可以使用 --name 选项来指定快照的名称。

Rancher 在创建 RKE 集群的快照时,快照名称是基于快照创建类型(手动快照或定期快照)和目标(快照是保存在本地还是上传到 S3)决定的。命名规则如下:

  • m 代表手动
  • r 代表定期
  • l 代表本地
  • s 代表 S3

快照名称示例如下:

  • c-9dmxz-rl-8b2cx
  • c-9dmxz-ml-kr56m
  • c-9dmxz-ms-t6bjb
  • c-9dmxz-rs-8gxc8

从快照恢复的工作原理

在恢复时会发生以下过程:

  1. 如果配置了 S3,则从 S3 检索快照。
  2. 如果快照压缩了,则将快照解压缩。
  3. 集群中的一个 etcd 节点会将该快照文件提供给其他节点。
  4. 其他 etcd 节点会下载快照并验证校验和,以便都能使用相同的快照进行恢复。
  5. 集群已恢复,恢复后的操作将在集群中完成。

配置定期快照

选择创建定期快照的频率以及要保留的快照数量。时间的单位是小时。用户可以使用时间戳快照进行时间点恢复。

默认情况下,Rancher 启动的 Kubernetes 集群会配置为创建定期快照(保存到本地磁盘)。为防止本地磁盘故障,建议使用 S3 目标或复制磁盘上的路径。

在集群配置或编辑集群期间,可以在集群选项的高级部分中找到快照的配置。点击显示高级选项

在集群的高级选项中可以配置以下选项:

选项描述默认值
etcd 快照备份目标选择要保存快照的位置。可以是本地或 S3本地
启用定期 etcd 快照启用/禁用定期快照
定期 etcd 快照的创建周期定期快照之间的间隔(以小时为单位)12 小时
定期 etcd 快照的保留数量要保留的快照数量6

单次快照

除了定期快照之外,你可能还想创建“一次性”快照。例如,在升级集群的 Kubernetes 版本之前,最好备份集群的状态以防止升级失败。

  1. 在左上角,单击 ☰ > 集群管理
  2. 集群页面上,导航到要在其中创建一次性快照的集群。
  3. 单击 ⋮ > 拍摄快照

结果:根据你的快照备份目标创建一次性快照,并将其保存在选定的备份目标中。

快照备份目标

Rancher 支持两种不同的备份目标:

本地备份目标

默认情况下会选择 local 备份目标。此选项的好处是不需要进行外部配置。快照会在本地自动保存到 Rancher 启动的 Kubernetes 集群中 etcd 节点的 /opt/rke/etcd-snapshots 中。所有定期快照都是按照配置的时间间隔创建的。使用 local 备份目标的缺点是,如果发生全面灾难并且丢失 所有 etcd 节点时,则无法恢复集群。

S3 备份目标

S3 备份目标允许用户配置与 S3 兼容的后端来存储快照。此选项的主要好处是,如果集群丢失了所有 etcd 节点,由于快照存储在外部,集群仍然可以恢复。Rancher 推荐使用 S3 备份这类外部目标。但是它的配置要求进行额外的操作,这也应该被考虑在其中。

选项描述必填
S3 存储桶名称将存储备份的 S3 存储桶名称*
S3 区域备份存储桶的 S3 区域
S3 区域端点备份存储桶的 S3 区域端点*
S3 访问密钥有权访问备份存储桶的 S3 访问密钥*
S3 密文密钥有权访问备份存储桶的 S3 密文密钥*
自定义 CA 证书用于访问私有 S3 后端的自定义证书

为 S3 使用自定义 CA 证书

备份快照可以存储在自定义 S3 备份中,例如 minio。如果 S3 后端使用自签名或自定义证书,请使用自定义 CA 证书选项来提供自定义证书,从而连接到 S3 后端。

在 S3 中存储快照的 IAM 支持

除了使用 API 凭证之外,S3 备份目标还支持对 AWS API 使用 IAM 身份验证。IAM 角色会授予应用在对 S3 存储进行 API 调用时的临时权限。要使用 IAM 身份验证,必须满足以下要求:

  • 集群 etcd 节点必须具有实例角色,该角色具有对指定备份存储桶的读/写访问权限。
  • 集群 etcd 节点必须对指定的 S3 端点具有网络访问权限。
  • Rancher Server worker 节点必须具有实例角色,该实例角色具有对指定备份存储桶的读/写访问权限。
  • Rancher Server worker 节点必须对指定的 S3 端点具有网络访问权限。

要授予应用对 S3 的访问权限,请参阅使用 IAM 角色向在 Amazon EC2 实例上运行的应用授予权限的 AWS 文档。

查看可用快照

Rancher UI 中提供了集群所有可用快照的列表:

  1. 在左上角,单击 ☰ > 集群管理
  2. 集群页面中,转到要查看快照的集群并单击其名称。
  3. 单击快照选项卡来查看已保存快照的列表。这些快照包括创建时间的时间戳。

安全时间戳

快照文件带有时间戳,从而简化使用外部工具和脚本处理文件的过程。但在某些与 S3 兼容的后端中,这些时间戳无法使用。

添加了选项 safe_timestamp 以支持兼容的文件名。当此标志设置为 true 时,快照文件名时间戳中的所有特殊字符都将被替换。

此选项不能直接在 UI 中使用,只能通过以 YAML 文件编辑使用。

为使用 Rancher v2.2.0 之前的版本创建的集群启用快照功能

如果你有使用 v2.2.0 之前版本创建的 Rancher 启动的 Kubernetes 集群,升级 Rancher 后,你必须编辑集群保存 它,以启用更新的快照功能。即使你已经在 v2.2.0 之前创建了快照,你也必须执行此步骤,因为旧的快照将无法用于通过 UI 备份和恢复 etcd