Przywracanie Azure Kubernetes Service przy użyciu interfejsu wiersza polecenia platformy Azure

W tym artykule opisano sposób przywracania klastra Azure Kubernetes z punktu przywracania utworzonego przez Azure Backup przy użyciu interfejsu wiersza polecenia platformy Azure. Klaster usługi AKS można również przywrócić przy użyciu programu Azure PowerShell.

Usługa Azure Backup umożliwia teraz tworzenie kopii zapasowych klastrów usługi AKS (zasobów klastra i trwałych woluminów dołączonych do klastra) przy użyciu rozszerzenia kopii zapasowej, które należy zainstalować w klastrze. Magazyn kopii zapasowych komunikuje się z klastrem za pośrednictwem tego rozszerzenia do kopii zapasowych, aby wykonywać operacje tworzenia kopii zapasowych i ich przywracania.

Można wykonać zarówno odzyskiwanie w oryginalnej lokalizacji (OLR) (przywracanie w klastrze AKS, dla którego utworzono kopię zapasową), jak i odzyskiwanie w lokalizacji alternatywnej (ALR) (przywracanie w innym klastrze AKS). Można również wybrać elementy do przywrócenia z kopii zapasowej typu Item-Level Recovery (ILR).

Uwaga / Notatka

Przed zainicjowaniem operacji przywracania w klastrze docelowym powinno być zainstalowane rozszerzenie kopii zapasowej i włączony zaufany dostęp dla magazynu kopii zapasowych. Dowiedz się więcej.

Zanim zaczniesz

Przed rozpoczęciem przywracania klastra AKS zapoznaj się z następującymi informacjami:

  • Kopia zapasowa AKS umożliwia przywrócenie do oryginalnego klastra AKS (którego kopię zapasową utworzono) oraz do alternatywnego klastra AKS. Funkcja tworzenia kopii zapasowych usługi AKS umożliwia pełne przywracanie oraz przywracanie poszczególnych elementów. Konfiguracje przywracania umożliwiają definiowanie parametrów na podstawie zasobów klastra, które mają zostać przywrócone.

  • Należy zainstalować rozszerzenie Backup w docelowym klastrze AKS. Ponadto należy włączyć zaufany dostęp między magazynem kopii zapasowych a klastrem usługi AKS.

  • Jeśli docelowa wersja klastra usługi AKS różni się od wersji używanej podczas tworzenia kopii zapasowej, operacja przywracania może zakończyć się niepowodzeniem lub zakończyć z ostrzeżeniami dla różnych scenariuszy, takich jak przestarzałe zasoby w nowszej wersji klastra. W przypadku przywracania z warstwy Vault można użyć uwodnionych zasobów w lokalizacji przejściowej, aby przywrócić zasoby aplikacji do klastra docelowego.

Aby uzyskać więcej informacji na temat ograniczeń i obsługiwanych scenariuszy, zobacz macierz obsługi.

Zweryfikuj i przygotuj docelowy klaster AKS

Przed zainicjowaniem procesu przywracania należy sprawdzić, czy klaster usługi AKS jest przygotowany do przywracania. Zawiera rozszerzenie Backup Extension, które należy zainstalować, przy czym rozszerzenie musi mieć uprawnienia do konta magazynowego, w którym kopie zapasowe są przechowywane/odtwarzane, a funkcja Trusted Access musi być włączona między docelowym klastrem AKS a magazynem kopii zapasowych.

Aby zweryfikować i przygotować klaster AKS do przywrócenia, uruchom następujące polecenia:

  1. Sprawdź, czy w klastrze jest zainstalowane rozszerzenie kopii zapasowej.

    az k8s-extension show --name azure-aks-backup --cluster-type managedClusters --cluster-name $targetakscluster --resource-group $aksclusterresourcegroup
    
  2. Jeśli rozszerzenie jest zainstalowane, sprawdź, czy ma odpowiednie uprawnienia na koncie magazynu, na którym są przechowywane kopie zapasowe.

    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. Jeśli rola nie jest przypisana, przypisz ją.

    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
    
    
  4. Jeśli rozszerzenie Backup nie jest zainstalowane, uruchom następujące polecenie instalacji rozszerzenia, podając jako dane wejściowe konto magazynu i kontener obiektów blob, w których są zapisane kopie zapasowe.

    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. Przypisz rozszerzeniu wymaganą rolę na koncie magazynu.

    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
    
    

Sprawdzanie zaufanego dostępu

Aby sprawdzić, czy zaufany dostęp jest włączony między magazynem kopii zapasowych a docelowym klastrem usługi AKS, uruchom następujące polecenie:

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

Jeśli nie, można włączyć zaufany dostęp za pomocą następującego polecenia:

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

