Wiederherstellen des Azure Kubernetes-Diensts mithilfe von PowerShell

In diesem Artikel wird beschrieben, wie Sie Azure Kubernetes-Cluster aus einem von Azure Backup erstellten Wiederherstellungspunkt mit Azure PowerShell wiederherstellen.

Azure Backup unterstützt das Sichern von AKS-Clustern, einschließlich Clusterressourcen und angefügter persistenter Volumes, über eine Sicherungserweiterung. Diese Erweiterung muss im Cluster installiert werden, damit der Backup-Tresor mit ihr kommunizieren kann, um Sicherungs- und Wiederherstellungsvorgänge durchzuführen.

Sie können eine Wiederherstellung am ursprünglichen Speicherort (Original-Location Recovery, OLR) im selben AKS-Cluster oder eine Wiederherstellung des alternativen Speicherorts (Alternate-Location Recovery, ALR) in einem anderen AKS-Cluster durchführen. Mit der Wiederherstellung auf Elementebene (Item-Level Recovery, ILR) können Sie bestimmte Elemente auswählen, die aus der Sicherung wiederhergestellt werden sollen.

Hinweis

Stellen Sie vor dem Initiieren eines Wiederherstellungsvorgangs sicher, dass im Zielcluster die Sicherungserweiterung installiert und der vertrauenswürdige Zugriff für den Sicherungstresor aktiviert ist. Weitere Informationen

Voraussetzungen

Bevor Sie einen AKS-Cluster wiederherstellen, stellen Sie sicher, dass Sie die folgenden Voraussetzungen erfüllen:

  • Die AKS-Sicherung ermöglicht die Wiederherstellung auf den ursprünglichen AKS-Cluster (der gesichert wurde) und auf einen alternativen AKS-Cluster. Mit AKS Backup können Sie eine vollständige Wiederherstellung sowie eine Wiederherstellung auf Elementebene durchführen. Sie können Wiederherstellungskonfigurationen verwenden, um Parameter basierend auf den Clusterressourcen für die Wiederherstellung zu definieren.

  • Sie müssen die Sicherungserweiterung im AKS-Zielcluster installieren. Außerdem müssen Sie den vertrauenswürdigen Zugriff zwischen dem Sicherungstresor und dem AKS-Cluster aktivieren.

Weitere Informationen zu den Einschränkungen und unterstützten Szenarien finden Sie in der Supportmatrix.

Initialisieren von Variablen für Ressourcenbefehle für die AKS-Clusterwiederherstellung

Geben Sie hier die erforderlichen Details für jede Ressource an, die in Ihren Befehlen verwendet werden sollen.

  • Abonnement-ID des Sicherungstresors

    $vaultSubId = "xxxxxxxx-xxxx-xxxx-xxxx"
    
  • Ressourcengruppe, zu der der Backup-Tresor gehört

    $vaultRgName = "testBkpVaultRG"
    
  • Name des Backup-Tresors

    $vaultName = "TestBkpVault"
    
  • Region, zu der der Backup-Tresor gehört

    $restoreLocation = "vaultRegion" #example eastus
    
  • ID des Ziel-AKS-Clusters, falls die Wiederherstellung auf einem alternativen AKS-Cluster ausgeführt wird

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

Wiederherstellen in einem AKS-Cluster

Rufen Sie den relevanten Wiederherstellungspunkt ab

Um die entsprechenden Wiederherstellungspunkte abzurufen, führen Sie die folgenden Cmdlets aus:

  1. Rufen Sie mit dem Cmdlet Get-AzDataProtectionBackupInstance alle Instanzen ab, und identifizieren Sie die relevante Instanz.

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

Verwenden Sie die Cmdlets Az.Resourcegraph und Search-AzDataProtectionBackupInstanceInAzGraph, um instanzübergreifend in mehreren Tresoren und Abonnements zu suchen.

 $AllInstances = Search-AzDataProtectionBackupInstanceInAzGraph -Subscription $vaultSubId -ResourceGroup $vaultRgName -Vault $vaultName -DatasourceType AzureKubernetesService  -ProtectionStatus ProtectionConfigured
  1. Rufen Sie den entsprechenden Wiederherstellungspunkt ab, sobald die Instanz identifiziert wurde. Die dritte Sicherungsinstanz aus dem Ausgabe-Array des angegebenen Cmdlets soll wiederhergestellt werden.

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

Vorbereiten der Wiederherstellungsanforderung

Führen Sie zum Vorbereiten der Wiederherstellungsanforderung die folgenden Cmdlets aus:

  1. Verwenden Sie das Cmdlet New-AzDataProtectionRestoreConfigurationClientObject, um die Wiederherstellungskonfiguration vorzubereiten und die Elemente zu definieren, die im AKS-Zielcluster wiederhergestellt werden sollen.

    $aksRestoreCriteria = New-AzDataProtectionRestoreConfigurationClientObject -DatasourceType AzureKubernetesService  -PersistentVolumeRestoreMode RestoreWithVolumeData  -IncludeClusterScopeResource $true -NamespaceMapping  @{"sourceNamespace"="targetNamespace"}
    
  2. Verwenden Sie das Cmdlet Initialize-AzDataProtectionRestoreRequest, um die Wiederherstellungsanforderung mit allen relevanten Details vorzubereiten.

    Verwenden Sie das folgende Cmdlet-Format, um die Wiederherstellung im ursprünglichen AKS-Cluster durchzuführen:

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

    Verwenden Sie das folgende Cmdlet-Format, um die Wiederherstellung in einem alternativen AKS-Cluster durchzuführen:

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

Auslösen der Wiederherstellung für AKS-Cluster

Führen Sie zum Auslösen des Wiederherstellungsvorgangs die folgenden Cmdlets aus:

  1. Überprüfen Sie die zuvor erstellte Wiederherstellungsanforderung.

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

    Hinweis

    Während des Wiederherstellungsvorgangs müssen dem Sicherungstresor und dem AKS-Cluster bestimmte Rollen zugewiesen sein, um die Wiederherstellung durchzuführen:

    • Der AKS-Zielcluster sollte in der Snapshot-Ressourcengruppe über die Rolle Mitwirkender verfügen.
    • Die Benutzeridentität , die mit der Backup-Erweiterung verbunden ist, sollte Storage Blob Data Contributor-Rollen auf dem Speicherkonto haben, in dem Backups im Falle der Operational Tier gespeichert werden, und im Staging-Speicherkonto im Fall von Vault Tier.
    • Der Sicherungstresor sollte für den Ziel-AKS-Cluster und die Momentaufnahmeressourcengruppe die Rolle Leser besitzen.
  2. Verwenden Sie zum Auslösen des Wiederherstellungsvorgangs mit der zuvor vorbereiteten Anforderung das Cmdlet Start-AzDataProtectionBackupInstanceRestore.

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

    Hinweis

    Die in der Staging-Ressourcengruppe und im Speicherkonto bereitgestellten Ressourcen werden nach Abschluss des Wiederherstellungsauftrags nicht automatisch gelöscht. Du musst sie manuell löschen.

Nachverfolgen des Wiederherstellungsauftrags für AKS-Cluster

Verfolgen Sie alle Aufträge mit dem Cmdlet Get-AzDataProtectionJob. Sie können alle Aufträge auflisten und ein bestimmtes Auftragsdetail abrufen. Verwenden Sie alternativ Az.ResourceGraph, um Aufträge in allen Backup-Tresoren zu überwachen.

Um den entsprechenden Job für einen beliebigen Backup-Tresor abzurufen, verwenden Sie das Search-AzDataProtectionJobInAzGraph-Cmdlet.

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

Nächste Schritte