使用 PowerShell 還原 Azure Kubernetes Service
本文說明如何使用 Azure PowerShell 從 Azure 備份所建立的還原點還原 Azure Kubernetes 叢集。
Azure 備份現在可讓您使用必須安裝在叢集中的備份延伸模組來備份 AKS 叢集 (叢集資源和連結至叢集的永續性磁碟區)。 備份保存庫會透過此備份延伸模組與叢集通訊,以執行備份和還原作業。
您可以執行原始位置復原 (OLR) (在備份的 AKS 叢集中還原) 和替代位置復原 (ALR) (在不同的 AKS 叢集中還原)。 您也可以選取要從項目層級復原 (ILR) 備份還原的項目。
注意
在起始還原作業之前,目標叢集應已安裝備份延伸模組,並針對備份保存庫啟用信任存取。 深入了解。
使用與命令中使用的每個資源相關的必要詳細資料,初始化變數:
備份保存庫的訂用帳戶標識碼
$vaultSubId = "xxxxxxxx-xxxx-xxxx-xxxx"
備份保存庫所屬的資源群組
$vaultRgName = "testBkpVaultRG"
備份保存庫的名稱
$vaultName = "TestBkpVault"
備份保存庫所屬的區域
$restoreLocation = "vaultRegion" #example eastus
目標 AKS 叢集的標識碼,萬一還原會執行至替代 AKS 叢集
$targetAKSClusterId = "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourceGroups/targetrg/providers/Microsoft.ContainerService/managedClusters/PSAKSCluster2"
在您開始使用 Intune 之前
AKS 備份可讓您還原至原始 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 來準備還原設定,並定義要還原至目標 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]
觸發還原
在您觸發還原作業之前,請先驗證稍早建立的還原要求。
$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