Przywracanie usługi Azure Kubernetes Service przy użyciu interfejsu wiersza polecenia platformy Azure
W tym artykule opisano sposób przywracania klastra Usługi Azure Kubernetes z punktu przywracania utworzonego przez usługę Azure Backup przy użyciu interfejsu wiersza polecenia platformy Azure.
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 kopii zapasowej w celu wykonywania operacji tworzenia kopii zapasowych i przywracania.
Odzyskiwanie oryginalnej lokalizacji (OLR) ( przywracanie w klastrze usługi AKS, którego kopia zapasowa została utworzona) i odzyskiwanie alternatywnej lokalizacji (ALR) (przywracanie w innym klastrze usługi AKS). Możesz również wybrać elementy do przywrócenia z kopii zapasowej, która jest odzyskiwaniem na poziomie elementu (ILR).
Uwaga
Przed zainicjowaniem operacji przywracania klaster docelowy powinien mieć zainstalowane rozszerzenie kopii zapasowej i włączony zaufany dostęp dla magazynu kopii zapasowych. Dowiedz się więcej.
Przed rozpoczęciem
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 Magazynu można użyć nawodnionych 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 przywrócenia. Obejmuje to rozszerzenie kopii zapasowej, które ma zostać zainstalowane z rozszerzeniem z uprawnieniem na koncie magazynu, na którym są przechowywane/nawodnione kopie zapasowe z włączonym zaufanym dostępem między docelowym klastrem usługi AKS i magazynem kopii zapasowych.
Najpierw sprawdź, czy rozszerzenie kopii zapasowej jest zainstalowane w klastrze, uruchamiając następujące polecenie:
az k8s-extension show --name azure-aks-backup --cluster-type managedClusters --cluster-name $targetakscluster --resource-group $aksclusterresourcegroup
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)
Jeśli rola nie jest przypisana, możesz przypisać rolę, uruchamiając następujące polecenie:
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
Jeśli rozszerzenie kopii zapasowej nie jest zainstalowane, uruchom następujące polecenie instalacji rozszerzenia przy użyciu konta magazynu i kontenera 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
Następnie przypisz wymaganą rolę do rozszerzenia na koncie magazynu, uruchamiając następujące polecenie:
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 i 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
Pobieranie odpowiedniego punktu odzyskiwania
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
Po zidentyfikowaniu wystąpienia pobierz odpowiedni punkt odzyskiwania.
az dataprotection recovery-point list --backup-instance-name $backupinstancename --resource-group $backupvaultresourcegroup --vault-name $backupvault
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
Przygotowywanie żądania przywracania
Aby przygotować konfigurację przywracania definiującą elementy do przywrócenia 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
: Podczas przywracania, jeśli w klastrze istnieje zasób o takiej samej nazwie, jak w kopii zapasowej, możesz wybrać sposób obsługi konfliktu. Dostępne są dwie opcje: Pomiń, co nie spowoduje przywrócenia elementu kopii zapasowej lub aktualizacji, co modyfikuje pola modyfikowalne zasobu w klastrze przy użyciu zasobu przechowywanego w kopii zapasowej.excluded_namespace
: Możesz wyświetlić listę przestrzeni nazw, które mają zostać wykluczone z przywrócenia 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 powinny być podane jako rodzaj grupy interfejsu API jako para wartości klucza.include_cluster_scope_resources
: Możesz zdecydować, czy chcesz przywrócić zasoby w zakresie klastra, czy nie, ustawiając wartość na wartość true lub false.included_namespaces
: Można wyświetlić listę przestrzeni nazw, które mają być uwzględniane tylko w ramach przywracania do klastra. Zasób bazowy tych przestrzeni nazw ma zostać przywrócony.excluded_resource_types
: Można 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 powinny być podane jako rodzaj grupy interfejsu API jako para wartości klucza.label_selectors
: Możesz wybrać zasoby, które mają zostać przywrócone z określonymi etykietami. Wartość wejściowa powinna być podana jako para klucz-wartość.namespace_mappings
: Przestrzeń nazw (i zasoby bazowe) można mapować na inną przestrzeń nazw w klastrze docelowym. Jeśli docelowa przestrzeń nazw nie istnieje w klastrze, zostanie utworzona nowa przestrzeń nazw przez rozszerzenie. Wartość wejściowa powinna być podana jako para klucz-wartość.persistent_volume_restore_mode
: Możesz użyć tej zmiennej, aby zdecydować, czy chcesz przywrócić kopię zapasową trwałych woluminów, czy nie. Akceptowane wartości to RestoreWithVolumeData, RestoreWithoutVolumeDataresource_modifier_reference
: Zasób modyfikatora zasobów wdrożony w klastrze można odwołać za pomocą tej zmiennej. Wartość wejściowa to para wartości klucza przestrzeni nazw, w której wdrożono zasób, oraz nazwę pliku yaml.restore_hook_references
: Zasób Restore Hook wdrożony w klastrze za pomocą tej zmiennej można odwołać. Wartość wejściowa to para klucz-wartość przestrzeni nazw, w której wdrożono zasób, oraz nazwę plików yaml.staging_resource_group_id
: Jeśli przywracasz kopię zapasową przechowywaną w warstwie magazynu, musisz podać identyfikator grupy zasobów jako lokalizację tymczasową. W tej grupie zasobów kopie zapasowe woluminów trwałych są nawodnione przed przywróceniem do klastra docelowego.staging_storage_account_id
: Jeśli przywracasz kopię zapasową przechowywaną w warstwie magazynu, musisz podać identyfikator konta magazynu jako lokalizację tymczasową. W tej grupie zasobów kopie zapasowe zasobów kubernetes są nawodnione przed przywróceniem do klastra docelowego.
Teraz przygotuj żądanie przywrócenia ze wszystkimi odpowiednimi 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 przywracania 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
Uwaga
W przypadku wybrania punktu odzyskiwania z warstwy magazynu z wartością --source-datastore
VaultStore podaj konto magazynu i grupę zasobów migawki w konfiguracji przywracania.
Jeśli próbujesz przywrócić klaster 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
To polecenie sprawdza, czy klaster usługi AKS i magazyn kopii zapasowych mają wymagane role w innym zasobie potrzebnym do wykonania przywracania. Jeśli walidacja nie powiedzie się z powodu braku 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
Podczas operacji przywracania magazyn kopii zapasowych i klaster usługi AKS muszą mieć przypisane określone role w celu wykonania przywracania:
- Docelowy klaster usługi AKS powinien mieć rolę Współautor w grupie zasobów migawki.
- Tożsamość użytkownika dołączona do rozszerzenia kopii zapasowej powinna mieć role Współautor danych obiektu blob magazynu na koncie magazynu, na którym są przechowywane kopie zapasowe w przypadku warstwy operacyjnej i na koncie magazynu przejściowego w przypadku warstwy magazynu.
- Magazyn kopii zapasowych powinien mieć rolę Czytelnik w docelowym klastrze usługi AKS i grupie zasobów migawki w przypadku przywracania z warstwy operacyjnej.
- Magazyn kopii zapasowych powinien mieć rolę Współautor w tymczasowej grupie zasobów w przypadku przywracania kopii zapasowej z warstwy magazynu.
- Magazyn kopii zapasowych powinien mieć rolę Współautor konta magazynu i Właściciel danych obiektu blob magazynu w grupie zasobów przejściowych w przypadku przywracania kopii zapasowej z warstwy magazynu.
Wyzwalanie przywracania
Po zakończeniu przypisywania roli należy ponownie zweryfikować obiekt przywracania. Następnie można wyzwolić operację przywracania, uruchamiając następujące polecenie:
az dataprotection backup-instance restore trigger --backup-instance-name $backupinstancename --restore-request-object restorerequestobject.json
Uwaga
Zasoby nawodnione w przejściowej grupie zasobów i koncie magazynu nie są automatycznie czyszczone po zakończeniu zadania przywracania i mają zostać usunięte 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.
Możesz również użyć usługi Resource Graph do śledzenia wszystkich zadań 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