Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel wird beschrieben, wie Sie Azure Kubernetes-Cluster aus einem von Azure Backup erstellten Wiederherstellungspunkt mithilfe der Azure CLI wiederherstellen. Sie können einen AKS-Cluster auch mithilfe von Azure PowerShell 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
Bevor Sie beginnen
Bevor Sie mit der Wiederherstellung eines AKS-Clusters beginnen, sollten Sie sich die folgenden Informationen ansehen:
Die AKS-Sicherung ermöglicht die Wiederherstellung auf den ursprünglichen AKS-Cluster (der gesichert wurde) und auf einen alternativen AKS-Cluster. AKS Backup ermöglicht Ihnen die Durchführung einer vollständigen Wiederherstellung sowie einer Wiederherstellung auf Elementebene. Sie können Wiederherstellungskonfigurationen verwenden, um Parameter basierend auf den wiederhergestellten Clusterressourcen 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.
Wenn sich die Version des AKS-Zielclusters von der während des Sicherungsvorgangs verwendeten Version unterscheidet, ist der Wiederherstellungsvorgang u. U. nicht erfolgreich oder wird mit Warnungen für verschiedene Szenarien (etwa veraltete Ressourcen in der neueren Clusterversion) abgeschlossen. Wenn Sie eine Wiederherstellung aus der Vault-Ebene durchführen, können Sie die rehydrierten Ressourcen am Staging-Speicherort verwenden, um Anwendungsressourcen im Zielcluster wiederherzustellen.
Weitere Informationen zu den Einschränkungen und unterstützten Szenarien finden Sie in der Supportmatrix.
Überprüfen und bereiten Sie den AKS-Zielcluster vor
Bevor Sie einen Wiederherstellungsvorgang initiieren, müssen Sie überprüfen, ob der AKS-Cluster für die Wiederherstellung vorbereitet ist. Es umfasst die Installation der Sicherungserweiterung, wobei die Erweiterung über die Berechtigung für das Speicherkonto verfügt, in dem Sicherungen gespeichert/aktualisiert werden. Außerdem ist der vertrauenswürdige Zugriff zwischen AKS-Zielcluster und Sicherungstresor aktiviert.
Um den AKS-Cluster zu validieren und für die Wiederherstellung vorzubereiten, führen Sie die folgenden Befehle aus:
Prüfen Sie, ob Sicherungserweiterung im Cluster installiert ist.
az k8s-extension show --name azure-aks-backup --cluster-type managedClusters --cluster-name $targetakscluster --resource-group $aksclusterresourcegroupWenn 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, dann weisen Sie die Rolle zu.
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 Blob Data Contributor' --scope /subscriptions/$subscriptionId/resourceGroups/$storageaccountresourcegroup/providers/Microsoft.Storage/storageAccounts/$storageaccountWenn 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=$subscriptionIdWeisen Sie der Erweiterung die erforderliche Rolle für das Speicherkonto zu.
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 Blob Data 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
Falls nicht, kann der vertrauenswürdige Zugriff mit dem folgenden Befehl aktiviert werden:
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
Für die Wiederherstellung in einem AKS-Cluster finden Sie Informationen in den folgenden Abschnitten.
Rufen Sie den relevanten Wiederherstellungspunkt ab
Um den entsprechenden Wiederherstellungspunkt zu holen, führen Sie die folgenden Befehle aus:
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/$aksclusterRufen Sie den entsprechenden Wiederherstellungspunkt ab, sobald die Instanz identifiziert wurde.
az dataprotection recovery-point list --backup-instance-name $backupinstancename --resource-group $backupvaultresourcegroup --vault-name $backupvaultFalls Sie Sicherungen in der sekundären Region wiederherstellen möchten, verwenden Sie das Flag
--use-secondary-region, um die in dieser Region verfügbaren Wiederherstellungspunkte zu identifizieren.az dataprotection recovery-point list --backup-instance-name $backupinstancename --resource-group $backupvaultresourcegroup --vault-name $backupvault --use-secondary-region true
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",
"resource_modifier_reference": null,
"restore_hook_references": null,
"staging_resource_group_id": null,
"staging_storage_account_id": null
}
Die Wiederherstellungskonfiguration besteht aus folgenden Elementen:
conflict_policy: Wenn während einer Wiederherstellung im Cluster eine Ressource mit demselben Namen wie in der Sicherung vorhanden ist, können Sie auswählen, wie der Konflikt behandelt werden soll. Sie haben zwei Optionen: Überspringen, wodurch das Sicherungselement nicht wiederhergestellt wird, oder Aktualisieren, wodurch die veränderbaren Felder der clusterinternen Ressource mit der in der Sicherung gespeicherten Ressource geändert werden.excluded_namespace: Sie können die Namespaces auflisten, die von der Wiederherstellung im Cluster ausgeschlossen werden sollen. Die Ressource, die diesen Namespaces zugrunde liegt, wird nicht wiederhergestellt.excluded_resource_types: Sie können die Ressourcentypen auflisten, die von der Wiederherstellung im Cluster ausgeschlossen werden sollen. Die Werte in der Eingabe sollten als Schlüssel-Wert-Paare angegeben werden, wobei „API Group Kind“ den Schlüssel bildet.include_cluster_scope_resources: Sie können entscheiden, ob Sie clusterbezogene Ressourcen wiederherstellen möchten oder nicht, indem Sie den Wert auf „true“ oder „false“ festlegen.included_namespaces: Sie können die Namespaces auflisten, die nur im Rahmen der Wiederherstellung des Clusters eingeschlossen werden sollen. Die Ressource, die diesen Namespaces zugrunde liegt, soll wiederhergestellt werden.excluded_resource_types: Sie können die Ressourcentypen auflisten, die nur für die Wiederherstellung in den Cluster eingeschlossen werden sollen. Die Werte in der Eingabe sollten als Schlüssel-Wert-Paare im Format „API Group Kind“ angegeben werden.label_selectors: Sie können wiederherzustellende Ressourcen mit bestimmten Bezeichnungen darin auswählen. Der Eingabewert sollte als Schlüssel-Wert-Paar angegeben werden.namespace_mappings: Sie können Namespace (und zugrunde liegende Ressourcen) einem anderen Namespace im Zielcluster zuordnen. Wenn der Zielnamespace nicht im Cluster vorhanden ist, wird von der Erweiterung ein neuer Namespace erstellt. Der Eingabewert sollte als Schlüssel-Wert-Paar angegeben werden.object_type: Diese Variable gibt an, ob die Wiederherstellungskonfiguration für einen Wiederherstellungspunkt vorgesehen ist, der in der Betriebsebene oder der Vault-Ebene gespeichert ist. Wenn sich der Wiederherstellungspunkt auf der Betriebsebene befindet, legen Sie den Wert auf KubernetesClusterRestoreCriteria fest. Wenn sich der Wiederherstellungspunkt auf der Vault-Ebene befindet oder in einer sekundären Region wiederhergestellt wird, legen Sie den Wert auf KubernetesClusterVaultTierRestoreCriteria fest.persistent_volume_restore_mode: Sie können diese Variable verwenden, um zu entscheiden, ob die gesicherten persistenten Volumes wiederhergestellt werden sollen oder nicht. Akzeptierte Werte sind „RestoreWithVolumeData“ und „RestoreWithoutVolumeData“.resource_modifier_reference: Mit dieser Variablen können Sie auf die im Cluster bereitgestellte Ressourcenmodifiziererressource verweisen. Der Eingabewert ist ein Schlüssel-Wert-Paar des Namespace, in dem die Ressource bereitgestellt wird, und der Name der YAML-Datei.restore_hook_references: Mit dieser Variablen können Sie auf die im Cluster bereitgestellte Ressource für den Wiederherstellungs-Hook verweisen. Der Eingabewert ist ein Schlüssel-Wert-Paar des Namespace, in dem die Ressource bereitgestellt wird, und der Name der YAML-Dateien.staging_resource_group_id: Wenn Sie eine Sicherungskopie wiederherstellen, die auf der Vault-Ebene gespeichert ist, müssen Sie die ID einer Ressourcengruppe als Stagingstandort angeben. In dieser Ressourcengruppe werden die gesicherten persistenten Volumes vor der Wiederherstellung im Zielcluster mit Daten befüllt.staging_storage_account_id: Falls Sie die Sicherung wiederherstellen, die in der Tresorebene gespeichert ist, müssen Sie eine Speicherkonto-ID als Stagingspeicherort angeben. In dieser Ressourcengruppe werden die gesicherten Kubernetes-Ressourcen aktualisiert, bevor sie im Zielcluster wiederhergestellt werden.
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
Wenn sich der Zielcluster in einer sekundären Region befindet, verwenden Sie das Flag --use-secondary-region.
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 --use-secondary-region true >restorerequestobject.json
Hinweis
Falls Sie einen Wiederherstellungspunkt in der Tresorebene mit --source-datastore als „VaultStore“ ausgewählt haben, geben Sie ein Speicherkonto und eine Momentaufnahme-Ressourcengruppe in der Wiederherstellungskonfiguration an.
Falls Sie die Wiederherstellung im Cluster in der sekundären Region ausführen möchten, legen Sie das Flag --restore-location als Namen der sekundären Region und --source-datastore für „VaultStore“ fest.
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
Wenn sich der Zielcluster in einer sekundären Region befindet, verwenden Sie das Flag --use-secondary-region.
az dataprotection backup-instance validate-for-restore --backup-instance-name $backupinstancename --resource-group $backupvaultresourcegroup --restore-request-object restorerequestobject.json --vault-name $backupvault --use-secondary-region true
Mit diesem Befehl wird überprüft, ob der AKS-Cluster und der Backup-Tresor auf den verschiedenen Ressourcen, die für die Wiederherstellung erforderlich sind, über die erforderlichen Rollen verfügen. Wenn die Überprüfung aufgrund fehlender Rollen 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
Hinweis
Während des Wiederherstellungsvorgangs müssen dem Sicherungstresor und dem AKS-Cluster bestimmte Rollen zugewiesen sein, um die Wiederherstellung auszuführen:
- Der AKS-Zielcluster sollte in der Momentaufnahmeressourcengruppe die Rolle Mitwirkender haben.
- 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 Backup-Tresor sollte eine Leserrolle auf dem Ziel-AKS-Cluster und der Snapshot-Ressourcengruppe haben, falls die Wiederherstellung aus der Operational Tier erfolgt ist.
- Der Backup-Tresor sollte eine Beitragsrolle in der Stagingressourcengruppe haben, falls das Backup aus der Tresorstufe wiederhergestellt wird.
- Der Sicherungstresor sollte für das Stagingspeicherkonto über die Rollen Besitzer von Speicherblobdaten und Mitwirkender an Storage-Blobdaten verfügen, falls eine Wiederherstellung des Backups aus der Tresorebene (Vault Tier) erforderlich ist.
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 --backup-instance-name $backupinstancename --restore-request-object restorerequestobject.json
Wenn sich der Zielcluster in einer sekundären Region befindet, verwenden Sie das Flag --use-secondary-region.
az dataprotection backup-instance restore trigger --backup-instance-name $backupinstancename --restore-request-object restorerequestobject.json --use-secondary-region true
Hinweis
Die in der Staging-Ressourcengruppe und im Speicherkonto bereitgestellten Ressourcen werden nach Abschluss des Wiederherstellungsauftrags nicht automatisch entfernt, sondern müssen manuell gelöscht werden.
Tracking-Auftrag
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 über alle Abonnements, Ressourcengruppen und Sicherungstresore hinweg zu verfolgen. 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