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. U kunt ook een AKS-cluster herstellen met behulp van Azure PowerShell.

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. De back-upkluis communiceert met het cluster via deze back-upextensie om back-ups en herstelprocedures 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

Bekijk de volgende details voordat u begint met het herstellen van een AKS-cluster:

  • 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 Vault-laag, kunt u de gehydrateerde resources op de staginglocatie gebruiken om applicatiebronnen 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, waarbij de extensie de juiste machtiging heeft voor het opslagaccount waar de back-ups worden opgeslagen of teruggezet, met Vertrouwde toegang ingeschakeld tussen de doel-AKS-cluster en de back-upkluis.

Voer de volgende opdrachten uit om het AKS-cluster te valideren en voor te bereiden voor herstel:

  1. Controleer of de back-upextensie is geïnstalleerd in het cluster.

    az k8s-extension show --name azure-aks-backup --cluster-type managedClusters --cluster-name $targetakscluster --resource-group $aksclusterresourcegroup
    
  2. Als de extensie is geïnstalleerd, controleert u of de extensie de juiste machtigingen heeft voor het opslagaccount waarin 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)
    
  3. Als de rol niet is toegewezen, wijst u de rol toe.

    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
    
    
  4. Als de back-upextensie niet is geïnstalleerd, voert u de volgende extensie-installatieopdracht uit met het opslagaccount en de blobcontainer waarin back-ups worden opgeslagen als invoer.

    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
    
  5. Wijs de vereiste rol toe aan de extensie in het opslagaccount.

    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

Terugzetten naar een AKS-cluster

Als u wilt herstellen naar een AKS-cluster, raadpleegt u de volgende secties.

Het relevante herstelpunt ophalen

Voer de volgende opdrachten uit om het relevante herstelpunt op te halen:

  1. Haal alle instanties op die zijn gekoppeld aan het AKS-cluster en identificeer de juiste instantie.

    az dataprotection backup-instance list-from-resourcegraph --datasource-type AzureKubernetesService --datasource-id /subscriptions/$subscriptionId/resourceGroups/$aksclusterresourcegroup/providers/Microsoft.ContainerService/managedClusters/$akscluster 
    
    
  2. 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
    
    
  3. 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 veranderlijke velden van de in-clusterresource worden gewijzigd met de resource die is opgeslagen in de back-up.

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

  • excluded_resource_types: U kunt de resourcetypen opsommen die moeten worden uitgesloten van herstel 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. De resources die aan die naamruimten ten grondslag liggen, 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.

  • object_type: met deze variabele geeft u aan of de herstelconfiguratie is bedoeld voor een herstelpunt dat is opgeslagen in de operationele laag of de kluislaag. Als het herstelpunt zich in de operationele laag bevindt, stelt u de waarde in op KubernetesClusterRestoreCriteria. Als het herstelpunt zich in de kluislaag bevindt of wordt hersteld naar een secundaire regio, stelt u de waarde in op KubernetesClusterVaultTierRestoreCriteria.

  • 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 gebruik maken van de Restore Hook-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 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 geback-upte 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 geladen 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

Als het doelcluster zich in een secundair gebied bevindt, gebruikt u de vlag --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

Notitie

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

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

Als het doelcluster zich in een secundair gebied bevindt, gebruikt u de vlag --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

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 Bijdrager hebben voor de Momentopname Resourcegroep.
  • De gebruikersidentiteit die is gekoppeld aan de back-upextensie, moet de rol Opslagblob-gegevensbijdrager hebben voor het opslagaccount waarin back-ups worden opgeslagen voor de operationele laag en voor het tussenopslagaccount voor de Kluislaag.
  • De back-upkluis moet de rol van Lezer hebben op het AKS-doelcluster en de momentopnamenresourcegroep in het geval van herstel vanuit de operationele laag.
  • De Back-upkluis moet de rol Contributor hebben op de Staging Resource Group voor wanneer een back-up uit de kluislaag wordt hersteld.
  • De back-upkluis moet de rol Inzender van het opslagaccount en Eigenaar van opslagblobgegevens hebben op het faseringsopslagaccount in het geval van het herstellen van een back-up vanaf de Vault-laag.

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 

Als het doelcluster zich in een secundair gebied bevindt, gebruikt u de vlag --use-secondary-region.

az dataprotection backup-instance restore trigger --backup-instance-name $backupinstancename --restore-request-object restorerequestobject.json --use-secondary-region true

Notitie

De resources die zijn gehydrateerd in de faseringsresourcegroep en het opslagaccount worden niet automatisch opgeruimd nadat de hersteltaak is voltooid en moeten handmatig 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 het az dataprotection job list-from-resourcegraph commando 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