Delen via


Azure Kubernetes Service herstellen met behulp van Azure CLI

In dit artikel wordt beschreven hoe u een Azure Kubernetes-cluster herstelt vanaf een herstelpunt dat is gemaakt door Azure Backup met behulp van Azure CLI.

Met Azure Backup kunt u nu een back-up maken van AKS-clusters (clusterbronnen en permanente volumes die aan het cluster zijn gekoppeld) met behulp van een back-upextensie die in het cluster moet worden geïnstalleerd. Back-upkluis communiceert met het cluster via deze back-upextensie om back-up- en herstelbewerkingen uit te voeren.

U kunt zowel Original-Location Recovery (OLR) uitvoeren (herstellen in het AKS-cluster waarvan een back-up is gemaakt) als alternatieve locatieherstel (ALR) (herstellen in een ander AKS-cluster). U kunt ook de items selecteren die moeten worden hersteld vanuit de back-up die ILR (Item Level Recovery) is.

Notitie

Voordat u een herstelbewerking start, moet voor het doelcluster back-upextensie zijn geïnstalleerd en vertrouwde toegang zijn ingeschakeld voor de Backup-kluis. Meer informatie.

Voordat u begint

  • Met een AKS-back-up kunt u herstellen naar het oorspronkelijke AKS-cluster (waarvan een back-up is gemaakt) en naar een alternatief AKS-cluster. Met een AKS-back-up kunt u een volledige herstelbewerking en herstel op itemniveau uitvoeren. U kunt herstelconfiguraties gebruiken om parameters te definiëren op basis van de clusterbronnen die moeten worden hersteld.

  • U moet de back-upextensie installeren in het AKS-doelcluster. U moet ook Vertrouwde toegang inschakelen tussen de Backup-kluis en het AKS-cluster.

  • Als de doelversie van het AKS-cluster verschilt van de versie die tijdens de back-up wordt gebruikt, kan de herstelbewerking mislukken of worden voltooid met waarschuwingen voor verschillende scenario's, zoals afgeschafte resources in de nieuwere clusterversie. Als u herstelt vanuit de kluislaag, kunt u de gehydrateerde resources in de faseringslocatie gebruiken om toepassingsbronnen te herstellen naar het doelcluster.

Zie de ondersteuningsmatrix voor meer informatie over de beperkingen en ondersteunde scenario's.

Doel-AKS-cluster valideren en voorbereiden

Voordat u een herstelproces start, moet u controleren of het AKS-cluster is voorbereid voor herstel. Het bevat de back-upextensie die moet worden geïnstalleerd met de extensie met de machtiging voor het opslagaccount waar back-ups worden opgeslagen/gehydrateerd met Vertrouwde toegang ingeschakeld tussen het doel-AKS-cluster en de Backup-kluis.

Controleer eerst of de back-upextensie is geïnstalleerd in het cluster door de volgende opdracht uit te voeren:

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

Als de extensie is geïnstalleerd, controleert u of deze over de juiste machtigingen beschikt voor het opslagaccount waar back-ups worden opgeslagen:

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)

Als de rol niet is toegewezen, kunt u de rol toewijzen door de volgende opdracht uit te voeren:

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

Als de back-upextensie niet is geïnstalleerd, voert u de volgende extensie-installatieopdracht uit met het opslagaccount en de blobcontainer waar back-ups als invoer worden opgeslagen .

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

Wijs vervolgens de vereiste rol toe aan de extensie in het opslagaccount door de volgende opdracht uit te voeren:

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

Vertrouwde toegang controleren

Voer de volgende opdracht uit om te controleren of Vertrouwde toegang is ingeschakeld tussen de Backup-kluis en het AKS-doelcluster:

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

Zo niet, dan kan Vertrouwde toegang worden ingeschakeld met de volgende opdracht:

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

Herstellen naar een AKS-cluster

Het relevante herstelpunt ophalen

Haal alle exemplaren op die zijn gekoppeld aan het AKS-cluster en identificeer de relevante instantie.

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

Zodra het exemplaar is geïdentificeerd, haalt u het relevante herstelpunt op.

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

Als u back-ups wilt herstellen naar de secundaire regio, gebruikt u de vlag --use-secondary-region om herstelpunten te identificeren die beschikbaar zijn in die regio.

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

De herstelaanvraag voorbereiden

Voer az dataprotection backup-instance initialize-restoreconfig de opdracht uit om de herstelconfiguratie voor te bereiden die de items definiëren die moeten worden hersteld naar het AKS-doelcluster.

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
}

