Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo descrive come ripristinare il cluster Azure Kubernetes da un punto di ripristino creato da Backup di Azure usando l'interfaccia della riga di comando di Azure. È anche possibile ripristinare un cluster AKS usando Azure PowerShell.
Backup di Azure consente ora di eseguire il backup dei cluster del servizio Azure Kubernetes (risorse cluster e volumi permanenti collegati al cluster) usando un'estensione di backup, che deve essere installata nel cluster. L'insieme di credenziali di backup comunica con il cluster tramite l'estensione di backup per eseguire operazioni di backup e ripristino.
È possibile eseguire sia il ripristino OLR (Original-Location Recovery) (ripristino nel cluster del servizio Azure Kubernetes di cui è stato eseguito il backup) che il ripristino ALR (Alternate-Location Recovery) (ripristino in un cluster del servizio Azure Kubernetes diverso). È anche possibile selezionare gli elementi da ripristinare dal backup con ripristino a livello di elemento (ILR).
Nota
Prima di avviare un'operazione di ripristino, il cluster di destinazione deve avere installata l'estensione Backup e l'accesso attendibile abilitato per l'insieme di credenziali di Backup. Altre informazioni.
Prima di iniziare
Prima di iniziare a ripristinare un cluster AKS, consulta i dettagli seguenti:
Il backup del servizio Azure Kubernetes consente di eseguire il ripristino nel cluster del servizio Azure Kubernetes originale (di cui è stato eseguito il backup) e in un cluster del servizio Azure Kubernetes alternativo. Il backup di AKS consente di eseguire un ripristino completo e un ripristino a livello di singolo elemento. È possibile usare le configurazioni di ripristino per definire i parametri in base alle risorse del cluster che da ripristinare.
È necessario installare l'estensione Backup nel cluster del servizio Azure Kubernetes di destinazione. Inoltre, è necessario abilitare l'accesso attendibile tra l'insieme di credenziali di backup e il cluster del servizio Azure Kubernetes.
Se la versione del cluster AKS di destinazione è diversa da quella usata durante il backup, l'operazione di ripristino potrebbe non riuscire o completarsi con avvisi in vari scenari, ad esempio in presenza di risorse deprecate nella versione più recente del cluster. Se si esegue il ripristino dal tier Vault, è possibile usare le risorse reidratate nella posizione di staging per ripristinare le risorse dell'applicazione nel cluster di destinazione.
Per altre informazioni sulle limitazioni e sugli scenari supportati, vedere la matrice di supporto.
Convalidare e preparare il cluster AKS di destinazione
Prima di avviare un processo di ripristino, è necessario verificare che il cluster del servizio Azure Kubernetes sia preparato per il ripristino. Include l'estensione Backup da installare con l'estensione che dispone dell'autorizzazione per l'account di archiviazione in cui i backup vengono archiviati/idratati con l'accesso attendibile abilitato tra il cluster del servizio Azure Kubernetes di destinazione e l'insieme di credenziali di Backup.
Per convalidare e preparare il cluster del servizio Azure Kubernetes per il ripristino, eseguire i comandi seguenti:
Controllare se l'estensione di backup è installata nel cluster.
az k8s-extension show --name azure-aks-backup --cluster-type managedClusters --cluster-name $targetakscluster --resource-group $aksclusterresourcegroupSe l'estensione è installata, verificare se dispone delle autorizzazioni appropriate per l'account di archiviazione in cui sono archiviati i backup.
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)Se il ruolo non è assegnato, assegnare il ruolo.
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/$storageaccountSe l'estensione di backup non è installata, eseguire il comando di installazione dell'estensione seguente con l'account di archiviazione e il contenitore BLOB in cui i backup vengono archiviati come input.
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=$subscriptionIdAssegnare il ruolo necessario all'estensione nell'account di archiviazione.
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
Controllare l'accesso attendibile
Per verificare se l'accesso attendibile è attivato tra l'insieme di credenziali di Backup e il cluster del servizio Azure Kubernetes di destinazione, eseguire il comando seguente:
az aks trustedaccess rolebinding list --resource-group $aksclusterresourcegroup --cluster-name $targetakscluster
In caso contrario, è possibile abilitare l'accesso attendibile con il comando seguente:
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
Ripristino in un cluster del servizio Azure Kubernetes
Per eseguire il ripristino in un cluster AKS, vedere le sezioni seguenti.
Recupero del punto di ripristino pertinente
Per recuperare il punto di ripristino pertinente, eseguire i comandi seguenti:
Recuperare tutte le istanze associate al cluster del servizio Azure Kubernetes e identificare l'istanza pertinente.
az dataprotection backup-instance list-from-resourcegraph --datasource-type AzureKubernetesService --datasource-id /subscriptions/$subscriptionId/resourceGroups/$aksclusterresourcegroup/providers/Microsoft.ContainerService/managedClusters/$aksclusterDopo aver identificato l'istanza, recuperare il punto di ripristino pertinente.
az dataprotection recovery-point list --backup-instance-name $backupinstancename --resource-group $backupvaultresourcegroup --vault-name $backupvaultSe si vuole ripristinare i backup nell'area secondaria, usare il flag
--use-secondary-regionper identificare i punti di ripristino disponibili in tale area.az dataprotection recovery-point list --backup-instance-name $backupinstancename --resource-group $backupvaultresourcegroup --vault-name $backupvault --use-secondary-region true
Preparare la richiesta di ripristino
Per preparare la configurazione di ripristino che definisce gli elementi da ripristinare nel cluster AKS di destinazione, eseguire il comando 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
}
La configurazione di ripristino è costituita da elementi seguenti:
conflict_policy: durante un ripristino, se nel cluster esiste una risorsa con lo stesso nome del backup, è possibile scegliere come gestire il conflitto. Sono disponibili due opzioni: Ignora, che non ripristina l'elemento di backup o Aggiorna, che modifica i campi modificabili della risorsa nel cluster con la risorsa archiviata nel backup.excluded_namespace: è possibile elencare i namespace da escludere dal ripristino nel cluster. La risorsa sottostante a tali namespace non verrà ripristinata.excluded_resource_types: è possibile elencare i tipi di risorse da escludere dal ripristino nel cluster. I valori di input devono essere forniti come coppie chiave-valore nella tipologia di gruppo API.include_cluster_scope_resources: è possibile decidere se ripristinare le risorse con ambito cluster o meno impostando il valore su true o false.included_namespaces: è possibile elencare gli spazi dei nomi da includere solo come parte del ripristino nel cluster. Le risorse sottostanti a tali namespace devono essere ripristinate.excluded_resource_types: è possibile elencare i tipi di risorse da includere solo per il ripristino nel cluster. I valori di input devono essere forniti come coppie chiave-valore nella tipologia di gruppo API.label_selectors: è possibile selezionare le risorse da ripristinare con etichette specifiche. Il valore di input deve essere fornito come coppia chiave-valore.namespace_mappings: è possibile eseguire il mapping dello spazio dei nomi (e delle risorse sottostanti) a uno spazio dei nomi diverso nel cluster di destinazione. Se lo spazio dei nomi di destinazione non esiste nel cluster, viene creato un nuovo spazio dei nomi dall'estensione. Il valore di input deve essere fornito come coppia chiave-valore.object_type: Questa variabile specifica se la configurazione di ripristino è destinata a un punto di ripristino archiviato nel livello operativo o nel livello Vault. Se il punto di ripristino si trova nel livello operativo, impostare il valore su KubernetesClusterRestoreCriteria. Se il punto di ripristino si trova nel livello Vault o viene ripristinato in un'area secondaria, impostare il valore su KubernetesClusterVaultTierRestoreCriteria.persistent_volume_restore_mode: è possibile usare questa variabile per decidere se ripristinare o meno i volumi persistenti di cui è stato eseguito il backup. I valori accettati sono RestoreWithVolumeData, RestoreWithoutVolumeDataresource_modifier_reference: è possibile fare riferimento alla risorsa Modificatore di risorse distribuita nel cluster con questa variabile. Il valore di input è una coppia chiave-valore costituita dal namespace in cui è distribuita la risorsa e dal nome del file YAML.restore_hook_references: è possibile fare riferimento alla risorsa Restore Hook distribuita nel cluster con questa variabile. Il valore di input è una coppia chiave-valore costituita dal Namespace in cui è distribuita la risorsa e dal nome dei file YAML.staging_resource_group_id: Se si sta ripristinando un backup archiviato nel livello archivio, è necessario specificare l'ID di un gruppo di risorse come posizione di staging. In questo gruppo di risorse i volumi persistenti sottoposti a backup vengono idratati prima di essere ripristinati nel cluster di destinazione.staging_storage_account_id: nel caso in cui si stia ripristinando un backup archiviato nel livello dell'insieme di credenziali, è necessario fornire l'ID dell'account di archiviazione come posizione di gestione temporanea. In questo gruppo di risorse le risorse kubernetes di cui è stato eseguito il backup vengono idratate prima di essere ripristinate nel cluster di destinazione.
Preparare ora la richiesta di ripristino con tutti i dettagli pertinenti. Se si ripristina il backup nel cluster originale, eseguire il comando seguente:
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
Se il cluster AKS di destinazione per il ripristino è diverso dal cluster originale, eseguire il comando seguente:
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
Se il cluster di destinazione si trova in un'area secondaria, utilizzare il flag --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
Nota
Nel caso in cui si sia selezionato un punto di ripristino dal livello dell'insieme di credenziali in cui --source-datastore è VaultStore, specificare un account di archiviazione e un gruppo di risorse per gli snapshot nella configurazione di ripristino.
Nel caso in cui si stia tentando di eseguire il ripristino nel cluster nell'area secondaria, impostare il flag --restore-location come nome dell'area secondaria e --source-datastore come VaultStore.
È ora possibile aggiornare l'oggetto JSON in base ai requisiti e quindi convalidare l'oggetto eseguendo il comando seguente:
az dataprotection backup-instance validate-for-restore --backup-instance-name $backupinstancename --resource-group $backupvaultresourcegroup --restore-request-object restorerequestobject.json --vault-name $backupvault
Se il cluster di destinazione si trova in un'area secondaria, utilizzare il flag --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
Questo comando verifica se il cluster AKS e il Backup Vault dispongono dei ruoli necessari su diverse risorse necessarie per eseguire il ripristino. Se la convalida non riesce a causa di ruoli mancanti, è possibile assegnarli eseguendo il comando seguente:
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
Nota
Durante l'operazione di ripristino, l'insieme di credenziali di Backup e il cluster del servizio Azure Kubernetes devono avere determinati ruoli assegnati per eseguire il ripristino:
- Il cluster AKS di destinazione deve avere il ruolo Contributor sul Gruppo di risorse snapshot.
- L'Identità Utente collegata all'Estensione di Backup dovrebbe avere i ruoli di Contributore di Dati Blob di Stoccaggiosull'account di archiviazione dove sono archiviati i backup nel caso di Operational Tier e sull'account di staging storage nel caso di Vault Tier.
- L'insieme di credenziali di Backup deve avere il ruolo Lettore nel cluster del servizio Azure Kubernetes di destinazione e nel gruppo di risorse snapshot in caso di ripristino dal livello operativo.
- Il Backup vault deve avere il ruolo Collaboratore nel Staging Resource Group in caso di ripristino di un backup dal livello Vault.
- L'insieme di credenziali di Backup deve avere i ruoli Collaboratore dell'account di archiviazione e Proprietario dei dati BLOB di archiviazione nell'account di archiviazione di gestione temporanea in caso di ripristino di un backup dal livello dell'insieme di credenziali.
Attivare il processo di ripristino
Al termine dell'assegnazione di ruolo, è necessario convalidare l'oggetto di ripristino ancora una volta. Successivamente, è possibile attivare un'operazione di ripristino eseguendo il comando seguente:
az dataprotection backup-instance restore trigger --backup-instance-name $backupinstancename --restore-request-object restorerequestobject.json
Se il cluster di destinazione si trova in un'area secondaria, utilizzare il flag --use-secondary-region.
az dataprotection backup-instance restore trigger --backup-instance-name $backupinstancename --restore-request-object restorerequestobject.json --use-secondary-region true
Nota
Le risorse idratate nel gruppo di risorse di gestione temporanea e nell'account di archiviazione non vengono pulite automaticamente dopo il completamento del processo di ripristino e devono essere eliminate manualmente.
Tracciamento del processo
È possibile tenere traccia dei processi di ripristino usando il az dataprotection job comando . È possibile elencare tutti i processi e recuperare un dettaglio specifico di un processo.
Puoi anche usare Resource Graph per tenere traccia di tutti i processi in tutte le sottoscrizioni, i gruppi di risorse e i Backup vault. Usare il comando az dataprotection job list-from-resourcegraph per ottenere il processo pertinente.
az dataprotection job list-from-resourcegraph --datasource-type AzureKubernetesService --datasource-id /subscriptions/$subscriptionId/resourceGroups/$aksclusterresourcegroup/providers/Microsoft.ContainerService/managedClusters/$akscluster --operation Restore