本文介绍如何使用 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 备份允许执行完整还原和项级还原。 可以利用还原配置基于将要还原的群集资源定义参数。
若要详细了解限制和支持的方案,请参阅支持矩阵。
使用 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
标识实例后,提取相关恢复点。 假设将从上面命令的输出数组中还原第三个备份实例。
$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 群集需要拥有分配的特定角色才能执行还原:
- 目标 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