本文永久链接: https://www.xtplayer.cn/rancher/backup-restore/rancher-rke-cluster-backups/

如果 rancher 是 HA 架构部署,在 HA 架构下,rancher 的数据是保存在 rke local K8S 集群中。所以在 rancher HA 架构下只需要通过 RKE 备份 local 集群数据,即可同时备份 rancher 的数据。

重要提示 此方法直接使用 RKE 进行集群备份,它适用于 RKE 创建并导入的业务集群或者 RKE 部署的 local 集群

本节介绍在 Rancher HA 下如何备份数据。

  • Rancher Kubernetes Engine v0.1.7 或更高版本

    RKE v0.1.7 以及更高版本才支持 etcd 快照功能

  • rancher-cluster.yml

    需要使用到安装 Rancher 的 RKE 配置文件 rancher-cluster.yml,将此文件需放在与 RKE 二进制文件同级目录中

创建 ETCD 数据快照

有两种方案创建 etcd 快照: 定时自动创建快照和或手动创建快照,每种方式对应特定的场景。

  • 方案 A: 定时自动创建快照

    在 Rancher HA 安装后,我们建议配置 RKE 以定时(默认 5 分钟)自动创建快照,以便始终拥有可用的安全恢复点。

  • 方案 B: 手动创建快照

    我们建议在升级或恢复其他快照等事件之前创建一次性快照。

方案 A: 定时自动创建快照

对于通过 RKE 高可用安装的 Rancher,我们建议开启定时自动创建快照,以便始终拥有安全的恢复点。

定时自动创建快照服务是 RKE 附带的服务,默认没有开启。可以通过在 rancher-cluster.yml 中添加配置来启用 etcd-snapshot(定时自动创建快照)服务。

启用定时自动创建快照:

  1. 编辑 rancher-cluster.yml 配置文件;

  2. rancher-cluster.yml 配置文件中添加以下代码:

    rke 版本小于 0.2.x 或 rancher 版本小于 v2.2.0 时使用

    services:
    etcd:
    snapshot: true # 设置 true 启用 ETCD 自动备份,设置 false 禁用;
    creation: 6h0s # 快照创建间隔时间,不加此参数,默认 5 分钟;
    retention: 24h # 快照有效期,此时间后快照将被删除;

    rke 版本大于等于 0.2.x 或 rancher 版本大于等于 v2.2.0 时使用

    services:
    etcd:
    backup_config:
    enabled: true # 设置 true 启用 ETCD 自动备份,设置 false 禁用;
    interval_hours: 12 # 快照创建间隔时间,不加此参数,默认 5 分钟;
    retention: 6 # etcd 备份保留份数;
    # S3 配置选项
    s3backupconfig:
    access_key: "myaccesskey"
    secret_key: "myaccesssecret"
    bucket_name: "my-backup-bucket"
    folder: "folder-name" # 此参数 v2.3.0 之后可用
    endpoint: "s3.eu-west-1.amazonaws.com"
    region: "eu-west-1"
  3. 根据实际需求修改以上参数;

  4. 保存并关闭 rancher-cluster.yml

  5. 打开Terminal并切换路径到 RKE 二进制文件所在目录.确保 rancher-cluster.yml 也在这个路径下;

  6. 运行以下命令:

    # MacOS
    ./rke_darwin-amd64 up --config rancher-cluster.yml
    # Linux
    ./rke_linux-amd64 up --config rancher-cluster.yml

结果: RKE 会在每个 etcd 节点上定时获取快照,并将快照将保存到每个 etcd 节点的:/opt/rke/etcd-snapshots/ 目录下

方案 B: 手动创建快照

警告 1、在 rke v0.2.0 以前的版本,RKE 将备份证书和配置文件到 pki.bundle.tar.gz 文件中,并保存在 /opt/rke/etcd-snapshots 目录中。通过 v0.2.0 之前的版本恢复系统时,需要快照和 pki 文件。
2、从 rke v0.2.0 开始,因为架构调整不再需要 pki.bundle.tar.gz 文件,当 rke 创建集群后,会在配置文件当前目录下生成 xxxx.rkestate 文件,文件中保存了集群的配置信息和各组件使用的证书信息。

手动创建快照:

  1. 打开Terminal并切换路径到 RKE 二进制文件所在目录.确保 rancher-cluster.yml 也在该路径下

  2. 输入以下命令:

    注意:替换 <SNAPSHOT.db> 为您设置的快照名称,例如:<SNAPSHOT.db>

    # MacOS
    ./rke etcd snapshot-save --name <SNAPSHOT.db> --config rancher-cluster.yml
    # Linux
    ./rke etcd snapshot-save --name <SNAPSHOT.db> --config rancher-cluster.yml

结果: RKE 会获取每个 etcd 节点的快照,并保存在每个 etcd 节点的 /opt/rke/etcd-snapshots 目录下;

备份快照到安全位置

在创建快照后,应该把它保存到安全的地方,以便在集群遇到灾难情况时快照不受影响,这个位置应该是持久的。

复制 /opt/rke/etcd-snapshots 目录下所有文件到安全位置。

  • 在 rke v0.2.0 以前的版本,备份 /opt/rke/etcd-snapshots 目录中的快照文件和 pki.bundle.tar.gz 文件,以及 rke 配置文件到安全位置,通过 v0.2.0 之前的版本恢复系统时,需要这些文件。
  • 在 rke v0.2.0 以及以后的版本,备份 /opt/rke/etcd-snapshots 目录中的快照文件和 rke 配置文件,以及配置文件当前目录下的 xxxx.rkestate 文件,通过 v0.2.0 之后版本恢复系统时,需要这些文件。