你当前正在访问 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. 在创建保管库期间,将“备份存储冗余”参数设置为“全局冗余”。 设置了保管库的冗余后,无法禁用。

    屏幕截图显示如何启用“备份存储冗余”参数。

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

    屏幕截图显示如何启用“跨区域还原”参数。

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

    注意

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

创建备份策略

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

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

创建备份策略:

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

    屏幕截图显示了如何开始创建备份策略。

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

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

    屏幕截图显示了如何选择数据源类型。

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

    屏幕截图显示了如何提供备份策略名称。

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

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

    屏幕截图显示如何选择备份频率。

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

    屏幕截图显示如何选择保持期。

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

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

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

      屏幕截图显示保管库层和操作层的保留配置。

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

    注意

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

    屏幕截图显示了如何完成备份策略的创建。

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

配置备份

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

注意

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

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

若要配置 AKS 群集的备份:

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

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

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

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

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

    选择下一步

    屏幕截图显示了如何为备份添加存储和 blob 详细信息。

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

    开始安装扩展。

    屏幕截图显示了如何查看和安装备份扩展。

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

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

    屏幕截图显示了如何选择“配置备份”。

  7. 选择备份保管库。

    屏幕截图显示了如何选择保管库。

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

    屏幕截图显示了如何在授予权限后进行下一步操作。

    注意

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

    屏幕截图显示了如何选择备份策略。

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

    屏幕截图显示了如何定义备份实例配置。

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

    详细了解备份配置

    屏幕截图显示了如何定义要备份的群集资源。

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

    屏幕截图显示了如何验证快照资源组。

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

    屏幕截图显示了未能分配必需权限时的验证错误。

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

    屏幕截图显示了如何开始分配角色。

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

    屏幕截图显示了如何选择缺少的角色。

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

    屏幕截图显示了如何继续完成备份配置。

  15. 选择“配置备份”。

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

    屏幕截图显示了如何完成备份配置。

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

    屏幕截图显示了已创建备份实例的列表。

    屏幕截图显示了备份实例的详细信息。

备份配置

使用适用于 AKS 的 Azure 备份,你可以定义要备份的 AKS 群集内的应用程序边界。 可以使用备份配置中提供的筛选器来选择要备份的资源并运行自定义挂钩。 定义的备份配置由备份实例名称的值引用。 以下筛选器可用于定义应用程序边界:

  1. 选择要备份的命名空间:可以选择“全部”来备份群集中的所有现有的和将来的命名空间,也可以选择“从列表中选择”以选择特定命名空间来进行备份

    屏幕截图显示了如何选择要包含在备份中的命名空间。

  2. 展开“其他资源设置”以查看可用于选择要备份的群集资源的筛选器。 可以选择根据以下类别备份资源:

    • “标签”:可以使用分配给资源类型的“标签”来筛选 AKS 资源。 以键/值对的形式输入标签。 通过使用 AND 逻辑合并多个标签。

    例如,如果输入标签“env=prod;tier!=web”,则进程会选择其标签带有 env 键和 prod 值的资源,以及标签带有 tier 键但值不为 web 的资源。

    • “API 组”:还可以通过提供 AKS API 组和种类来包含资源。 例如,可以选择备份 AKS 资源,例如“部署”。 可以在此处访问 Kubernetes 定义 API 组列表。

    • “其他选项”:可以为群集范围的资源、永久性卷和机密启用或禁用备份。 默认情况下,群集范围的资源和永久性卷处于启用状态

    屏幕截图显示了“附加资源设置”窗格。

    注意

    所有这些资源设置会通过 AND 逻辑进行组合和应用。

注意

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

屏幕截图显示了各种备份配置。

在 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 群集配置备份

    注意

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

    屏幕截图显示了如何为备份配置添加命名空间。

后续步骤