Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описывается, как восстановить кластер Azure Kubernetes из точки восстановления, созданной Azure Backup с помощью Azure CLI. Вы также можете восстановить кластер AKS с помощью Azure PowerShell.
Azure Backup теперь позволяет создавать резервные копии кластеров AKS (ресурсы кластера и постоянные тома, подключенные к кластеру) с помощью расширения резервного копирования, которое должно быть установлено в кластере. Хранилище резервных копий взаимодействует с кластером с помощью этого расширения резервного копирования для выполнения операций резервного копирования и восстановления.
Вы можете выполнять как Original-Location Recovery (OLR) (восстановление в кластере AKS, для которого была создана резервная копия), так и Alternate-Location Recovery (ALR) (восстановление в другом кластере AKS). Вы также можете выбрать элементы для восстановления из резервной копии Item-Level Recovery (ILR).
Замечание
Прежде чем начать операцию восстановления, в целевом кластере должно быть установлено расширение резервного копирования и включен доверенный доступ к хранилищу службы архивации. Подробнее.
Перед началом работы
Прежде чем начать восстановление кластера AKS, ознакомьтесь со следующими сведениями:
Резервное копирование AKS позволяет восстановить исходный кластер AKS (который был создан) и в альтернативный кластер AKS. Резервное копирование AKS позволяет выполнять полное восстановление и восстановление на уровне элементов. Конфигурации восстановления можно использовать для определения параметров на основе восстановленных ресурсов кластера.
Необходимо установить расширение резервного копирования в целевом кластере AKS. Кроме того, необходимо включить доверенный доступ между хранилищем резервного копирования и кластером AKS.
Если целевая версия кластера AKS отличается от версии, используемой во время резервного копирования, операция восстановления может завершиться ошибкой или с предупреждениями для различных сценариев, таких как устаревшие ресурсы в новой версии кластера. При восстановлении с уровня Vault можно использовать гидратированные ресурсы в промежуточном расположении для восстановления ресурсов приложения в целевой кластер.
Дополнительные сведения об ограничениях и поддерживаемых сценариях см. в матрице поддержки.
Проверка и подготовка целевого кластера AKS
Прежде чем начать процесс восстановления, необходимо убедиться, что кластер AKS готов к восстановлению. Он включает в себя расширение резервного копирования, которое должно быть установлено с расширением с разрешением на учетную запись хранения, в которой хранятся или увлажняются резервные копии с включенным доверенным доступом между целевым кластером AKS и хранилищем службы архивации.
Чтобы проверить и подготовить кластер AKS к восстановлению, выполните следующие команды:
Проверьте, установлено ли в кластере Backup Extension.
az k8s-extension show --name azure-aks-backup --cluster-type managedClusters --cluster-name $targetakscluster --resource-group $aksclusterresourcegroupЕсли расширение установлено, проверьте, есть ли у него необходимые разрешения для учетной записи хранения, в которой хранятся резервные копии.
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)Если роль не назначена, назначьте ее.
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Если расширение резервного копирования не установлено, выполните следующую команду установки расширения с учетной записью хранения и контейнером BLOB-объектов, где резервные копии хранятся в качестве входных данных.
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Назначьте необходимую роль добавочному модулю в учетной записи хранения.
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
Проверьте доверенный доступ
Чтобы проверить, включен ли доверенный доступ между хранилищем службы архивации и целевым кластером AKS, выполните следующую команду:
az aks trustedaccess rolebinding list --resource-group $aksclusterresourcegroup --cluster-name $targetakscluster
Если нет, то доверенный доступ можно включить с помощью следующей команды:
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
Восстановление в кластер AKS
Сведения о восстановлении в кластере AKS см. в следующих разделах.
Получите соответствующую точку восстановления
Чтобы получить соответствующую точку восстановления, выполните следующие команды:
Получите все экземпляры, связанные с кластером AKS, и определите соответствующий экземпляр.
az dataprotection backup-instance list-from-resourcegraph --datasource-type AzureKubernetesService --datasource-id /subscriptions/$subscriptionId/resourceGroups/$aksclusterresourcegroup/providers/Microsoft.ContainerService/managedClusters/$aksclusterПосле идентификации экземпляра получите соответствующую точку восстановления.
az dataprotection recovery-point list --backup-instance-name $backupinstancename --resource-group $backupvaultresourcegroup --vault-name $backupvaultЕсли вы хотите восстановить резервные копии в дополнительном регионе, используйте флаг
--use-secondary-region, чтобы определить точки восстановления, доступные в этом регионе.az dataprotection recovery-point list --backup-instance-name $backupinstancename --resource-group $backupvaultresourcegroup --vault-name $backupvault --use-secondary-region true
Подготовка запроса на восстановление
Чтобы подготовить конфигурацию восстановления, определяющую элементы, которые должны быть восстановлены в целевом кластере AKS, выполните 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
}
Конфигурация восстановления состоит из следующих элементов:
conflict_policyЕсли во время восстановления в кластере существует ресурс с тем же именем, что и в резервной копии, можно выбрать способ обработки конфликта. У вас есть два варианта: Пропустить, который не восстановит элемент резервной копии, или Обновить, который изменяет изменяемые поля внутрикластерного ресурса с помощью ресурса, хранящегося в резервной копии.excluded_namespaceВы можете перечислить пространства имен, которые будут исключены из восстановления в кластере. Ресурс, лежащий в основе этих пространств имен, не будет восстановлен.excluded_resource_typesВы можете перечислить типы ресурсов, которые будут исключены из восстановления в кластере. Значения во входных данных должны быть предоставлены в виде типа группы API в качестве пары ключ-значение.include_cluster_scope_resourcesВы можете решить, хотите ли вы восстановить ресурсы области кластера или нет, установив значение true или false.included_namespaces: Вы можете перечислить пространства имен, которые будут включены только в рамках восстановления кластера. Ресурс, лежащий в основе этих пространств имен, должен быть восстановлен.excluded_resource_types: Вы можете перечислить типы ресурсов, которые будут включены в кластер только для восстановления. Значения во входных данных должны быть предоставлены в виде типа группы API в качестве пары ключ-значение.label_selectors: Вы можете выбрать ресурсы для восстановления с определенными метками в них. Входное значение должно быть предоставлено в виде пары ключ-значение.namespace_mappingsВы можете сопоставить пространство имен (и базовые ресурсы) с другим пространством имен в целевом кластере. Если целевое пространство имен не существует в кластере, расширением создается новое пространство имен. Входное значение должно быть предоставлено в виде пары ключ-значение.object_type: Эта переменная указывает, предназначена ли конфигурация восстановления для точки восстановления, хранящейся на рабочем уровне или на уровне хранилища. Если точка восстановления находится на операционном уровне, задайте значение KubernetesClusterRestoreCriteria. Если точка восстановления находится на уровне хранилища или восстанавливается в дополнительном регионе, задайте значение KubernetesClusterVaultTierRestoreCriteria.persistent_volume_restore_mode: Вы можете использовать эту переменную, чтобы решить, хотите ли вы восстановить резервные копии постоянных томов или нет. Допустимые значения: RestoreWithVolumeData, RestoreWithoutVolumeDataresource_modifier_reference: вы можете ссылаться на ресурс Resource Modifier, развернутый в кластере, с помощью этой переменной. Входное значение — это пара ключ-значение пространства имен, в котором развернут ресурс, и имени файла yaml.restore_hook_references: вы можете ссылаться на ресурс Restore Hook, развернутый в кластере, с этой переменной. Входное значение — это пара ключ-значений пространства имен, в котором развернут ресурс, и имени файлов yaml.staging_resource_group_idЕсли вы восстанавливаете резервную копию, хранящуюся на уровне хранилища, необходимо указать идентификатор группы ресурсов в качестве промежуточного расположения. В этой группе ресурсов резервные копии постоянных томов увлажняются перед восстановлением в целевой кластер.staging_storage_account_idЕсли вы восстанавливаете резервную копию, хранящуюся на уровне хранилища, необходимо указать идентификатор учетной записи хранения в качестве промежуточного расположения. В этой группе ресурсов резервные копии ресурсов Kubernetes увлажняются перед восстановлением в целевой кластер.
Теперь подготовьте запрос на восстановление со всеми соответствующими деталями. Если вы восстанавливаете резервную копию в исходный кластер, выполните следующую команду:
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
Если целевой кластер AKS для восстановления отличается от исходного, выполните следующую команду:
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
Если целевой кластер находится во вторичном регионе, то используйте флаг --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
Замечание
Если вы выбрали точку восстановления на уровне хранилища с помощью --source-datastore as VaultStore, укажите учетную запись хранения и группу ресурсов моментального снимка в конфигурации восстановления.
Если вы пытаетесь восстановить кластер в дополнительном регионе, установите флаг --restore-location в качестве имени дополнительного региона и --source-datastore в качестве VaultStore.
Теперь вы можете обновить объект JSON в соответствии со своими требованиями, а затем проверить объект, выполнив следующую команду:
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.
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
Эта команда проверяет, есть ли у кластера и хранилища архива AKS необходимые роли на различных ресурсах, необходимых для выполнения восстановления. Если проверка не проходит из-за отсутствия ролей, их можно назначить, выполнив следующую команду:
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
Замечание
Во время операции восстановления хранилищу службы архивации и кластеру AKS должны быть назначены определенные роли для выполнения восстановления:
- Целевой кластер AKS должен иметь роль участника в группе ресурсов моментальных снимков.
- Удостоверение пользователя, подключенное к расширению резервного копирования, должно иметь роли участника данных BLOB-объектов хранилища в учетной записи хранения, в которой хранятся резервные копии в случае операционного уровня, и в *промежуточной учетной записи хранения в случае уровня хранилища.
- Хранилище службы архивации должно иметь роль читателя в целевом кластере AKS и группе ресурсов моментальных снимков в случае восстановления с операционного уровня.
- В случае восстановления резервной копии с уровня хранилища хранилище должно иметь роль участника в группе промежуточных ресурсов.
- В случае восстановления резервной копии с уровня хранилища в хранилище должны быть роли участника учетной записи хранения и владельца данных BLOB-объектов хранилища в промежуточной учетной записи хранения .
Запуск процесса восстановления
После завершения назначения ролей необходимо еще раз проверить объект восстановления. После этого вы можете активировать операцию восстановления, выполнив следующую команду:
az dataprotection backup-instance restore trigger --backup-instance-name $backupinstancename --restore-request-object restorerequestobject.json
Если целевой кластер находится во вторичном регионе, то используйте флаг --use-secondary-region.
az dataprotection backup-instance restore trigger --backup-instance-name $backupinstancename --restore-request-object restorerequestobject.json --use-secondary-region true
Замечание
Ресурсы, увлажненные в промежуточной группе ресурсов и учетной записи хранения, не очищаются автоматически после завершения задания восстановления и должны быть удалены вручную.
Отслеживание заданий
Задания восстановления можно отслеживать с помощью az dataprotection job команды. Можно вывести список всех заданий и получить сведения о конкретном задании.
Вы также можете использовать Resource Graph для отслеживания всех заданий во всех подписках, группах ресурсов и хранилищах службы архивации. Используйте команду для az dataprotection job list-from-resourcegraph получения нужного задания.
az dataprotection job list-from-resourcegraph --datasource-type AzureKubernetesService --datasource-id /subscriptions/$subscriptionId/resourceGroups/$aksclusterresourcegroup/providers/Microsoft.ContainerService/managedClusters/$akscluster --operation Restore