title: 创建一次性快照 description: v0.2.0 或以上的版本和 v0.2.0 之前的版本创建一次性快照的方式不同,请阅读下文对应的章节获取创建一次性快照的信息。 keywords:

  • rancher
  • rancher中文
  • rancher中文文档
  • rancher官网
  • rancher文档
  • Rancher
  • rancher 中文
  • rancher 中文文档
  • rancher cn
  • RKE
  • 备份和恢复
  • 创建一次性快照

概述

v0.2.0 或以上的版本和 v0.2.0 之前的版本创建一次性快照的方式不同,请阅读下文对应的章节获取创建一次性快照的信息。

RKE v0.2.0 或以上的版本

打开命令行工具,输入rke etcd snapshot-save命令,运行后即可保存 cluster config 文件内每个 etcd 节点的快照。RKE 会将节点快照保存在/opt/rke/etcd-snapshots路径下。运行上述命令时,RKE 会创建一个用于备份快照的容器。完成备份后,RKE 会删除该容器。您可以将一次性快照适配 S3 的后端主机。具体过程如下:

  1. 首先,运行以下命令,在本地创建一个一次性快照:

    1. rke etcd snapshot-save --config cluster.yml --name snapshot-name

    结果: 创建了一个快照,保存在 /opt/rke/etcd-snapshots路径下。

  2. 然后,运行以下命令,将这个快照保存到 S3。

    1. rke etcd snapshot-save \
    2. --config cluster.yml \
    3. --name snapshot-name \
    4. --s3 \
    5. --access-key S3_ACCESS_KEY \
    6. --secret-key S3_SECRET_KEY \
    7. --bucket-name s3-bucket-name \
    8. --folder s3-folder-name \ # Optional - Available as of v0.3.0
    9. --s3-endpoint s3.amazonaws.com

    结果: 保存在 /opt/rke/etcd-snapshots路径下的快照已经上传至 S3。

rke etcd snapshot-save 命令的可配置参数

创建一次性快照时,可配置的参数如下表所示:

参数 描述 S3 相关参数
--name 指定快照名称
--config 指定 YAML 文件名称,如果不指定,则会使用cluster.yml文件
--s3 启用 S3 存储服务备份节点快照 *
--s3-endpoint 指定 S3 端点 URL 地址,默认值为 s3.amazonaws.com *
--s3-endpoint-ca 指定 CA 证书文件的路径连接自定义 S3 端点(可选), RKE v0.2.5 及以上版本可用 *
--access-key S3 的 accessKey *
--secret-key S3 的 secretKey *
--bucket-name S3 的 桶名称(bucket name) *
--folder 指定 S3 存储节点快照的文件夹(可选), RKE v0.3.0 及以上版本可用 *
--region S3 的 桶所在的区域(可选) *
--ssh-agent-auth 使用 SSH_AUTH_SOCK 定义的 SSH Agent Auth
--ignore-docker-version 禁用 Docker 版本检查

说明:

  • 如果 AWS EC2 示例配置了 IAM 认证,则--access-key--secret-key不是必填项。
  • 表格第三列标记为”* “的参数,是 S3 相关的参数。

使用自定义 CA 证书认证 S3

v0.2.0 或以上的版本可用

备份快照可以被存储在自定义S3备份机器,如minio上。如果 S3 Backend 使用的是自签名证书或自定义证书,需要使用--s3-endpoint-ca将自定义证书验证并连接到 S3 Backend。

使用 IAM 认证 S3 并储存节点快照

RKE 支持使用 IAM 角色权限管理进行 S3 认证。集群的 etcd 节点必须分配有 IAM 角色,并且这个角色需要有读写 S3 存储节点快照的桶的权限。节点必须有权限访问 S3 端点。

以下是IAM 策略示例代码,给节点开放了在 S3 上读取和写入备份快照的权限。

  1. {
  2. "Version": "2012-10-17",
  3. "Statement": [
  4. {
  5. "Sid": "ListObjectsInBucket",
  6. "Effect": "Allow",
  7. "Action": ["s3:ListBucket"],
  8. "Resource": ["arn:aws:s3:::bucket-name"]
  9. },
  10. {
  11. "Sid": "AllObjectActions",
  12. "Effect": "Allow",
  13. "Action": "s3:*Object",
  14. "Resource": ["arn:aws:s3:::bucket-name/*"]
  15. }
  16. ]
  17. }

关于如何为应用开放访问 S3 的权限,请查看 AWS 的文档使用 IAM 角色向在 Amazon EC2 实例上运行的应用程序授予权限

RKE v0.2.0 之前的版本

打开命令行工具,输入rke etcd snapshot-save命令,运行后即可保存 cluster config 文件内每个 etcd 节点的快照。

运行上述命令时,RKE 会创建一个用于备份快照的容器。完成备份后,RKE 会删除该容器。

RKE 会为证书生成备份,在同一路径下将证书保存为pki.bundle.tar.gz文件。恢复集群时,会用到快照和 pki 文件。

运行以下命令,在本地创建一次性快照:

  1. rke etcd snapshot-save --config cluster.yml --name snapshot-name

结果: RKE 会将节点快照保存在/opt/rke/etcd-snapshots路径下。

rke etcd snapshot-save 命令的可参数

参数 描述
--name 指定快照名称
--config 指定 YAML 文件名称,如果不指定,则会使用cluster.yml文件 [$RKE_CONFIG]
--ssh-agent-auth 使用 SSH_AUTH_SOCK 定义的 SSH Agent Auth
--ignore-docker-version 禁用 Docker 版本检查