Å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:
- AKS-målklustret ska ha rollen Deltagare i resursgruppen för ögonblicksbilder.
- Användaridentiteten som är kopplad till säkerhetskopieringstillägget ska ha rollerna För lagringskontodeltagare på lagringskontot där säkerhetskopior lagras.
- 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