共用方式為


使用 PowerShell 還原 Azure Kubernetes Service

本文說明如何使用 Azure PowerShell 從 Azure 備份所建立的還原點還原 Azure Kubernetes 叢集。

Azure 備份 支援使用備份擴充功能備份 AKS 叢集,包括叢集資源和連結的永續性磁碟區。 此延伸模組必須安裝在叢集中,讓備份保存庫能夠與其通訊,以執行備份和還原作業。

您可以在相同的 AKS 叢集中執行原始位置復原 (OLR),在不同的 AKS 叢集中執行替代位置復原 (ALR)。 專案層級復原 (ILR) 可讓您選取要從備份還原的特定專案。

注意

在起始還原作業之前,請確定目標叢集已安裝備份延伸模組,並啟用備份保存庫的信任存取。 深入了解

必要條件

在還原 AKS 叢集之前,請確定您符合下列必要條件:

  • AKS 備份可讓您還原至原始 AKS 叢集 (已備份的叢集) 和替代 AKS 叢集。 AKS 備份可讓您執行完整還原和項目層級還原。 您可以使用 還原組態 ,根據叢集資源來定義參數以進行還原。

  • 您必須在目標 AKS 叢集中安裝備份延伸模組。 此外,您必須在備份保存庫與 AKS 叢集之間啟用信任存取

如需限制和支援案例的詳細資訊,請參閱支援矩陣

初始化資源命令的變數

在這裡,提供命令中每個資源的必要詳細數據。

  • 備份保存庫的訂用帳戶標識碼

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

還原至 AKS 叢集

擷取相關復原點

若要擷取相關的恢復點,請執行下列 Cmdlet:

  1. 使用 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
  1. 識別執行個體之後,請擷取相關的復原點。 從指定 Cmdlet 的輸出數位中,要還原第三個備份實例。

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

準備還原要求

若要準備還原要求,請執行下列 Cmdlet:

  1. 準備還原組態,並使用 Cmdlet 定義要還原至目標 AKS 叢集 New-AzDataProtectionRestoreConfigurationClientObject 的專案。

    $aksRestoreCriteria = New-AzDataProtectionRestoreConfigurationClientObject -DatasourceType AzureKubernetesService  -PersistentVolumeRestoreMode RestoreWithVolumeData  -IncludeClusterScopeResource $true -NamespaceMapping  @{"sourceNamespace"="targetNamespace"}
    
  2. 使用 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:

  1. 驗證稍早建立的還原要求。

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

    注意

    在還原作業期間,備份保存庫和 AKS 叢集必須獲派特定角色來執行還原:

    • 目標 AKS 叢集應該具有快照集資源群組上的參與者角色。
    • 在儲存備份所在的儲存體帳戶上,與備份延伸模組連結的使用者身分識別應具有儲存體帳戶參與者角色。
    • 備份保存庫應該具有目標 AKS 叢集快照集資源群組上的讀取者角色。
  2. 若要使用 Cmdlet,以稍早 Start-AzDataProtectionBackupInstanceRestore 準備的要求來觸發還原作業。

    $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

下一步