使用 PowerShell 还原 Azure Kubernetes 服务

本文介绍如何使用 Azure PowerShell 从 Azure 备份创建的还原点还原 Azure Kubernetes 群集。

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

可以执行原始位置恢复 (OLR)(在备份的 AKS 群集中还原)和备用位置恢复 (ALR)(在其他 AKU 群集中还原)。 还可以选择要从项目级 (ILR) 的备份中还原的项。

备注

在启动还原操作之前,目标群集应安装备份扩展并为备份保管库启用受信任访问。 了解详细信息

使用与命令中使用的每个资源相关的必需详细信息初始化变量:

  • 备份保管库的订阅 ID

    $vaultSubId = "xxxxxxxx-xxxx-xxxx-xxxx"
    
  • 备份保管库所属的资源组

    $vaultRgName = "testBkpVaultRG"
    
  • 备份保管库的名称

    $vaultName = "TestBkpVault"
    
  • 备份保管库所属区域

    $restoreLocation = "vaultRegion" #example chinanorth
    
  • 目标 AKS 群集的 ID,以防还原到备用 AKS 群集

    $targetAKSClusterId = "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourceGroups/targetrg/providers/Microsoft.ContainerService/managedClusters/PSAKSCluster2"
    

准备工作

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

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

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

还原到 AKS 群集

提取相关恢复点

使用 Get-AzDataProtectionBackupInstance cmdlet 获取所有实例并标识相关实例。

$AllInstances = Get-AzDataProtectionBackupInstance -ResourceGroupName $vaultRgName -VaultName $vaultName

还可使用 Az.ResourcegraphSearch-AzDataProtectionBackupInstanceInAzGraph cmdlet 搜索多个保管库和订阅中的实例。

$AllInstances = Search-AzDataProtectionBackupInstanceInAzGraph -Subscription $vaultSubId -ResourceGroup $vaultRgName -Vault $vaultName -DatasourceType AzureKubernetesService  -ProtectionStatus ProtectionConfigured

标识实例后,提取相关恢复点。 假设将从上面命令的输出数组中还原第三个备份实例。

$rp = Get-AzDataProtectionRecoveryPoint -ResourceGroupName $vaultRgName -VaultName $vaultName -BackupInstanceName $AllInstances[2].BackupInstanceName

准备还原请求

使用 New-AzDataProtectionRestoreConfigurationClientObject cmdlet 准备还原配置并定义要还原到目标 AKU 群集的项。

$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]

触发还原

在触发还原操作之前,请验证之前创建的还原请求。

$validateRestore = Test-AzDataProtectionBackupInstanceRestore -SubscriptionId $vaultSubId  -ResourceGroupName $vaultRgName -VaultName $vaultName -RestoreRequest $aksRestoreRequest -Name $AllInstances[2].BackupInstanceName

备注

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

  1. 目标 AKS 群集应在快照资源组上具有参与者角色。
  2. 备份扩展随附的用户标识应在存储备份的存储帐户上具有存储帐户参与者角色。
  3. 备份保管库应在目标 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

后续步骤