Przywrócić do klastra AKS

Aby przywrócić do klastra AKS, zobacz następujące sekcje.

Pobierz odpowiedni punkt odzyskiwania

Aby pobrać odpowiedni punkt przywracania, uruchom następujące polecenia:

  1. Pobierz wszystkie wystąpienia skojarzone z klastrem usługi AKS i zidentyfikuj odpowiednie wystąpienie.

    az dataprotection backup-instance list-from-resourcegraph --datasource-type AzureKubernetesService --datasource-id /subscriptions/$subscriptionId/resourceGroups/$aksclusterresourcegroup/providers/Microsoft.ContainerService/managedClusters/$akscluster 
    
    
  2. Po zidentyfikowaniu wystąpienia pobierz odpowiedni punkt odzyskiwania.

    az dataprotection recovery-point list --backup-instance-name $backupinstancename --resource-group $backupvaultresourcegroup --vault-name $backupvault
    
    
  3. Jeśli chcesz przywrócić kopie zapasowe do regionu pomocniczego, użyj flagi --use-secondary-region , aby zidentyfikować punkty odzyskiwania dostępne w tym regionie.

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

Przygotuj żądanie przywrócenia

Aby przygotować konfigurację przywracania definiującą elementy, które mają zostać przywrócone do docelowego klastra usługi AKS, uruchom az dataprotection backup-instance initialize-restoreconfig polecenie.

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
}

Konfiguracja przywracania składa się z następujących elementów:

  • conflict_policy: Jeśli podczas przywracania w klastrze istnieje zasób o takiej samej nazwie jak w kopii zapasowej, można wybrać sposób obsługi konfliktu. Dostępne są dwie opcje: Pomiń, co nie spowoduje przywrócenia elementu kopii zapasowej, lub Aktualizuj, która modyfikuje modyfikowalne pola zasobu w klastrze przy użyciu zasobu przechowywanego w kopii zapasowej.

  • excluded_namespace: Można wyświetlić listę przestrzeni nazw, które mają zostać wykluczone z przywracania do klastra. Zasób bazowy tych przestrzeni nazw nie zostanie przywrócony.

  • excluded_resource_types: Można wyświetlić listę typów zasobów, które mają zostać wykluczone z przywracania do klastra. Wartości w danych wejściowych należy podać jako rodzaj grupy interfejsu API jako parę klucz-wartość.

  • include_cluster_scope_resources: Możesz zdecydować, czy chcesz przywrócić zasoby o zakresie klastra, czy nie, ustawiając wartość na true lub false.

  • included_namespaces : Można wyświetlić listę przestrzeni nazw, które mają być uwzględniane tylko w ramach przywracania do klastra. Zasoby bazowe tych przestrzeni nazw mają zostać przywrócone.

  • excluded_resource_types: Możesz wyświetlić listę typów zasobów, które mają być uwzględniane tylko w celu przywrócenia do klastra. Wartości w danych wejściowych należy podać w postaci pary klucz-wartość, gdzie kluczem jest API Group Kind.

  • label_selectors: Możesz wybrać do przywrócenia zasoby oznaczone określonymi etykietami. Wartość wejściowa powinna zostać podana jako para klucz-wartość.

  • namespace_mappings: Przestrzeń nazw (i zasoby bazowe) można zamapować na inną przestrzeń nazw w klastrze docelowym. Jeśli docelowa przestrzeń nazw nie istnieje w klastrze, rozszerzenie utworzy nową przestrzeń nazw. Wartość wejściową należy podać w postaci pary klucz-wartość.

  • object_type: Ta zmienna określa, czy konfiguracja przywracania dotyczy punktu odzyskiwania przechowywanego w warstwie Operational Tier czy w warstwie Vault Tier. Jeśli punkt odzyskiwania znajduje się w warstwie operacyjnej, ustaw wartość na KubernetesClusterRestoreCriteria. Jeśli punkt odzyskiwania znajduje się w warstwie magazynu lub jest przywracany do regionu pomocniczego, ustaw wartość na KubernetesClusterVaultTierRestoreCriteria.

  • persistent_volume_restore_mode: Możesz użyć tej zmiennej, aby zdecydować, czy chcesz przywrócić woluminy trwałe, których kopia zapasowa została utworzona, czy nie. Akceptowane wartości to RestoreWithVolumeData, RestoreWithoutVolumeData

  • resource_modifier_reference: Za pomocą tej zmiennej można odwołać się do zasobu modyfikatora zasobów wdrożonego w klastrze. Wartość wejściowa to para klucz-wartość przestrzeni nazw, w której wdrożono zasób, oraz nazwa pliku yaml.

  • restore_hook_references: Za pomocą tej zmiennej można odwołać się do zasobu Restore Hook wdrożonego w klastrze. Wartość wejściowa to para klucz-wartość przestrzeni nazw, w której wdrożono zasób, oraz nazwa plików yaml.

  • staging_resource_group_id: W przypadku przywracania kopii zapasowej przechowywanej w warstwie magazynu typu Vault należy podać identyfikator grupy zasobów jako lokalizację tymczasową. W tej grupie zasobów woluminy trwałe, których kopia zapasowa została utworzona, są nawodnione przed przywróceniem do klastra docelowego.

  • staging_storage_account_id: W przypadku przywracania kopii zapasowej przechowywanej w warstwie magazynu typu vault należy podać identyfikator konta magazynu jako lokalizację tymczasową. W tej grupie zasobów zasoby kubernetes, których kopia zapasowa została utworzona, są nawodnione przed przywróceniem do klastra docelowego.

