你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 Azure 备份来备份 Azure Kubernetes 服务

本文介绍如何配置和备份 Azure Kubernetes 服务 (AKS)。

可以通过 Azure 备份来使用备份扩展(必须安装在群集中)备份 AKS 群集(群集资源和附加到群集的永久性卷)。 备份保管库通过该备份扩展与群集通信,以执行备份和还原操作。

注意

使用 Azure 备份的 AKS 的保管库备份和跨区域还原目前为预览版。

开始之前

  • 目前,AKS 备份仅支持(由 CSI 驱动程序启用的)基于 Azure 磁盘存储的永久性卷。 备份仅存储在操作数据存储中(备份数据存储在租户中,不会移动到保管库)。 备份保管库和 AKS 群集必须位于同一区域。

  • AKS 备份使用 Blob 容器和资源组来存储备份。 Blob 容器可容纳 AKS 群集资源。 永久性卷快照存储在资源组中。 AKS 群集和存储位置必须位于同一区域。 了解如何创建 Blob 容器

  • 目前,AKS 备份支持一天备份一次。 它还支持每天进行更频繁的备份(每 4 小时、8 小时和 12 小时备份一次)。 此解决方案使你可以将数据保留最多 360 天以用于还原。 了解如何创建备份策略

  • 必须安装备份扩展才能为 AKS 群集配置备份和还原操作。 详细了解备份扩展

  • 在启动备份配置和还原操作之前,请确保在 Microsoft.ContainerService 上为订阅注册了 Microsoft.KubernetesConfigurationMicrosoft.DataProtectionTrustedAccessPreview 功能标志。

  • 请确保在启动 AKS 备份的备份或还原操作之前,请确保执行所有先决条件

若要详细了解支持的方案、限制和可用性,请参阅支持矩阵

创建备份保管库

备份保管库是一个管理实体,用于存储随时间处理的恢复点。 备份保管库还提供执行备份操作的接口。 这些操作包括按需备份、执行还原和创建备份策略。 AKS 备份要求备份保管库和 AKS 群集位于同一区域。 了解如何创建备份保管库

注意

备份保管库是一种新资源,用于备份新支持的数据源。 备份保管库不同于恢复服务保管库。

如果想要使用 Azure 备份来保护 AKS 群集免受任何区域性中断的影响:

  1. 在创建保管库期间,将“备份存储冗余”参数设置为“全局冗余”。 设置了保管库的冗余后,无法禁用。

    Screenshot shows how to enable the Backup Storage Redundance parameter.

  2. 将“保管库属性”下的“跨区域还原”参数设置为“已启用”。 启用此参数后,无法禁用它。

    Screenshot shows how to enable the Cross Region Restore parameter.

  3. 使用为保管库标准数据存储设置了保留期的备份策略创建备份实例。 此数据存储中存储的每个恢复点将位于次要区域。

    注意

    保管库标准数据存储目前以预览版提供。

创建备份策略

在配置备份之前,需要创建一个备份策略,用于定义备份的频率和保留期。

也可以在配置备份时创建备份策略。

