本文介绍如何在订阅中注册资源提供程序,以便使用备份扩展和受信任访问。 此外,它还提供了 Azure CLI 命令来管理它们。
Azure 备份现在允许使用备份扩展(必须在群集中安装)备份 AKS 群集(群集资源和附加到群集的永久性卷)。 AKS 群集需要使用备份保管库启用受信任访问,以便保管库可以与备份扩展通信以执行备份和还原操作。
此外,它还有助于描述如何从 Azure 门户管理 Azure Kubernetes 服务群集的备份。
资源提供程序注册
安装备份扩展以及启动任何备份和还原操作都需要资源提供者注册。 作为订阅所有者,您可以进行此注册。 通常,资源提供程序已在 Azure 订阅中注册。 如果没有,则注册 Microsoft.KubernetesConfiguration 资源提供程序。
注册完成后,可以在订阅下的所有群集上执行备份和还原作。
注册备份扩展
若要安装备份扩展,需要在订阅上注册 Microsoft.KubernetesConfiguration 资源提供程序。 要执行注册,请运行以下命令:
az provider register --namespace Microsoft.KubernetesConfiguration
注册最多可能需要 10 分钟。 若要监视注册过程,请运行以下命令:
az provider show --name Microsoft.KubernetesConfiguration --output table
备份扩展相关操作
本部分提供一组 Azure CLI 命令,用于对备份扩展执行创建、更新或删除操作。 可以使用 update 命令更改基础备份扩展 Pod 的计算限制。
安装备份扩展程序
若要安装备份扩展,请执行以下命令:
az k8s-extension create --name azure-aks-backup --extension-type microsoft.dataprotection.kubernetes --scope cluster --cluster-type managedClusters --cluster-name <aksclustername> --resource-group <aksclusterrg> --release-train stable --configuration-settings blobContainer=<containername> storageAccount=<storageaccountname> storageAccountResourceGroup=<storageaccountrg> storageAccountSubscriptionId=<subscriptionid>
查看备份扩展安装状态
若要查看备份扩展安装进度,请使用以下命令:
az k8s-extension show --name azure-aks-backup --cluster-type managedClusters --cluster-name <aksclustername> --resource-group <aksclusterrg>
更新备份扩展中的资源
若要更新备份扩展中的 blob 容器、CPU 和内存,请使用以下命令:
az k8s-extension update --name azure-aks-backup --cluster-type managedClusters --cluster-name <aksclustername> --resource-group <aksclusterrg> --release-train stable --configuration-settings [blobContainer=<containername> storageAccount=<storageaccountname> storageAccountResourceGroup=<storageaccountrg> storageAccountSubscriptionId=<subscriptionid>] [cpuLimit=1] [memoryLimit=1Gi]
[]: denotes the 3 different sub-groups of updates possible (discard the brackets while using the command)
删除备份扩展安装操作
若要停止备份扩展安装操作,请使用以下命令:
az k8s-extension delete --name azure-aks-backup --cluster-type managedClusters --cluster-name <aksclustername> --resource-group <aksclusterrg>
授予对存储帐户的权限
备份扩展在群集的托管资源组中创建用户分配的托管标识。 需要通过运行以下命令在存储帐户上为此标识提供存储 Blob 数据参与者权限:
az role assignment create --assignee-object-id $(az k8s-extension show --name azure-aks-backup --cluster-name <aksclustername> --resource-group <aksclusterrg> --cluster-type managedClusters --query aksAssignedIdentity.principalId --output tsv) --role 'Storage Blob Data Contributor' --scope /subscriptions/<subscriptionid>/resourceGroups/<storageaccountrg>/providers/Microsoft.Storage/storageAccounts/<storageaccountname>
与可信访问相关的操作
若要在备份保管库和 AKS 群集之间启用受信任的访问,请使用以下 Azure CLI 命令:
az aks trustedaccess rolebinding create \
--resource-group <aksclusterrg> \
--cluster-name <aksclustername> \
--name <randomRoleBindingName> \
--source-resource-id $(az dataprotection backup-vault show --resource-group <vaultrg> --vault <VaultName> --query id -o tsv) \
--roles Microsoft.DataProtection/backupVaults/backup-operator
详细了解与受信任访问相关的其他命令。
使用 Azure 门户管理操作
本部分介绍了 Azure 备份支持的多种管理操作,通过这些操作可轻松管理 Azure Kubernetes 服务群集备份。
调整 CPU 和内存以适配 AKS 的 Azure 备份
AKS 的 Azure 备份依赖于在 AKS 集群中部署的 Pod,这些 Pod 是命名空间 dataprotection-microsoft 下备份扩展的一部分。 若要执行备份和还原作,这些 Pod 具有特定的 CPU 和内存要求。
默认资源预留
1. Memory: requests - 256Mi, limits - 1280Mi
2. CPU: requests - 500m, limits - 1000m
但是,如果群集中的资源数超过 1000,扩展 Pod dataprotection-microsoft-kubernetes-agent 可能需要超出默认预留的额外 CPU 和内存。 如果所需资源超出分配的限制,你可能会在还原操作期间遇到因 OOMKilled(内存不足)错误而导致的 UserErrorBackupPluginPodRestartedDuringBackup 或 UserErrorBackupPluginPodRestartedDuringRestore 错误。
通过增加 CPU 和内存来解决 OOMKilled 错误
OOMKilled 事件通常发生在容器超出其配置的内存限制时,或在节点层面出现内存压力时被选中作为牺牲对象。
要验证该问题是否由 OOMKilled 事件导致,如果有可用的监控解决方案,请查看 dataprotection-microsoft-kubernetes-agent Pod 中 Velero 容器的内存使用情况。 审查容器的内存消耗有助于判断其是否因内存耗尽而终止。 还建议检查托管该舱节点的内存使用情况。
或者,您可以确认代理 Pod 是否因内存不足(OOM)而终止。
$ kubectl describe pod [The full name of the agent pod] -n dataprotection-microsoft
...
"reason": "OOMKilled",
"exitCode": 137,
...
如果确认根本原因为 OOMKilled 事件,请手动更新扩展 pod 的资源设置,按照以下步骤确保备份和恢复操作的成功。
在 Azure 门户中打开 AKS 群集。
导航到左侧窗格中“设置”下的“扩展 + 应用程序”。
请选择名为“azure-aks-backup”的扩展。
向下滚动,在配置设置下添加新值,然后单击“保存”。
resources.limits.memory : 4400Mi
注释
如果部署扩展 Pod 的节点没有所需的 CPU 或内存,并且你只更新了资源限制,则 Pod 可能会反复被终止。 若要解决此问题,请使用 resources.requests.cpu 和 resources.requests.memory 更新配置设置。 如果 Pod 资源使用较高,建议设置相同的请求值和限制。 这样可以防止 Pod 被调度到没有足够可用资源来满足其资源限制的节点上。
验证更改
更新设置后,检查 dataprotection-microsoft-kubernetes-agent pod 的资源是否已正确应用。 更新设置后,一旦 Pod 重启并成功应用这些设置,请等待计划备份执行,或发起一次按需备份。 如果仍然遇到 OOMKilled 失败,请重复上述步骤并逐步增加内存限制,如果问题仍然存在,还请增加 resources.limits.cpu 参数。
监视处于“已完成但出现警告”状态的备份和还原作业
执行计划备份或按需备份或还原操作时,将创建与操作对应的作业来跟踪其进度。 如果失败,这些作业让你可以识别错误代码并修复问题,以便稍后运行成功的作业。
对于 AKS 备份,备份和还原作业可以显示状态“已完成,但出现警告”。 当备份和还原操作未完全成功时,会出现此状态,原因是用户定义配置或工作负荷的内部状态出现问题。
例如,如果 AKS 群集的备份作业完成状态为 “已完成并显示警告”,则会创建还原点,但根据备份配置,群集中没有所有资源。 该作业显示警告详细信息,提供在操作期间受到影响的问题和资源。
若要查看这些警告,请选择“警告详细信息”旁边的“查看详细信息”。
了解如何识别和解决错误。
更改策略
你可以通过备份实例更改关联的策略。
选择备份实例->更改策略。
选择要应用于数据库的新策略。
注释
更改分配给备份实例的备份策略不会影响现有恢复点及其保留期。 更新后的保留设置仅适用于策略更改后创建的新恢复点。
停止保护
可通过三种方式停止保护 Azure 磁盘:
停止保护并保留数据(永久保留):此选项可帮助你阻止将来的所有备份作业保护你的群集。 但是,Azure 备份服务会永久保留备份的恢复点。 你需要付费才能将恢复点保留在保管库中(有关详细信息,请参阅 Azure 备份定价)。 你可以根据需要还原磁盘。 若要恢复群集保护,请使用“恢复备份”选项。
停止保护并保留数据(根据策略保留):此选项可帮助您停止所有未来的备份任务,以保护您的群集。 恢复点将按策略保留,并可根据 Azure 备份定价收费。 但是,最新的恢复点将被永久保留。
停止保护并删除数据:此选项可帮助你阻止将来的所有备份作业保护你的群集,并删除所有恢复点。 你将无法还原磁盘,也无法使用“恢复备份”选项。
注释
即使 AKS 备份停止或备份失败,最后一个还原点仍会在定义的保留期之外保留,确保至少有一个还原点可用。
修改备份配置
现如今,AKS 备份允许您修改现有备份实例的配置,包括要保护的命名空间、基于标签的资源包含或排除、API 组、机密、以及支持的卷类型,如 Azure 磁盘和 Azure 文件存储。
在 Azure 门户中,转到备份保管库。
选择备份实例在管理下。
找到 AKS 群集备份实例,打开它并单击顶部 的“编辑备份实例 ”。
在新屏幕上,选项可用于修改备份策略、备份保管库使用的托管标识和备份实例配置。 选择“修改备份实例”部分中的“选择”。
在右侧窗格中,要包含要备份的文件卷,请打开下拉列表 选择卷类型,然后选择 Azure SMB 文件共享的复选框。 此外,选中复选框 “包括机密”。 可以使用此窗格更新任何其他现有备份配置,包括标签。 然后单击 “选择”。
更新备份配置后,单击“ 验证 ”以确保满足使用 Azure 文件的所有先决条件。 如果备份保管库标识缺少所需的角色,则会出现角色分配错误。 如果对相关资源拥有必要的权限,可以通过单击“ 授予权限”来解决此问题。
选择 “应用” 以完成备份实例配置的修改。
后续步骤
- 使用 [Azure 门户]](azure-kubernetes-service-cluster-backup.md)、Azure PowerShell 备份 Azure Kubernetes 服务群集
- 还原 Azure Kubernetes 服务群集
- 备份 Azure Kubernetes 服务群集的支持方案