使用 bmctl 备份和恢复集群

本页面介绍如何使用 bmctl 备份和恢复通过 Anthos clusters on Bare Metal 创建的集群。以下说明适用于 Anthos clusters on Bare Metal 支持的所有集群类型。

bmctl 备份和恢复过程不包括永久性卷。本地卷预配工具 (LVP) 创建的任何卷都将保持不变。

备份集群

bmctl backup cluster 命令会将 etcd 存储区中的集群信息和指定集群的 PKI 证书添加到 tar 文件中。etcd 存储区是所有集群数据的 Kubernetes 后备存储区,包含管理集群状态需要的所有 Kubernetes 对象和自定义对象。PKI 证书用于通过 TLS 进行身份验证。此数据从集群的控制层面或高可用性 (HA) 部署的其中一个控制层面进行备份。

备份 tar 文件包含敏感凭据,包括您的服务帐号密钥和 SSH 密钥。请将备份文件存储在安全的位置。为防止意外泄露文件,Anthos clusters on Bare Metal 备份过程仅使用内存中的文件。

定期备份集群,以确保快照数据相对最新。调整备份频率以反映集群重大更改的频率。

用于备份集群的 bmctl 版本必须与管理集群的版本匹配。

要备份集群,请执行以下操作:

  1. 确保集群正常运行,凭据有效并且可通过 SSH 连接所有节点。

    备份过程的目的是捕获处于已知良好状态的集群,以便在发生灾难性故障时可以恢复操作。

    使用以下命令检查集群:

    bmctl check cluster -c CLUSTER_NAME
    

    CLUSTER_NAME 替换为您打算备份的集群的名称。

  2. 运行以下命令以确保目标集群未处于协调状态:

    kubectl describe cluster CLUSTER_NAME -n CLUSTER_NAMESPACE
    

    替换以下内容:

    • CLUSTER_NAME:要备份的集群的名称。
    • CLUSTER_NAMESPACE:集群的命名空间。默认情况下,Anthos clusters on Bare Metal 的集群命名空间是以 cluster- 开头的集群名称。例如,如果您将集群命名为 test,则命名空间的名称类似于 cluster-test
  3. 在命令输出中检查是否有类型为“Reconciling”的 status.conditions

    如果这些 status.conditions 的状态为“False”,则表示集群稳定并且可以进行备份。

  4. 运行以下命令来备份集群:

    bmctl backup cluster -c CLUSTER_NAME --kubeconfig ADMIN_KUBECONFIG
    

    替换以下内容:

    • CLUSTER_NAME:要备份的集群的名称。
    • ADMIN_KUBECONFIG:管理员集群 kubeconfig 文件的路径。

    默认情况下,备份 tar 文件保存到管理员工作站上的工作区目录(默认为 bmctl-workspace)。tar 文件名为 CLUSTER_NAME_backup_TIMESTAMP.tar.gz,其中 CLUSTER_NAME 是正在备份的集群的名称,TIMESTAMP 是备份的日期和时间。例如,如果集群名称为 testuser,则备份文件的名称类似于 testuser_backup_2006-01-02T150405Z0700.tar.gz

    如需为备份文件指定其他名称和位置,请使用 --backup-file 标志。

备份文件会在一年后过期,并且集群恢复过程不会使用过期的备份文件。

恢复集群

通过备份恢复集群是最后的补救手段,应在集群发生灾难性故障并且无法以任何其他方式恢复服务时使用。例如,etcd 数据损坏或 etcd Pod 陷入崩溃循环。

备份 tar 文件包含敏感凭据,包括您的服务帐号密钥和 SSH 密钥。为防止意外泄露文件,Anthos clusters on Bare Metal 恢复过程仅使用内存中的文件。

用于恢复集群的 bmctl 版本必须与管理集群的版本匹配。

要恢复集群,请执行以下操作:

  1. 确保备份时集群可用的所有节点机器正常运行且可访问。

  2. 确保节点之间的 SSH 连接使用备份时所用的 SSH 密钥。

    这些 SSH 密钥会在恢复过程中恢复。

  3. 确保备份时使用的服务帐号密钥仍然有效。

    这些服务帐号密钥会针对恢复的集群恢复。

  4. 要恢复独立集群或自行管理的管理员集群或混合集群,请运行以下命令:

    bmctl restore cluster -c CLUSTER_NAME --backup-file BACKUP_FILE
    

    替换以下内容:

    • CLUSTER_NAME:要恢复的集群的名称。
    • BACKUP_FILE:您使用的备份文件的路径和名称。
  5. 要恢复非自行管理的用户集群、管理员集群或混合集群,请运行以下命令:

    bmctl restore cluster -c CLUSTER_NAME --backup-file BACKUP_FILE \
         --kubeconfig ADMIN_KUBECONFIG
    

    替换以下内容:

    • CLUSTER_NAME:要恢复的集群的名称。
    • BACKUP_FILE:您使用的备份文件的路径和名称。
    • ADMIN_KUBECONFIG:管理员集群 kubeconfig 文件的路径。

在恢复过程结束时,系统会为恢复的集群生成新的 kubeconfig 文件。