Udostępnij za pomocą


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 odzyskiwanieOriginal-Location (OLR) (przywracanie w klastrze usługi AKS, którego kopia zapasowa została utworzona), jak i odzyskiwanieAlternate-Location (ALR) (przywracanie w innym klastrze usługi AKS). Można również wybrać elementy, które mają zostać przywrócone, z kopii zapasowej, która jest Item-Level funkcji Odzyskiwanie (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 usługi AKS zapoznaj się z następującymi szczegółami:

  • Tworzenie kopii zapasowej usługi AKS umożliwia przywracanie do oryginalnego klastra usługi AKS (kopii zapasowej) i do alternatywnego klastra usługi AKS. Kopia zapasowa usługi AKS umożliwia wykonywanie pełnego przywracania i przywracania na poziomie elementu. Konfiguracje przywracania umożliwiają definiowanie parametrów na podstawie zasobów klastra, które mają zostać przywrócone.

  • Należy zainstalować rozszerzenie kopii zapasowej w docelowym klastrze usługi 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.

Weryfikowanie i przygotowywanie docelowego klastra usługi AKS

Przed zainicjowaniem procesu przywracania należy sprawdzić, czy klaster usługi AKS jest przygotowany do przywracania. Obejmuje rozszerzenie kopii zapasowej, które ma zostać zainstalowane z rozszerzeniem mającym uprawnienie do konta magazynu, na którym kopie zapasowe są przechowywane/nawilżane z włączonym zaufanym dostępem między docelowym klastrem usługi AKS a magazynem kopii zapasowych.

Aby zweryfikować i przygotować klaster usługi 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 Account Contributor'  --scope /subscriptions/$subscriptionId/resourceGroups/$storageaccountresourcegroup/providers/Microsoft.Storage/storageAccounts/$storageaccount
    
    
  4. Jeśli rozszerzenie kopii zapasowej nie jest zainstalowane, uruchom następujące polecenie instalacji rozszerzenia z kontem magazynu i kontenerem obiektów blob, w którym kopie zapasowe są przechowywane jako dane wejściowe.

    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 wymaganą rolę do rozszerzenia 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

Przywracanie do klastra usługi AKS

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

Pobierz odpowiedni punkt odzyskiwania

Aby pobrać odpowiedni punkt odzyskiwania, 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ć jako rodzaj grupy interfejsu API jako parę klucz-wartość.

  • label_selectors: Możesz wybrać zasoby do przywrócenia z określonymi etykietami w nich. Wartość wejściową należy podać jako parę 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ć jako parę klucz-wartość.

  • object_type: Ta zmienna określa, czy konfiguracja przywracania jest przeznaczona dla punktu odzyskiwania przechowywanego w Warstwie Operacyjnej, czy w Warstwie Magazynu. 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 należy podać identyfikator grupy zasobów jako lokalizację przejściową. 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 należy podać identyfikator konta magazynu jako lokalizację przejściową. 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 usługi 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

W przypadku wybrania punktu odzyskiwania z warstwy magazynu z --source-datastore jako VaultStore podaj konto magazynu i grupę zasobów migawek w konfiguracji przywracania.

Jeśli próbujesz przywrócić do klastra w regionie pomocniczym, ustaw flagę --restore-location jako nazwę regionu pomocniczego i --source-datastore jako 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 kopii zapasowej powinna mieć role współautora danych obiektu blob usługi Storage na koncie magazynu, na którym są przechowywane kopie zapasowe w przypadku warstwy operacyjnej, i 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ć rolę współautora konta magazynu i właściciela danych obiektu blob usługi Storage na koncie magazynu przejściowego w przypadku przywracania kopii zapasowej z warstwy magazynu.

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 wypełnione w przejściowej grupie zasobów i koncie magazynu nie są automatycznie czyszczone 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 pobrać 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