你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
使用 PowerShell 还原 Azure Kubernetes 服务
本文介绍如何使用 Azure PowerShell 从 Azure 备份创建的还原点还原 Azure Kubernetes 群集。
Azure 备份支持使用备份扩展备份 AKS 群集,包括群集资源和附加的永久性卷。 此扩展必须安装在群集中,使备份保管库能够与其通信以执行备份和还原操作。
可以在同一 AKS 群集中执行“原始位置恢复 (OLR)”,也可以在其他 AKS 群集中执行“备用位置恢复 (ALR)”。 使用项级恢复 (ILR) 时,可以选择要基于备份还原的特定项。
注意
在启动还原操作之前,请确保目标群集已安装备份扩展并为备份保管库启用受信任访问。 了解详细信息。
先决条件
在还原 AKS 群集之前,请确保满足以下先决条件:
使用 AKS 备份,可以还原到已备份的原始 AKS 群集和备用 AKS 群集。 AKS 备份允许执行完整还原和项级还原。 可以利用还原配置基于用于还原的群集资源定义参数。
若要详细了解限制和支持的方案,请参阅支持矩阵。
初始化资源命令的变量
在此处,提供要在命令中使用的每个资源的必要详细信息。
备份保管库的订阅 ID
$vaultSubId = "xxxxxxxx-xxxx-xxxx-xxxx"
备份保管库所属的资源组
$vaultRgName = "testBkpVaultRG"
备份保管库的名称
$vaultName = "TestBkpVault"
备份保管库所属区域
$restoreLocation = "vaultRegion" #example eastus
目标 AKS 群集的 ID(如果是还原到备用 AKS 群集)
$targetAKSClusterId = "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourceGroups/targetrg/providers/Microsoft.ContainerService/managedClusters/PSAKSCluster2"
还原到 AKS 群集
提取相关恢复点
若要提取相关的恢复点,请运行以下 cmdlets:
使用
Get-AzDataProtectionBackupInstance
cmdlet 获取所有实例并标识相关实例。$AllInstances = Get-AzDataProtectionBackupInstance -ResourceGroupName $vaultRgName -VaultName $vaultName
若要搜索多个保管库和订阅中的实例,还可使用 Az.Resourcegraph
和 Search-AzDataProtectionBackupInstanceInAzGraph
cmdlet。
$AllInstances = Search-AzDataProtectionBackupInstanceInAzGraph -Subscription $vaultSubId -ResourceGroup $vaultRgName -Vault $vaultName -DatasourceType AzureKubernetesService -ProtectionStatus ProtectionConfigured
标识实例后,提取相关恢复点。 从给定 cmdlet 的输出数组中,将还原第三个备份实例。
$rp = Get-AzDataProtectionRecoveryPoint -ResourceGroupName $vaultRgName -VaultName $vaultName -BackupInstanceName $AllInstances[2].BackupInstanceName
准备还原请求
若要准备还原请求,请运行以下 cmdlet:
使用
New-AzDataProtectionRestoreConfigurationClientObject
cmdlet 准备还原配置并定义要还原到目标 AKS 群集的项。$aksRestoreCriteria = New-AzDataProtectionRestoreConfigurationClientObject -DatasourceType AzureKubernetesService -PersistentVolumeRestoreMode RestoreWithVolumeData -IncludeClusterScopeResource $true -NamespaceMapping @{"sourceNamespace"="targetNamespace"}
使用
Initialize-AzDataProtectionRestoreRequest
cmdlet 准备还原请求及所有相关详细信息。若要还原到原始 AKS 群集,请使用以下 cmdlet 格式:
$aksRestoreRequest = Initialize-AzDataProtectionRestoreRequest -DatasourceType AzureKubernetesService -SourceDataStore OperationalStore -RestoreLocation $restoreLocation -RestoreType OriginalLocation -RecoveryPoint $rp[0].Property.RecoveryPointId -RestoreConfiguration $aksRestoreCriteria -BackupInstance $AllInstances[2]
若要还原到备用 AKS 群集,请使用以下 cmdlet 格式:
$aksRestoreRequest = Initialize-AzDataProtectionRestoreRequest -DatasourceType AzureKubernetesService -SourceDataStore OperationalStore -RestoreLocation $restoreLocation -RestoreType AlternateLocation -TargetResourceId $targetAKSClusterId -RecoveryPoint $rp[0].Property.RecoveryPointId -RestoreConfiguration $aksRestoreCriteria -BackupInstance $AllInstances[2]
触发还原
若要触发还原操作,请运行以下 cmdlet:
验证之前创建的还原请求。
$validateRestore = Test-AzDataProtectionBackupInstanceRestore -SubscriptionId $vaultSubId -ResourceGroupName $vaultRgName -VaultName $vaultName -RestoreRequest $aksRestoreRequest -Name $AllInstances[2].BackupInstanceName
注意
在还原操作期间,备份保管库和 AKS 群集需要拥有分配的特定角色才能执行还原:
- 目标 AKS 群集应在快照资源组上具有参与者角色。
- 备份扩展随附的用户标识应在存储备份的存储帐户上具有存储帐户参与者角色。
- 备份保管库应在目标 AKS 群集和快照资源组上具有读取者角色。
使用
Start-AzDataProtectionBackupInstanceRestore
cmdlet 通过之前准备的请求触发还原操作。$restoreJob = Start-AzDataProtectionBackupInstanceRestore -SubscriptionId $vaultSubId -ResourceGroupName $vaultRgName -VaultName $vaultName -BackupInstanceName $AllInstances[2].BackupInstanceName -Parameter $aksRestoreRequest
跟踪还原作业
使用 Get-AzDataProtectionJob
cmdlet 跟踪所有作业。 你可以列出所有作业并提取特定作业详细信息。 或者,可使用 Az.ResourceGraph 来跟踪所有备份保管库中的作业。
若要跨任何备份保管库获取相关作业,请使用 Search-AzDataProtectionJobInAzGraph
cmdlet。
$job = Search-AzDataProtectionJobInAzGraph -Subscription -SubscriptionId $vaultSubId -ResourceGroup $vaultRgName -Vault $vaultName -DatasourceType AzureKubernetesService -Operation Restore