Å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 ska återställas.
Du måste installera säkerhetskopieringstillägget i AKS-målklustret. Du måste också aktivera betrodd åtkomst mellan Backup-valvet och AKS-klustret.
Om aks-målklusterversionen skiljer sig från den version som användes under säkerhetskopieringen kan återställningsåtgärden misslyckas eller slutföras med varningar för olika scenarier som inaktuella resurser i den nyare klusterversionen. Om du återställer från valvnivån kan du använda de hydratiserade resurserna på mellanlagringsplatsen för att återställa programresurser till målklustret.
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. Den innehåller säkerhetskopieringstillägget som ska installeras med tillägget med behörigheten för lagringskontot där säkerhetskopior lagras/hydratiseras med betrodd åtkomst aktiverat mellan mål-AKS-kluster och Backup-valv.
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 Blob Data 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 inte kan betrodd åtkomst aktiveras med följande kommando:
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
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
Om du vill återställa säkerhetskopior till den sekundära regionen använder du flaggan --use-secondary-region
för att identifiera tillgängliga återställningspunkter i den regionen.
az dataprotection recovery-point list --backup-instance-name $backupinstancename --resource-group $backupvaultresourcegroup --vault-name $backupvault --use-secondary-region true
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",
"resource_modifier_reference": null,
"restore_hook_references": null,
"staging_resource_group_id": null,
"staging_storage_account_id": null
}
Återställningskonfigurationen består av följande objekt:
conflict_policy
: Om det finns en resurs med samma namn i klustret som i säkerhetskopian under en återställning kan du välja hur konflikten ska hanteras. Du har två alternativ: Hoppa över, som inte återställer säkerhetskopieringsobjektet eller Uppdatera, som ändrar de föränderliga fälten i klusterresursen med resursen som lagras i säkerhetskopian.excluded_namespace
: Du kan lista ned de namnområden som ska undantas från att återställas till klustret. Resursen som ligger till grund för dessa namnområden återställs inte.excluded_resource_types
: Du kan visa en lista över de resurstyper som ska undantas från att återställas till klustret. Värdena i indata ska anges som API-grupptyp som nyckelvärdepar.include_cluster_scope_resources
: Du kan bestämma om du vill återställa klusteromfångsresurser eller inte genom att ange värdet som sant eller falskt.included_namespaces
: Du kan lista ned namnrymderna så att de endast inkluderas som en del av återställningen till klustret. Resursen som ligger till grund för dessa namnområden ska återställas.excluded_resource_types
: Du kan lista ned resurstyperna så att de endast inkluderas för återställning till klustret. Värdena i indata ska anges som API-grupptyp som nyckelvärdepar.label_selectors
: Du kan välja resurser som ska återställas med specifika etiketter i dem. Indatavärdet ska anges som nyckelvärdepar.namespace_mappings
: Du kan mappa namnområdet (och underliggande resurser) till ett annat namnområde i målklustret. Om målnamnområdet inte finns i klustret skapas ett nytt namnområde av tillägget. Indatavärdet ska anges som nyckelvärdepar.persistent_volume_restore_mode
: Du kan använda den här variabeln för att avgöra om du vill återställa de beständiga volymer som säkerhetskopieras eller inte. Godkända värden är RestoreWithVolumeData, RestoreWithoutVolumeDataresource_modifier_reference
: Du kan referera till resursmodifierarresursen som distribuerats i klustret med den här variabeln. Indatavärdet är ett nyckelvärdepar i namnområdet där resursen distribueras och namnet på yaml-filen.restore_hook_references
: Du kan referera till den återställningskrokresurs som distribuerats i klustret med den här variabeln. Indatavärdet är ett nyckelvärdepar i namnområdet där resursen distribueras och namnet på yaml-filerna.staging_resource_group_id
: Om du återställer en säkerhetskopia som lagras på valvnivån måste du ange ett ID för resursgruppen som mellanlagringsplats. I den här resursgruppen är de säkerhetskopierade beständiga volymerna hydratiserade innan de återställs till målklustret.staging_storage_account_id
: Om du återställer säkerhetskopiering som lagras på valvnivån måste du ange ett ID för lagringskontot som mellanlagringsplats. I den här resursgruppen är de säkerhetskopierade kubernetes-resurserna hydratiserade innan de återställs till målklustret.
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
Kommentar
Om du har valt en återställningspunkt från valvnivån med --source-datastore
som VaultStore anger du sedan ett lagringskonto och en resursgrupp för ögonblicksbilder i återställningskonfigurationen.
Om du försöker återställa till klustret i den sekundära regionen anger du sedan flaggan --restore-location
som namnet på den sekundära regionen och --source-datastore
som VaultStore.
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 de roller som krävs för olika resurser som krävs för att utföra återställningen. Om verifieringen misslyckas på grund av saknade roller 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
Kommentar
Under återställningsåtgärden måste säkerhetskopieringsvalvet och AKS-klustret ha vissa roller tilldelade för att utföra återställningen:
- AKS-målklustret ska ha rollen Deltagare i resursgruppen för ögonblicksbilder.
- Användaridentiteten som är kopplad till säkerhetskopieringstillägget ska ha rollerna Storage Blob Data Contributor på lagringskontot där säkerhetskopior lagras i händelse av driftnivå och på *mellanlagringskontot i händelse av valvnivå.
- Säkerhetskopieringsvalvet bör ha en läsarroll i AKS-målklustret och resursgruppen för ögonblicksbilder vid återställning från driftnivå.
- Säkerhetskopieringsvalvet bör ha en deltagarroll i resursgruppen mellanlagring vid återställning av säkerhetskopiering från valvnivå.
- Säkerhetskopieringsvalvet bör ha rollen Lagringskontodeltagare och Lagringsblobdataägare i resursgruppen för mellanlagring vid återställning av säkerhetskopiering från valvnivå.
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 --backup-instance-name $backupinstancename --restore-request-object restorerequestobject.json
Kommentar
Resurserna som är hydratiserade i mellanlagringsresursgruppen och lagringskontot rensas inte automatiskt efter att återställningsjobbet har slutförts och ska tas bort manuellt.
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