Share via


Återställa Azure Kubernetes Service med Azure CLI

Den här artikeln beskriver hur du återställer Azure Kubernetes-kluster från en återställningspunkt som skapats av Azure Backup med azure CLI.

Med Azure Backup kan du nu säkerhetskopiera AKS-kluster (klusterresurser och beständiga volymer som är anslutna till klustret) med hjälp av ett säkerhetskopieringstillägg som måste installeras i klustret. Säkerhetskopieringsvalvet kommunicerar med klustret via det här säkerhetskopieringstillägget för att utföra säkerhetskopierings- och återställningsåtgärder.

Du kan utföra både Original-Location Recovery (OLR) (återställning i AKS-klustret som säkerhetskopierades) och Alternate-Location Recovery (ALR) (återställning i ett annat AKS-kluster). Du kan också välja de objekt som ska återställas från säkerhetskopian som är Återställning på objektnivå (ILR).

Kommentar

Innan du påbörjar en återställningsåtgärd bör målklustret ha säkerhetskopieringstillägget installerat och betrodd åtkomst aktiverad för säkerhetskopieringsvalvet. Läs mer.

Innan du börjar

  • Med AKS-säkerhetskopiering kan du återställa till det ursprungliga AKS-klustret (som säkerhetskopierades) och till ett alternativt AKS-kluster. Med AKS-säkerhetskopiering kan du utföra en fullständig återställning och återställning på objektnivå. Du kan använda återställningskonfigurationer för att definiera parametrar baserat på de klusterresurser som hämtas under återställningen.

  • Du måste installera säkerhetskopieringstillägget i AKS-målklustret. Du måste också aktivera betrodd åtkomst mellan Backup-valvet och AKS-klustret.

Mer information om begränsningar och scenarier som stöds finns i supportmatrisen.

Verifiera och förbereda mål-AKS-kluster

Innan du påbörjar en återställningsprocess måste du verifiera att AKS-klustret är förberett för återställning. Detta inkluderar säkerhetskopieringstillägget som ska installeras med tillägget med behörigheten för lagringskontot där säkerhetskopior lagras och betrodd åtkomst som ska aktiveras mellan AKS-klustret och Backup-valvet.

Kontrollera först om säkerhetskopieringstillägget är installerat i klustret genom att köra följande kommando:

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

Om tillägget är installerat kontrollerar du om det har rätt behörigheter för lagringskontot där säkerhetskopior lagras:

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)

Om rollen inte har tilldelats kan du tilldela rollen genom att köra följande kommando:

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

Om säkerhetskopieringstillägget inte är installerat kör du följande tilläggsinstallationskommando med lagringskontot och blobcontainern där säkerhetskopior lagras som indata.

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

Tilldela sedan den roll som krävs till tillägget på lagringskontot genom att köra följande kommando:

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

Kontrollera betrodd åtkomst

Kör följande kommando för att kontrollera om betrodd åtkomst är aktiverat mellan Säkerhetskopieringsvalvet och AKS-målklustret:

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

Om den inte är aktiverad kör du följande kommando för att aktivera betrodd åtkomst:

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

Återställa till ett AKS-kluster

Hämta relevant återställningspunkt

Hämta alla instanser som är associerade med AKS-klustret och identifiera relevant instans.

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

När instansen har identifierats hämtar du relevant återställningspunkt.

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

Förbereda återställningsbegäran

Kör kommandot för att förbereda återställningskonfigurationen som definierar de objekt som ska återställas till aks-målklustret az dataprotection backup-instance initialize-restoreconfig .

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"
}

Förbered nu återställningsbegäran med all relevant information. Om du återställer säkerhetskopian till det ursprungliga klustret kör du följande kommando:

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

Om AKS-målklustret för återställning skiljer sig från det ursprungliga klustret kör du följande kommando:

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

Nu kan du uppdatera JSON-objektet enligt dina krav och sedan verifiera objektet genom att köra följande kommando:

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

Det här kommandot kontrollerar om AKS-klustret och säkerhetskopieringsvalvet har nödvändiga behörigheter för varandra och resursgruppen Ögonblicksbild för att utföra återställningen. Om verifieringen misslyckas på grund av saknade behörigheter kan du tilldela dem genom att köra följande kommando:

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

Utlös återställningen

När rolltilldelningen är klar bör du verifiera återställningsobjektet igen. Därefter kan du utlösa en återställningsåtgärd genom att köra följande kommando:

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

Kommentar

Under återställningsåtgärden måste säkerhetskopieringsvalvet och AKS-klustret ha vissa roller tilldelade för att utföra återställningen:

  1. AKS-målklustret ska ha rollen Deltagare i resursgruppen för ögonblicksbilder.
  2. Användaridentiteten som är kopplad till säkerhetskopieringstillägget ska ha rollerna För lagringskontodeltagare på lagringskontot där säkerhetskopior lagras.
  3. Säkerhetskopieringsvalvet bör ha en läsarroll i AKS-målklustret och resursgruppen för ögonblicksbilder.

Spårningsjobb

Du kan spåra återställningsjobben med hjälp av az dataprotection job kommandot . Du kan visa en lista över alla jobb och hämta en viss jobbinformation.

Du kan också använda Resource Graph för att spåra alla jobb i alla prenumerationer, resursgrupper och säkerhetskopieringsvalv. az dataprotection job list-from-resourcegraph Använd kommandot för att hämta relevant jobb.

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

Nästa steg