使用 Azure 备份还原 Azure Kubernetes 服务

本文介绍如何还原已备份的 Azure Kubernetes 服务 (AKS)。 还可以使用 Azure PowerShell 还原 AKS 群集。

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

开始之前

  • 使用 AKS 备份,可以还原到已备份的原始 AKS 群集和备用 AKS 群集。 AKS 备份允许执行完整还原和项级还原。 可以利用还原配置基于要还原的群集资源定义参数。

  • 必须在目标 AKS 群集中安装备份扩展。 此外,必须在备份保管库和 AKS 群集之间启用受信任的访问。

  • 对于基于 Azure 文件的卷,请确保永久性卷在执行还原之前将回收策略设置为保留。 这可确保即使删除 PVC,快照也保持安全。 如果需要还原并且 PVC 仍存在于目标群集中,请先将其删除,然后再启动还原操作。

  • 针对 Azure 文件存储 类型的卷,目标 AKS 群集必须在承载文件共享的存储帐户上具有分配的 存储文件数据特权参与者 角色。 对于动态预配的卷,备份保管库会自动处理此分配。 对于静态预配的卷,必须手动分配此角色。

  • Azure 文件卷只能还原到同一订阅和区域中的群集。 Azure 文件卷不支持跨区域和跨订阅还原。

  • 要还原存储在保管库层级中的备份,请提供一个存储帐户作为暂存位置。 备份数据以 Blob 形式存储在 Microsoft 租户的备份保管库中。 在恢复操作过程中,备份数据会从一个保险库复制到跨租户的临时存储账户。 Vault 层仅支持 Azure 磁盘卷;Azure 文件存储 卷仅使用 Operational Tier 。

  • Azure 备份不会自动横向扩展 AKS 节点, 它只会还原数据和关联的资源。 AKS 使用群集自动缩放程序等功能管理自动缩放。 如果在目标群集上启用自动缩放,它应自动处理资源缩放。 在还原之前,请确保目标群集有足够的资源,以避免还原失败或性能问题

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

还原 AKS 群集

若要还原已备份的 AKS 群集,请执行以下步骤:

  1. 转到“备份中心”并选择“还原”。

    屏幕截图显示了如何启动恢复过程。

  2. 在下一页上,选择“选择备份实例”,然后选择要还原的实例。

    如果“主要”和“次要区域”中都提供实例,请选择要还原的区域,然后选择“继续”。

    屏幕截图显示了选择要还原的备份实例。

    屏幕截图显示选择实例进行还原。

    屏幕截图显示开始还原。

  3. 单击“选择还原点”以选择要还原的还原点。

    如果还原点同时在保管库和操作数据存储中可用,请选择要使用的还原点。

    显示查看还原点的过程的屏幕截图。

    屏幕截图显示了选择的还原点。

    屏幕截图显示如何转到“还原”页。

  4. 在“还原参数”部分中,单击“选择 Kubernetes 服务”,然后选择要将备份还原到的 AKS 群集。

    屏幕截图显示如何启动参数选择。

    屏幕截图显示选择的 Kubernetes Service 参数。

    屏幕截图显示还原页面,其中选择了 Kubernetes 参数。

  5. 若要选择已备份的群集资源进行还原,请单击“选择资源”。

    详细了解恢复配置。

    屏幕截图显示“选择要还原的资源”页面。

  6. 如果您从 Vault 标准数据存储库 选择了恢复点进行还原,请提供一个 快照资源组 和 存储帐户 作为暂存位置。

    屏幕截图显示要添加的参数,以便从Vault标准存储中进行还原。

    屏幕截图显示从保管库标准存储进行还原时要添加的存储参数。

    注意

    在还原操作期间,备份保管库和 AKS 群集需要拥有分配的特定角色才能执行还原:

    • 目标 AKS 群集应在 快照资源组 上具有 参与者 角色。
    • 与备份扩展关联的 用户标识 应在用于存储备份的 存储帐户 上具有 存储 Blob 数据参与者 角色(在操作层级的情况下),并在 暂存存储帐户 上具有该角色(在保管库层级的情况下)。
    • 备份保管库应在目标 AKS 集群和快照资源组上具有读取者角色,以便在从操作层还原时使用。
    • 备份保管库应在暂存资源组上具有参与者角色,以便在从保管库层恢复备份时使用。
    • 备份保管库应在暂存存储账户上具有存储帐户参与者和存储 Blob 数据所有者角色,以便在从保管库层还原备份时使用。
  7. 选择“验证”,以对所选择的还原群集运行验证。

    屏幕截图显示还原参数的验证。

    注意

    • 对于基于 Azure 文件的卷,要验证目标 AKS 群集是否在存储帐户上具有 存储文件数据特权参与者 角色。 如果缺少此角色,可能需要手动分配它,尤其是对于静态预配卷。
    • 如果要还原 Azure 文件卷和 Kubernetes 机密用于存储存储帐户密钥,请确保备份配置中包含机密。
  8. 验证成功后,选择“查看 + 还原”,并将备份还原到所选群集。

    屏幕截图显示用于还原的“查看 + 还原”选项卡。

    注意

    恢复任务不会自动清理预备资源组和存储账户中已水合的资源。 手动删除这些资源。

