Przywracanie usługi Azure Kubernetes Service przy użyciu programu PowerShell

W tym artykule opisano sposób przywracania klastra Azure Kubernetes z punktu przywracania utworzonego przez usługę Azure Backup przy użyciu programu Azure PowerShell.

Usługa Azure Backup obsługuje tworzenie kopii zapasowych klastrów usługi AKS, w tym zasobów klastra i dołączonych woluminów trwałych przy użyciu rozszerzenia kopii zapasowej. To rozszerzenie musi być zainstalowane w klastrze, aby magazyn kopii zapasowych mógł komunikować się z nim w celu wykonywania operacji tworzenia kopii zapasowych i przywracania.

Odzyskiwanie w lokalizacji oryginalnej (Original-Location Recovery, OLR) można wykonać w tym samym klastrze usługi AKS, natomiast odzyskiwanie w alternatywnej lokalizacji (Alternate-Location Recovery, ALR) w innym klastrze usługi AKS. Item-Level Recovery (ILR) umożliwia wybranie określonych elementów do przywrócenia z kopii zapasowej.

Uwaga

Przed zainicjowaniem operacji przywracania upewnij się, że klaster docelowy ma zainstalowane rozszerzenie kopii zapasowej i włączono zaufany dostęp dla magazynu kopii zapasowych. Dowiedz się więcej.

Prerequisites

Przed przywróceniem klastra usługi AKS upewnij się, że zostały spełnione następujące wymagania wstępne:

  • Kopia zapasowa AKS umożliwia przywrócenie do oryginalnego klastra AKS (z którego utworzono kopię zapasową) oraz do innego klastra AKS. Funkcja tworzenia kopii zapasowych usługi AKS umożliwia wykonywanie pełnego przywracania oraz przywracania na poziomie elementów. Konfiguracje przywracania umożliwiają definiowanie parametrów na podstawie zasobów klastra na potrzeby przywracania.

  • Należy zainstalować rozszerzenie do tworzenia kopii zapasowych w docelowym klastrze AKS. Ponadto należy włączyć zaufany dostęp między magazynem kopii zapasowych a klastrem usługi AKS.

Aby uzyskać więcej informacji na temat ograniczeń i obsługiwanych scenariuszy, zobacz macierz obsługi.

Zainicjuj zmienne poleceń zasobów dla przywracania klastra AKS

W tym miejscu podaj niezbędne szczegóły dla każdego zasobu, który ma być używany w poleceniach.

  • Identyfikator subskrypcji sejfu kopii zapasowych

    $vaultSubId = "xxxxxxxx-xxxx-xxxx-xxxx"
    
  • Grupa zasobów, do której należy magazyn kopii zapasowych

    $vaultRgName = "testBkpVaultRG"
    
  • Nazwa magazynu kopii zapasowych

    $vaultName = "TestBkpVault"
    
  • Region, do którego należy magazyn kopii zapasowych

    $restoreLocation = "vaultRegion" #example eastus
    
  • Identyfikator docelowego klastra AKS w przypadku przywracania do alternatywnego klastra AKS

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

Przywracanie do klastra usługi AKS

Pobierz odpowiedni punkt odzyskiwania

Aby pobrać odpowiednie punkty odzyskiwania, uruchom następujące polecenia cmdlet (komendy PowerShell).

  1. Pobierz wszystkie wystąpienia za pomocą polecenia Get-AzDataProtectionBackupInstance cmdlet i zidentyfikuj odpowiednie wystąpienie.

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

Aby przeszukiwać wystąpienia w wielu magazynach i subskrypcjach, użyj poleceń cmdlet Az.Resourcegraph i Search-AzDataProtectionBackupInstanceInAzGraph.

 $AllInstances = Search-AzDataProtectionBackupInstanceInAzGraph -Subscription $vaultSubId -ResourceGroup $vaultRgName -Vault $vaultName -DatasourceType AzureKubernetesService  -ProtectionStatus ProtectionConfigured
  1. Po zidentyfikowaniu wystąpienia pobierz odpowiedni punkt odzyskiwania. Z tablicy wyjściowej danego polecenia cmdlet należy przywrócić trzecie wystąpienie kopii zapasowej.

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

Przygotuj żądanie przywrócenia