De herstelconfiguratie bestaat uit de volgende items:

  • conflict_policy: Als tijdens een herstelbewerking een resource met dezelfde naam bestaat in het cluster als in de back-up, kunt u kiezen hoe u het conflict kunt afhandelen. U hebt twee opties: Overslaan, waarmee het back-upitem niet wordt hersteld, of Bijwerken, waarmee de onveranderbare velden van de in-clusterresource worden gewijzigd met de resource die is opgeslagen in de back-up.

  • excluded_namespace: U kunt de naamruimten weergeven die moeten worden uitgesloten van het herstellen in het cluster. De onderliggende resource van deze naamruimten wordt niet hersteld.

  • excluded_resource_types: U kunt de resourcetypen weergeven die moeten worden uitgesloten van het herstellen in het cluster. De waarden in invoer moeten worden opgegeven als API Group Kind als sleutelwaardepaar.

  • include_cluster_scope_resources: U kunt bepalen of u resources met clusterbereik wilt herstellen of niet door de waarde in te stellen op waar of onwaar.

  • included_namespaces : U kunt de naamruimten weergeven die alleen als onderdeel van het herstel naar het cluster moeten worden opgenomen. Resource die onderliggende naamruimten zijn, moeten worden hersteld.

  • excluded_resource_types: U kunt de resourcetypen weergeven die alleen moeten worden opgenomen voor herstel in het cluster. De waarden in invoer moeten worden opgegeven als API Group Kind als sleutelwaardepaar.

  • label_selectors: U kunt resources selecteren die moeten worden hersteld met specifieke labels erin. De invoerwaarde moet worden opgegeven als sleutelwaardepaar.

  • namespace_mappings: U kunt naamruimte (en onderliggende resources) toewijzen aan een andere naamruimte in het doelcluster. Als de doelnaamruimte niet in het cluster bestaat, wordt er een nieuwe naamruimte gemaakt door de extensie. De invoerwaarde moet worden opgegeven als sleutelwaardepaar.

  • persistent_volume_restore_mode: U kunt deze variabele gebruiken om te bepalen of u de permanente volumes wilt herstellen waarvan een back-up is gemaakt of niet. Geaccepteerde waarden zijn RestoreWithVolumeData, RestoreWithoutVolumeData

  • resource_modifier_reference: U kunt verwijzen naar de Resource Modifier-resource die in het cluster is geïmplementeerd met deze variabele. De invoerwaarde is een sleutelwaardepaar van de naamruimte waarin de resource wordt geïmplementeerd en de naam van het yaml-bestand.

  • restore_hook_references: U kunt verwijzen naar de resource Herstelhook die in het cluster is geïmplementeerd met deze variabele. De invoerwaarde is een sleutelwaardepaar van de naamruimte waarin de resource wordt geïmplementeerd en de naam van de yaml-bestanden.

  • staging_resource_group_id: Als u een back-up herstelt die is opgeslagen in de kluislaag, moet u een id van de resourcegroep opgeven als faseringslocatie. In deze resourcegroep worden de back-ups van permanente volumes gehydrateerd voordat ze worden hersteld naar het doelcluster.

  • staging_storage_account_id: Als u een back-up herstelt die is opgeslagen in de kluislaag, moet u een id van het opslagaccount opgeven als een faseringslocatie. In deze resourcegroep worden de kubernetes-resources gehydrateerd voordat ze worden hersteld naar het doelcluster.

Bereid nu de herstelaanvraag voor met alle relevante details. Als u de back-up herstelt naar het oorspronkelijke cluster, voert u de volgende opdracht uit:

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

Als het doel-AKS-cluster voor herstel verschilt van het oorspronkelijke cluster, voert u de volgende opdracht uit:

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

Notitie

Als u een herstelpunt hebt gekozen uit de kluislaag met --source-datastore VaultStore, geeft u vervolgens een opslagaccount en een momentopnameresourcegroep op in de herstelconfiguratie.

Als u wilt herstellen naar het cluster in de secundaire regio, stelt u de vlag --restore-location in als de naam van de secundaire regio en --source-datastore als VaultStore.

Nu kunt u het JSON-object bijwerken op basis van uw vereisten en vervolgens het object valideren door de volgende opdracht uit te voeren:

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

Met deze opdracht wordt gecontroleerd of het AKS-cluster en de Backup-kluis over de vereiste rollen beschikken voor verschillende resources die nodig zijn om herstel uit te voeren. Als de validatie mislukt vanwege ontbrekende rollen, kunt u deze toewijzen door de volgende opdracht uit te voeren:

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

Notitie

Tijdens de herstelbewerking moeten de Backup-kluis en het AKS-cluster bepaalde rollen hebben toegewezen om de herstelbewerking uit te voeren:

  • Het doel-AKS-cluster moet de rol Inzender hebben voor de resourcegroep Momentopname.
  • De gebruikersidentiteit die is gekoppeld aan de back-upextensie, moet de rol Opslagblobgegevensbijdrager hebben voor het opslagaccount waarin back-ups worden opgeslagen in het geval van de operationele laag en in het *faseringsopslagaccount in het geval van de Kluislaag.
  • De Back-upkluis moet de rol Lezer hebben in het AKS-doelcluster en de resourcegroep Voor momentopnamen in het geval van herstellen vanuit de operationele laag.
  • De Back-upkluis moet de rol Inzender hebben voor de faseringsresourcegroep in het geval van het herstellen van een back-up vanuit de kluislaag.
  • De Back-upkluis moet de rol Inzender voor opslagaccounts en opslagblobgegevenseigenaar hebben voor de faseringsresourcegroep in het geval van het herstellen van een back-up vanuit de kluislaag.

De herstelbewerking activeren

Zodra de roltoewijzing is voltooid, moet u het herstelobject nogmaals valideren. Daarna kunt u een herstelbewerking activeren door de volgende opdracht uit te voeren:

az dataprotection backup-instance restore trigger --backup-instance-name $backupinstancename --restore-request-object restorerequestobject.json 

Notitie

De resources die zijn gehydrateerd in de faseringsresourcegroep en het opslagaccount worden niet automatisch opgeschoond nadat de hersteltaak is voltooid en handmatig moeten worden verwijderd.

Traceringstaak

U kunt de hersteltaken bijhouden met behulp van de az dataprotection job opdracht. U kunt alle taken weergeven en een bepaalde taakdetails ophalen.

U kunt Resource Graph ook gebruiken om alle taken in alle abonnementen, resourcegroepen en Backup-kluizen bij te houden. Gebruik de az dataprotection job list-from-resourcegraph opdracht om de relevante taak op te halen.

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

Volgende stappen