Share via


Wiederherstellen von Azure Kubernetes Service mithilfe der Azure CLI

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

Mit Azure Backup können Sie jetzt AKS-Cluster (Clusterressourcen und an den Cluster angefügte persistente Volumes) mithilfe einer Sicherungserweiterung sichern. Diese Erweiterung muss im Cluster installiert werden. Der Backup-Tresor kommuniziert mit dem Cluster über diese Sicherungserweiterung, um Sicherungs- und Wiederherstellungsvorgänge durchzuführen.

Sie können sowohl eine Wiederherstellung in dem ursprünglichen AKS-Cluster, der gesichert wurde (Original-Location Recovery, OLR) als auch eine Wiederherstellung in einem anderen AKS-Cluster (Alternate-Location Recovery, ALR) durchführen. Sie können auch die wiederherzustellenden Elemente aus der Sicherung auswählen. Dies wird als Wiederherstellung auf Elementebene (Item-Level Wiederherstellung, ILR) bezeichnet.

Hinweis

Bevor Sie einen Wiederherstellungsvorgang initiieren, muss im Zielcluster die Sicherungserweiterung installiert und der vertrauenswürdige Zugriff für den Sicherungstresor aktiviert sein. Weitere Informationen

Vorbereitung

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

  • 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.

Überprüfen und Vorbereiten des AKS-Zielclusters

Bevor Sie einen Wiederherstellungsvorgang initiieren, müssen Sie überprüfen, ob der AKS-Cluster für die Wiederherstellung vorbereitet ist. Dies umfasst die Installation der Sicherungserweiterung, wobei die Erweiterung über die Berechtigung für das Speicherkonto verfügt, in dem Sicherungen gespeichert werden, und die Aktivierung des vertrauenswürdigen Zugriffs zwischen AKS-Cluster und Sicherungstresor.

Überprüfen Sie zunächst, ob die Sicherungserweiterung im Cluster installiert ist, indem Sie den folgenden Befehl ausführen:

az k8s-extension show --name azure-aks-backup --cluster-type managedClusters --cluster-name $targetakscluster --resource-group $aksclusterresourcegroup

Wenn die Erweiterung installiert ist, überprüfen Sie, ob sie über die richtigen Berechtigungen für das Speicherkonto verfügt, in dem Sicherungen gespeichert sind:

az role assignment list --all --assignee  $(az k8s-extension show --name azure-aks-backup --cluster-name $targetakscluster --resource-group $aksclusterresourcegroup --cluster-type managedClusters --query aksAssignedIdentity.principalId --output tsv)

Wenn die Rolle nicht zugewiesen ist, können Sie die Rolle zuweisen, indem Sie den folgenden Befehl ausführen:

az role assignment create --assignee-object-id $(az k8s-extension show --name azure-aks-backup --cluster-name $targetakscluster --resource-group $aksclusterresourcegroup --cluster-type managedClusters --query aksAssignedIdentity.principalId --output tsv) --role 'Storage Account Contributor'  --scope /subscriptions/$subscriptionId/resourceGroups/$storageaccountresourcegroup/providers/Microsoft.Storage/storageAccounts/$storageaccount

Wenn die Sicherungserweiterung nicht installiert ist, führen Sie den folgenden Erweiterungsinstallationsbefehl mit dem Speicherkonto und dem Blobcontainer aus, in dem Sicherungen als Eingabe gespeichert werden.

az k8s-extension create --name azure-aks-backup --extension-type microsoft.dataprotection.kubernetes --scope cluster --cluster-type managedClusters --cluster-name $targetakscluster --resource-group $aksclusterresourcegroup --release-train stable --configuration-settings blobContainer=$blobcontainer storageAccount=$storageaccount storageAccountResourceGroup=$storageaccountresourcegroup storageAccountSubscriptionId=$subscriptionId

Weisen Sie dann der Erweiterung die erforderliche Rolle für das Speicherkonto zu, indem Sie den folgenden Befehl ausführen:

az role assignment create --assignee-object-id $(az k8s-extension show --name azure-aks-backup --cluster-name $targetakscluster --resource-group $aksclusterresourcegroup --cluster-type managedClusters --query aksAssignedIdentity.principalId --output tsv) --role 'Storage Account Contributor'  --scope /subscriptions/$subscriptionId/resourceGroups/$storageaccountresourcegroup/providers/Microsoft.Storage/storageAccounts/$storageaccount

Überprüfen des vertrauenswürdigen Zugriffs

Führen Sie den folgenden Befehl aus, um zu überprüfen, ob der vertrauenswürdige Zugriff zwischen dem Sicherungstresor und dem AKS-Zielcluster aktiviert ist:

az aks trustedaccess rolebinding list --resource-group $aksclusterresourcegroup --cluster-name $targetakscluster

Wenn er nicht aktiviert ist, führen Sie den folgenden Befehl aus, um den vertrauenswürdigen Zugriff zu aktivieren:

az aks trustedaccess rolebinding create --cluster-name $targetakscluster --name backuprolebinding --resource-group $aksclusterresourcegroup --roles Microsoft.DataProtection/backupVaults/backup-operator --source-resource-id /subscriptions/$subscriptionId/resourceGroups/$backupvaultresourcegroup/providers/Microsoft.DataProtection/BackupVaults/$backupvault

Wiederherstellen in einem AKS-Cluster

Holen Sie den entsprechenden Wiederherstellungspunkt

Rufen Sie alle Instanzen ab, die dem AKS-Cluster zugeordnet sind, und identifizieren Sie die relevante Instanz.

az dataprotection backup-instance list-from-resourcegraph --datasource-type AzureKubernetesService --datasource-id /subscriptions/$subscriptionId/resourceGroups/$aksclusterresourcegroup/providers/Microsoft.ContainerService/managedClusters/$akscluster --query aksAssignedIdentity.id