Aby przygotować żądanie przywracania, uruchom następujące polecenia cmdlet:

  1. Przygotuj konfigurację przywracania i zdefiniuj elementy do przywrócenia do docelowego klastra AKS przy użyciu cmdlet New-AzDataProtectionRestoreConfigurationClientObject.

    $aksRestoreCriteria = New-AzDataProtectionRestoreConfigurationClientObject -DatasourceType AzureKubernetesService  -PersistentVolumeRestoreMode RestoreWithVolumeData  -IncludeClusterScopeResource $true -NamespaceMapping  @{"sourceNamespace"="targetNamespace"}
    
  2. Przygotuj żądanie przywracania z wszystkimi odpowiednimi szczegółami, korzystając z polecenia cmdlet Initialize-AzDataProtectionRestoreRequest.

    Aby przywrócić do oryginalnego klastra AKS, użyj następującego schematu polecenia cmdlet:

    $aksRestoreRequest = Initialize-AzDataProtectionRestoreRequest -DatasourceType AzureKubernetesService  -SourceDataStore OperationalStore -RestoreLocation $restoreLocation -RestoreType OriginalLocation -RecoveryPoint $rp[0].Property.RecoveryPointId -RestoreConfiguration $aksRestoreCriteria -BackupInstance $AllInstances[2]
    

    Aby przywrócić do alternatywnego klastra usługi AKS, użyj następującego formatu polecenia cmdlet:

    $aksRestoreRequest = Initialize-AzDataProtectionRestoreRequest -DatasourceType AzureKubernetesService  -SourceDataStore OperationalStore -RestoreLocation $restoreLocation -RestoreType AlternateLocation -TargetResourceId $targetAKSClusterId -RecoveryPoint $rp[0].Property.RecoveryPointId -RestoreConfiguration $aksRestoreCriteria -BackupInstance $AllInstances[2]
    

Wyzwól przywracanie klastra AKS

Aby uruchomić operację przywracania, wykonaj następujące polecenia cmdlet.

  1. Zweryfikuj utworzone wcześniej żądanie przywracania.

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

    Uwaga

    Podczas operacji przywracania magazyn kopii zapasowych i klaster usługi AKS muszą mieć przypisane określone role w celu wykonania przywracania:

    • Docelowy klaster AKS powinien mieć rolę Współtwórca w Grupie zasobów migawka.
    • Tożsamość użytkownika dołączona do rozszerzenia kopii zapasowej powinna mieć role Storage Blob Data Contributor na koncie magazynu, w którym są przechowywane kopie zapasowe w przypadku warstwy operacyjnej, oraz na przejściowym koncie magazynu w przypadku warstwy magazynu.
    • Magazyn kopii zapasowych powinien mieć rolę Czytelnik w docelowym klastrze usługi AKS i grupie zasobów migawki.
  2. Aby uruchomić operację przywracania przy pomocy wcześniej przygotowanego żądania za pomocą polecenia cmdlet Start-AzDataProtectionBackupInstanceRestore.

    $restoreJob = Start-AzDataProtectionBackupInstanceRestore -SubscriptionId $vaultSubId  -ResourceGroupName $vaultRgName -VaultName $vaultName -BackupInstanceName $AllInstances[2].BackupInstanceName -Parameter $aksRestoreRequest
    

    Uwaga

    Zasoby utworzone w przejściowej grupie zasobów i na koncie magazynu nie są automatycznie usuwane po zakończeniu zadania przywracania. Musisz je usunąć ręcznie.

Śledź zadanie przywracania klastra AKS

Śledź wszystkie zadania przy użyciu polecenia Get-AzDataProtectionJob cmdlet. Możesz wyświetlić listę wszystkich zadań i pobrać szczegóły określonego zadania. Alternatywnie użyj Az.ResourceGraph, aby śledzić zadania we wszystkich składnicach kopii zapasowej.

Aby uzyskać odpowiednią pracę w dowolnej składnicy kopii zapasowych, użyj polecenia Search-AzDataProtectionJobInAzGraph cmdlet.

$job = Search-AzDataProtectionJobInAzGraph -Subscription -SubscriptionId $vaultSubId -ResourceGroup $vaultRgName -Vault $vaultName -DatasourceType AzureKubernetesService -Operation Restore

Dalsze kroki