为 AKS 群集配置项级还原

作为 AKS 备份的项级还原功能的一部分,可以利用多个还原配置筛选器来执行还原。

  • 从列表中选择要还原的命名空间。 该列表仅显示已备份的命名空间。

    屏幕截图显示了命名空间的选择。

    如果您想要还原群集范围的资源和永久性卷,还可以选中相应的复选框。

    若要还原特定群集资源,请在文本框中使用附加到这些资源的标签。 仅备份带有已输入标签的资源。

  • 可以提供 API 组和种类来还原特定资源类型。 附录中提供了 API 组和种类列表。 可以输入多个 API 组。

    屏幕截图显示了 API 用于还原的用法。

  • 若要还原工作负载(例如通过 API 组从备份还原部署),条目应为:

    • 种类:选择“部署”。

    • 组:选择组。

    • 命名空间映射:若要将已备份的群集资源迁移到其他命名空间,请选择已备份的命名空间,然后输入要将资源迁移到的命名空间。

      如果 AKS 群集中不存在命名空间,则会创建命名空间。 如果在还原群集资源期间发生冲突,可以跳过或修补冲突的资源。

      屏幕截图显示了要迁移的命名空间的选择。

  • 资源修饰符 (可选):若要在还原期间修改资源属性(例如更改永久性卷声明的存储类),可以在目标群集中部署资源修饰符 ConfigMap。 当还原到具有不同存储类的备用群集时,这非常有用。 例如,若要更改存储类:

    1. 使用资源修改规则创建 YAML 文件:

      version: v1
      resourceModifierRules:
        - conditions:
            groupResource: persistentvolumeclaims
          patches:
            - operation: replace
              path: "/spec/storageClassName"
              value: "azurefile-csi-premium"
      
    2. 部署 ConfigMap: kubectl create cm <configmap-name> --from-file=<yaml-file> -n <namespace>

    3. 在 资源修饰符下的还原配置中引用此 ConfigMap。

发生资源冲突(例如备份资源与目标 AKS 群集中的资源同名)时,适用于 AKS 的 Azure 备份当前支持通过以下两个选项执行还原操作。 定义还原配置时,可以选择以下选项之一。

  • 跳过:默认情况下此选项处于选中状态。 例如,如果你已备份名为 pvc-azuredisk 的 PVC,并且要在具有同名 PVC 的目标群集中还原它,则备份扩展会跳过还原备份的永久性卷声明 (PVC) 操作。 在这种情况下,建议从群集中删除资源,然后执行还原操作。

  • 修补:此选项可用于在目标群集中的资源上修补备份资源中的可变变量。 如果要更新目标群集中的副本数,可以选择修补作为操作。

注意

AKS 备份当前不会删除并重新创建目标群集中的资源(如果它们已存在)。 如果尝试在原始位置还原永久性卷,请删除现有的永久性卷,然后执行还原操作。

验证还原是否已完成

还原操作完成后,验证是否已成功还原资源:

  1. 检查目标群集中是否有资源:

    kubectl get pods -n <namespace>
    kubectl get pvc -n <namespace>
    kubectl get pv
    
  2. 对于 Azure 文件卷,请验证应用能否访问还原的数据:

    kubectl exec -it <pod-name> -n <namespace> -- ls /mnt/azure
    

    将 /mnt/azure 替换为您实际的装载路径。

  3. 验证 Azure 文件存储快照在存储帐户中是否仍然可用,以便将来进行还原。

  4. 如果要还原静态预配的 Azure 文件卷,请确保:

    • 用于访问文件共享的 Kubernetes 机密已还原。
    • 存储文件数据特权参与者角色分配给存储帐户上的目标 AKS 群集。
    • 文件共享存在于存储帐户中。

还原次要区域中的 AKS 群集

若要还原次要区域中的 AKS 群集,请在备份保管库中配置异地冗余和跨区域还原,然后触发还原。

后续步骤