创建备份策略:

  1. 转到“备份中心”,然后选择“策略”以创建新的备份策略

    Screenshot that shows how to start creating a backup policy.

    或者,可以转到“备份中心”>“备份策略”>“添加” 。

  2. 对于“数据源类型”,选择“Kubernetes 服务”,然后继续

    Screenshot that shows selecting the datasource type.

  3. 输入备份策略的名称(例如“默认策略”),然后选择需要在其中创建备份策略的备份保管库(创建的新备份保管库)

    Screenshot that shows providing the backup policy name.

  4. 在“计划 + 保留”选项卡上,定义“备份频率”以及在操作层和保管库层(也称为数据存储)中它们需要保留多长时间。

    备份频率:选择备份频率(每小时或每日),然后选择备份的保留期。

    Screenshot that shows selection of backup frequency.

    保留设置:新的备份策略有两个保留规则。

    Screenshot that shows selection of retention period.

    你还可以创建额外的保留规则来将每日或每周创建的备份存储更长时间。

    • 默认值:此规则定义创建的所有操作层备份的默认保留期。 你只能编辑此规则,而不能将其删除。

    • 每天执行的第一次成功备份:除了默认规则外,每天的第一次成功备份可以保留在操作数据存储和保管库标准存储中。 可以编辑和删除此规则(如果要在操作数据存储中保留备份)。

      Screenshot that shows the retention configuration for Vault Tier and Operational Tier.

    还可以为每周、每月和每年执行的第一次成功备份定义类似的规则。

    注意

    • 除了当天的第一次成功备份外,还可以定义当周、当月和当日第一次成功备份的保留规则。 在优先级方面,顺序为年、月、周、日。
    • 该保管库标准数据存储目前以预览版提供。 如果不想使用该功能,请编辑保留规则,并清除“保管库标准数据存储”旁的复选框
    • 保管库层中存储的备份也可复制到次要区域(Azure 配对区域),可用于在主要区域不可用时将 AKS 群集还原到次要区域。 若要选择此功能,请使用启用了“跨区域还原”的异地冗余保管库
  5. 配置备份频率和保留设置后,请选择“下一步”。

    Screenshot that shows the completion of a backup policy creation.

  6. 在“查看 + 创建”选项卡中查看信息,然后选择“创建”。

配置备份

可以使用 AKS 备份来备份整个群集或部署在群集中的特定群集资源。 还可以根据部署的应用程序计划、保留要求或安全要求来多次保护群集。

注意

若要为同一 AKS 群集设置多个备份实例:

  • 在同一备份保管库中配置备份,但使用不同的备份策略。
  • 在不同的备份保管库中配置备份。

若要配置 AKS 群集的备份:

  1. 在 Azure 门户中,转到要备份的 AKS 群集。

  2. 在资源菜单中,选择“备份”,然后选择“配置备份”。

  3. 为了让 AKS 群集做好备份或还原准备,请选择“安装扩展”以在群集中安装备份扩展。

  4. 提供存储帐户和 blob 容器作为输入内容。

    AKS 群集备份会存储在此 blob 容器中。 存储帐户必须与群集位于同一区域和订阅中。

    选择下一步

    Screenshot that shows how to add storage and blob details for backup.

  5. 查看扩展安装详细信息,然后选择“创建”。

    开始安装扩展。

    Screenshot that shows how to review and install the Backup extension.

  6. 成功安装备份扩展后,选择“配置备份”以开始为 AKS 群集配置备份

    也可以在“备份中心”执行此操作。

    Screenshot that shows the selection of Configure Backup.

  7. 选择备份保管库。

    Screenshot that shows how to choose a vault.

    备份保管库应启用“受信任的访问”,以便备份 AKS 群集。 要启用受信任的访问,请选择“授予权限”。 如果已启用,请选择“下一步”。

    Screenshot that shows how to proceed to the next step after granting permission.

    注意

    • 启用“受信任访问”之前,请为订阅上的 Microsoft.ContainerServices 资源提供程序启用 TrustedAccessPreview 功能标志。
    • 如果 AKS 群集未安装备份扩展,可以执行将配置备份的安装步骤。
  8. 选择相应的备份策略,该策略需定义备份计划及其保持期。 然后,选择“下一步”。

    Screenshot that shows how to choose a backup policy.

  9. 在“数据源”选项卡上,选择“添加/编辑”以定义备份实例配置

    Screenshot that shows how to define the Backup Instance Configuration.

  10. 在“选择要备份的资源”窗格中,定义要备份的群集资源。

    详细了解备份配置

    Screenshot that shows how to define the cluster resources for backup.

  11. 对于“快照资源组”,请选择用于存储永久性卷(Azure 磁盘存储)快照的资源组。 然后,选择“验证”。

    Screenshot that shows how to validate the snapshot resource group.

  12. 验证完成后,如果未将所需的角色分配到快照资源组中的保管库,则会出现错误:

    Screenshot that shows a validation error when required permissions aren't assigned.

  13. 要解决该错误,请在“数据源名称”下选择数据源,然后选择“分配缺少的角色”

    Screenshot that shows how to start assigning roles.

    以下屏幕截图显示了可以选择的角色列表:

    Screenshot that shows how to select missing roles.

  14. 完成角色分配后,选择“下一步”。

    Screenshot that shows how to proceed to the backup configuration.

  15. 选择“配置备份”。

  16. 配置完成后,选择“下一步”。

    Screenshot that shows how to finish backup configuration.

    备份配置完成后,将创建备份实例。

    Screenshot that shows the list of created backup instances.

    Screenshot that shows the backup instance details.