Rufen Sie den entsprechenden Wiederherstellungspunkt ab, sobald die Instanz identifiziert wurde.

az dataprotection recovery-point list --backup-instance-name $backupinstancename --resource-group $backupvaultresourcegroup --vault-name $backupvault

Vorbereiten der Wiederherstellungsanforderung

Führen Sie den Befehl az dataprotection backup-instance initialize-restoreconfig aus, um die Wiederherstellungskonfiguration vorzubereiten und die Elemente zu definieren, die im AKS-Zielcluster wiederhergestellt werden sollen.

az dataprotection backup-instance initialize-restoreconfig --datasource-type AzureKubernetesService >restoreconfig.json



{
  "conflict_policy": "Skip",
  "excluded_namespaces": null,
  "excluded_resource_types": null,
  "include_cluster_scope_resources": true,
  "included_namespaces": null,
  "included_resource_types": null,
  "label_selectors": null,
  "namespace_mappings": null,
  "object_type": "KubernetesClusterRestoreCriteria",
  "persistent_volume_restore_mode": "RestoreWithVolumeData"
}

Bereiten Sie nun die Wiederherstellungsanforderung mit allen relevanten Details vor. Wenn Sie die Sicherung im ursprünglichen Cluster wiederherstellen, führen Sie den folgenden Befehl aus:

az dataprotection backup-instance restore initialize-for-item-recovery --datasource-type AzureKubernetesService --restore-location $region --source-datastore OperationalStore --recovery-point-id $recoverypointid --restore-configuration restoreconfig.json --backup-instance-id /subscriptions/$subscriptionId/resourceGroups/$aksclusterresourcegroup/providers/Microsoft.DataProtection/backupVaults/$backupvault/backupInstances/$backupinstanceid >restorerequestobject.json

Wenn sich der AKS-Zielcluster für die Wiederherstellung vom ursprünglichen Cluster unterscheidet, führen Sie den folgenden Befehl aus:

az dataprotection backup-instance restore initialize-for-data-recovery --datasource-type AzureKubernetesService --restore-location $region --source-datastore OperationalStore --recovery-point-id $recoverypointid --restore-configuration restoreconfig.json --target-resource-id /subscriptions/$subscriptionId/resourceGroups/$aksclusterresourcegroup/providers/Microsoft.ContainerService/managedClusters/$targetakscluster >restorerequestobject.json

Nun können Sie das JSON-Objekt gemäß Ihren Anforderungen aktualisieren und dann das Objekt überprüfen, indem Sie den folgenden Befehl ausführen:

az dataprotection backup-instance validate-for-restore --backup-instance-name $backupinstancename --resource-group $backupvaultresourcegroup --restore-request-object restorerequestobject.json --vault-name $backupvault

Mit diesem Befehl wird überprüft, ob der AKS-Cluster und der Sicherungstresor über die erforderlichen Berechtigungen untereinander und die Momentaufnahme-Ressourcengruppe für die Wiederherstellung verfügen. Wenn die Überprüfung aufgrund fehlender Berechtigungen fehlschlägt, können Sie diese zuweisen, indem Sie den folgenden Befehl ausführen:

az dataprotection backup-instance update-msi-permissions --datasource-type AzureKubernetesService --operation Restore --permissions-scope Resource --resource-group  $backupvaultresourcegroup --vault-name $backupvault --restore-request-object restorerequestobject.json --snapshot-resource-group-id /subscriptions/$subscriptionId/resourceGroups/$snapshotresourcegroup

Auslösen des Wiederherstellungsvorgangs

Sobald die Rollenzuweisung abgeschlossen ist, sollten Sie das Wiederherstellungsobjekt noch einmal überprüfen. Anschließend können Sie einen Wiederherstellungsvorgang auslösen, indem Sie den folgenden Befehl ausführen:

az dataprotection backup-instance restore trigger --restore-request-object restorerequestobject.json --ids /subscriptions/$subscriptionId/resourceGroups/$aksclusterresourcegroup/providers/Microsoft.DataProtection/backupVaults/$backupvault/backupInstances/$backupinstancename 

Hinweis

Während des Wiederherstellungsvorgangs müssen der Sicherungstresor und der AKS-Cluster über bestimmte Rollenzuweisungen verfügen, um die Wiederherstellung durchzuführen:

  1. Der AKS-Zielcluster sollte in der Momentaufnahmeressourcengruppe die Rolle Mitwirkender haben.
  2. Die mit der Sicherungserweiterung angefügte Benutzeridentität sollte für das Speicherkonto, in dem Sicherungen gespeichert werden, über die Rolle Mitwirkender des Speicherkontos verfügen.
  3. Der Sicherungstresor sollte für den Ziel-AKS-Cluster und die Momentaufnahmeressourcengruppe die Rolle Leser besitzen.

Aufträge nachverfolgen

Sie können die Wiederherstellungsaufträge mithilfe des Befehls az dataprotection job nachverfolgen. Sie können alle Aufträge auflisten und ein bestimmtes Auftragsdetail abrufen.

Sie können auch Resource Graph verwenden, um alle Aufträge in allen Abonnements, Ressourcengruppen und Sicherungstresoren nachzuverfolgen. Verwenden Sie den Befehl az dataprotection job list-from-resourcegraph, um den entsprechenden Auftrag abzurufen.

az dataprotection job list-from-resourcegraph --datasource-type AzureKubernetesService --datasource-id /subscriptions/$subscriptionId/resourceGroups/$aksclusterresourcegroup/providers/Microsoft.ContainerService/managedClusters/$akscluster --operation Restore

Nächste Schritte