Teraz przygotuj żądanie przywrócenia ze wszystkimi istotnymi szczegółami. Jeśli przywracasz kopię zapasową do oryginalnego klastra, uruchom następujące polecenie:

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

Jeśli docelowy klaster AKS do przywrócenia różni się od oryginalnego klastra, uruchom następujące polecenie:

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

Jeśli klaster docelowy znajduje się w regionie pomocniczym, użyj flagi --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

Uwaga / Notatka

Jeśli wybierzesz punkt odzyskiwania z warstwy magazynu, w której --source-datastore to VaultStore, podaj konto magazynowe i grupę zasobów dla migawek w konfiguracji przywracania.

Jeśli próbujesz przywrócić dane do klastra w regionie wtórnym, ustaw flagę --restore-location na nazwę regionu wtórnego, a flagę --source-datastore na VaultStore.

Teraz możesz zaktualizować obiekt JSON zgodnie z wymaganiami, a następnie zweryfikować obiekt, uruchamiając następujące polecenie:

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

Jeśli klaster docelowy znajduje się w regionie pomocniczym, użyj flagi --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

To polecenie sprawdza, czy klaster usługi AKS i magazyn kopii zapasowych mają wymagane role w różnych zasobach potrzebnych do przeprowadzenia przywracania. Jeśli walidacja zakończy się niepowodzeniem z powodu brakujących ról, możesz je przypisać, uruchamiając następujące polecenie:

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

Uwaga / Notatka

Podczas operacji przywracania magazyn kopii zapasowych i klaster usługi AKS muszą mieć przypisane określone role do wykonania przywracania:

  • Docelowy klaster usługi AKS powinien mieć rolę Współautor w grupie zasobów migawek.
  • Tożsamość użytkownika dołączona do rozszerzenia Kopia zapasowa powinna mieć rolę Storage Blob Data Contributor na koncie magazynu, w którym są przechowywane kopie zapasowe w przypadku warstwy operacyjnej, oraz na przejściowym koncie magazynu w przypadku warstwy magazynu.
  • Magazyn kopii zapasowych powinien mieć rolę Czytelnik w docelowym klastrze usługi AKS i grupie zasobów migawek w przypadku przywracania z warstwy operacyjnej.
  • Magazyn kopii zapasowych powinien mieć rolę współautora w przejściowej grupie zasobów w przypadku przywracania kopii zapasowej z warstwy magazynu.
  • Magazyn kopii zapasowych powinien mieć przypisaną rolę Współautor konta magazynu oraz Właściciel danych obiektów blob magazynu na koncie magazynu przejściowego w przypadku przywracania kopii zapasowej z warstwy magazynu kopii zapasowych.

Rozpocznij przywracanie

Po zakończeniu przypisywania roli należy ponownie zweryfikować obiekt przywracania. Następnie możesz wyzwolić operację przywracania, uruchamiając następujące polecenie:

az dataprotection backup-instance restore trigger --backup-instance-name $backupinstancename --restore-request-object restorerequestobject.json 

Jeśli klaster docelowy znajduje się w regionie pomocniczym, użyj flagi --use-secondary-region.

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

Uwaga / Notatka

Zasoby utworzone w tymczasowej grupie zasobów i na koncie magazynu danych nie są automatycznie usuwane po zakończeniu zadania przywracania i należy je usunąć ręcznie.

Zadanie śledzenia

Zadania przywracania można śledzić za pomocą az dataprotection job polecenia. Możesz wyświetlić listę wszystkich zadań i pobrać szczegóły określonego zadania.

Za pomocą wykresu zasobów można również śledzić wszystkie zadania we wszystkich subskrypcjach, grupach zasobów i magazynach kopii zapasowych. Użyj polecenia az dataprotection job list-from-resourcegraph, aby uzyskać odpowiednie zadanie.

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

Dalsze kroki