备份配置

作为 AKS 备份功能的一部分,可以备份所有群集资源或特定群集资源。 可以使用可用于备份配置的筛选器来选择要备份的资源。 定义的备份配置由备份实例名称的值引用。 可以使用以下选项来选择要备份的命名空间值

  • 全部(包括将来的命名空间):备份基础群集资源时,这会备份命名空间的所有当前值和将来值。

  • 从列表中选择:在 AKS 群集中选择要备份的特定命名空间值。

    若要选择要备份的特定群集资源,可以使用附加到资源的标签将资源包含在备份中。 只会备份具有输入标签的资源。 可以使用多个标签。

    注意

    应为已部署且要备份的每个 Yaml 文件添加标签。 这包括命名空间范围内的资源(如永久性卷声明),以及群集范围的资源(如永久性卷)。

    如果还想备份群集范围的资源、机密和永久性卷,请选中“其他选项”下的项

Screenshot that shows various backup configurations.

在 AKS 备份期间使用挂钩

本部分介绍如何使用备份挂钩创建已部署 MySQL 的 AKS 群集的应用程序一致性快照(包含 MySQL 实例的永久性卷)。

可以在 AKS 备份中使用自定义挂钩来完成卷的应用程序一致性快照。 卷用于部署为容器化工作负荷的数据库。

通过使用备份挂钩,可以定义用于冻结和取消冻结 MySQL Pod 的命令,以便获取卷的应用程序快照。 然后,备份扩展会协调运行挂钩中的命令并获取卷快照的步骤。

执行以下操作,以获取已部署 MySQL 的卷的应用程序一致性快照:

  1. 运行 MySQL 的 Pod 已冻结,因此不会在数据库上执行任何新事务。
  2. 获取卷的快照作为备份。
  3. 运行 MySQL 的 Pod 已取消冻结,因此可以在数据库上再次执行事务。

若要在备份配置流中启用备份挂钩以备份 MySQL:

  1. 使用命令编写用于备份挂钩的自定义资源,以冻结和取消冻结 PostgreSQL Pod。

    还可以使用以下示例 YAML 脚本 postgresbackuphook.yaml,其中包含预定义的命令:

    apiVersion: clusterbackup.dataprotection.microsoft.com/v1alpha1
    kind: BackupHook
    metadata:
    # BackupHook CR Name and Namespace
    name: bkphookname0
    namespace: default
    spec:
    # BackupHook Name. This is the name of the hook that will be executed during backup.
    # compulsory
    name: hook1
    # Namespaces where this hook will be executed.
    includedNamespaces: 
    - hrweb
    excludedNamespaces:
    labelSelector:
    # PreHooks is a list of BackupResourceHooks to execute prior to backing up an item.
    preHooks:
       - exec:
          command:
          - /sbin/fsfreeze
          - --freeze
          - /var/lib/postgresql/data
          container: webcontainer
          onError: Continue
    # PostHooks is a list of BackupResourceHooks to execute after backing up an item.
    postHooks:
       - exec:
          container: webcontainer
          command:
             - /sbin/fsfreeze
             - --unfreeze
          onError: Fail
          timeout: 10s
    
    
    
  2. 在配置备份之前,必须在 AKS 群集中部署备份挂钩自定义资源。

    要部署脚本,请运行以下命令:

    kubectl apply -f mysqlbackuphook.yaml
    
    
  3. 部署完成后,可以为 AKS 群集配置备份

    注意

    作为备份配置的一部分,必须将自定义资源名称以及部署资源的命名空间作为输入提供。

    Screenshot that shows how to add the namespace for the backup configuration.

后续步骤