Резервное копирование Служба Azure Kubernetes с помощью Azure CLI
В этой статье описывается настройка и резервное копирование Служба Azure Kubernetes (AKS) с помощью Azure CLI.
Azure Backup теперь позволяет создавать резервные копии кластеров AKS (ресурсы кластера и постоянные тома, подключенные к кластеру) с помощью расширения резервного копирования, которое должно быть установлено в кластере. Хранилище резервных копий взаимодействует с кластером с помощью этого расширения резервного копирования для выполнения операций резервного копирования и восстановления.
Перед началом работы
В настоящее время резервное копирование AKS поддерживает только постоянные тома на основе дисков Azure (включено драйвером CSI). Резервные копии хранятся только в операционном хранилище данных (в клиенте) и не перемещаются в хранилище. Хранилище резервных копий и кластер AKS должны находиться в одном регионе.
Резервное копирование AKS использует контейнер BLOB-объектов и группу ресурсов для хранения резервных копий. Контейнер больших двоичных объектов содержит ресурсы кластера AKS, хранящиеся в нем, а моментальные снимки сохраняемого тома хранятся в группе ресурсов. Кластер AKS и расположения хранилища должны находиться в одном регионе. Узнайте, как создать контейнер больших двоичных объектов.
В настоящее время резервное копирование AKS поддерживает однодневное резервное копирование. Он также поддерживает более частые резервные копии (каждые 4, 8 и 12 часов интервалы) в день. Оно позволяет хранить данные для восстановления до 360 дней. Узнайте, как создать политику резервного копирования.
Чтобы настроить операции резервного копирования и восстановления в кластере AKS, необходимо установить расширение резервного копирования. Дополнительные сведения о расширении резервного копирования.
Перед началом операций резервного копирования и
TrustedAccessPreview
восстановления убедитесь, чтоMicrosoft.KubernetesConfiguration
Microsoft.DataProtection
флагMicrosoft.ContainerService
функции зарегистрирован для подписки.Перед запуском операции резервного копирования или восстановления для резервного копирования AKS необходимо выполнить все необходимые компоненты.
Дополнительные сведения о поддерживаемых сценариях, ограничениях и доступности см. в матрице поддержки.
создание хранилища Azure Backup;
Хранилище резервных копий — это сущность управления в Azure, в которой хранятся данные резервного копирования для различных новых рабочих нагрузок, поддерживаемых Azure Backup, таких как База данных Azure для PostgreSQL серверы и диски Azure. Они упрощают организацию данных резервного копирования и одновременно снижают накладные затраты на управление. Хранилища резервных копий основаны на модели Azure Resource Manager в экосистеме Azure, которая предоставляет расширенные возможности для защиты данных, резервная копия которых создается.
Перед созданием хранилища резервных копий выберите избыточность данных в хранилище, а затем создайте хранилище резервных копий с этой избыточностью хранилища и расположением. Дополнительные сведения о создании хранилища Azure Backup.
Примечание.
Хотя выбранное хранилище может иметь глобальный уровень избыточности , резервное копирование для AKS в настоящее время поддерживает только операционный уровень . Все резервные копии хранятся в подписке в том же регионе, что и кластер AKS, и они не копируются в хранилище хранилища резервных копий.
Чтобы создать хранилище резервных копий, выполните следующую команду:
az dataprotection backup-vault create --resource-group $backupvaultresourcegroup --vault-name $backupvault --location $region --type SystemAssigned --storage-settings datastore-type="VaultStore" type="LocallyRedundant"
После завершения создания хранилища создайте политику резервного копирования для защиты кластеров AKS.
создание политики архивации;
Чтобы понять внутренние компоненты политики резервного копирования для резервного копирования AKS, получите шаблон политики с помощью команды az dataprotection backup-policy get-default-policy-template
. Эта команда возвращает шаблон политики по умолчанию для заданного типа источника данных. Используйте этот шаблон политики для создания новой политики.
az dataprotection backup-policy get-default-policy-template --datasource-type AzureKubernetesService > akspolicy.json
{
"datasourceTypes": [
"Microsoft.ContainerService/managedClusters"
],
"name": "AKSPolicy1",
"objectType": "BackupPolicy",
"policyRules": [
{
"backupParameters": {
"backupType": "Incremental",
"objectType": "AzureBackupParams"
},
"dataStore": {
"dataStoreType": "OperationalStore",
"objectType": "DataStoreInfoBase"
},
"name": "BackupHourly",
"objectType": "AzureBackupRule",
"trigger": {
"objectType": "ScheduleBasedTriggerContext",
"schedule": {
"repeatingTimeIntervals": [
"R/2023-01-04T09:00:00+00:00/PT4H"
]
},
"taggingCriteria": [
{
"isDefault": true,
"tagInfo": {
"id": "Default_",
"tagName": "Default"
},
"taggingPriority": 99
}
]
}
},
{
"isDefault": true,
"lifecycles": [
{
"deleteAfter": {
"duration": "P7D",
"objectType": "AbsoluteDeleteOption"
},
"sourceDataStore": {
"dataStoreType": "OperationalStore",
"objectType": "DataStoreInfoBase"
}
}
],
"name": "Default",
"objectType": "AzureRetentionRule"
}
]
}
Шаблон политики состоит из условий триггера (которые определяют факторы для запуска задания резервного копирования) и жизненного цикла (который решает, когда следует удалять, копировать или перемещать резервные копии). В резервном копировании AKS значение по умолчанию для триггера — это запланированный почасовой триггер каждые 4 часа (PT4H), а срок хранения каждой резервной копии составляет 365 дней.
Scheduled trigger:
"trigger": {
"objectType": "ScheduleBasedTriggerContext",
"schedule": {
"repeatingTimeIntervals": [
"R/2023-01-04T09:00:00+00:00/PT4H"
]
},
Default retention lifecycle:
"lifecycles": [
{
"deleteAfter": {
"duration": "P7D",
"objectType": "AbsoluteDeleteOption"
},
"sourceDataStore": {
"dataStoreType": "OperationalStore",
"objectType": "DataStoreInfoBase"
}
}
],
Резервное копирование для AKS обеспечивает несколько резервных копий в день. Если требуется более частое резервное копирование, выберите частоту почасового резервного копирования, которая имеет возможность выполнять резервные копии с интервалами каждые 4, 6, 8 или 12 часов. Резервные копии запланированы на основе выбранного интервала времени.
Например, если выбрать каждые 4 часа, резервные копии выполняются примерно в интервале каждые 4 часа, чтобы резервные копии распределялись одинаково в течение дня. Если однодневное резервное копирование достаточно, выберите частоту ежедневного резервного копирования. В ежедневной частоте резервного копирования можно указать время дня, когда необходимо выполнить резервное копирование.
Внимание
Указываемое время суток обозначает время запуска резервного копирования, а не время, когда создание резервной копии будет завершено.
Примечание.
Хотя выбранное хранилище имеет глобальный параметр избыточности, резервное копирование для AKS в настоящее время поддерживает только хранилище данных моментальных снимков. Все резервные копии хранятся в группе ресурсов в подписке и не копируются в хранилище хранилища резервных копий.
После скачивания шаблона в виде JSON-файла его можно изменить для планирования и хранения по мере необходимости. Затем создайте новую политику с этим JSON-файлом. Если вы хотите изменить почасовую частоту или период хранения, используйте az dataprotection backup-policy trigger set
команды или az dataprotection backup-policy retention-rule set
команды. После того как json политики содержит все необходимые значения, перейдите к созданию новой политики из объекта политики с помощью az dataprotection backup-policy create
команды.
az dataprotection backup-policy create -g testBkpVaultRG --vault-name TestBkpVault -n mypolicy --policy policy.json
Подготовка кластера AKS к резервному копированию
После завершения создания хранилища и политики необходимо выполнить следующие предварительные требования для подготовки кластера AKS к резервному копированию:
Создайте учетную запись хранения и контейнер BLOB-объектов.
Резервное копирование для AKS сохраняет ресурсы Kubernetes в контейнере BLOB-объектов в качестве резервных копий. Чтобы подготовить кластер AKS к резервному копированию, необходимо установить расширение в кластере. Для этого расширения требуется учетная запись хранения и контейнер БОЛЬШИХ двоичных объектов в качестве входных данных.
Чтобы создать новую учетную запись хранения, выполните следующую команду:
az storage account create --name $storageaccount --resource-group $storageaccountresourcegroup --location $region --sku Standard_LRS
После завершения создания учетной записи хранения создайте контейнер BLOB-объектов внутри, выполнив следующую команду:
az storage container create --name $blobcontainer --account-name $storageaccount --auth-mode login
Примечание.
- Учетная запись хранения и кластер AKS должны находиться в одном регионе и подписке.
- Контейнер BLOB-объектов не должен содержать ранее созданные файловые системы (за исключением резервных копий для AKS).
- Если исходный или целевой кластер AKS находится в частной виртуальной сети, необходимо создать частную конечную точку для подключения учетной записи хранения к кластеру AKS.
Установите расширение резервного копирования.
Расширение резервного копирования является обязательным для установки в кластере AKS для выполнения любых операций резервного копирования и восстановления. Расширение резервного копирования создает пространство
dataprotection-microsoft
имен в кластере и использует то же самое для развертывания своих ресурсов. Для установки расширение требуется учетная запись хранения и контейнер BLOB-объектов.az k8s-extension create --name azure-aks-backup --extension-type microsoft.dataprotection.kubernetes --scope cluster --cluster-type managedClusters --cluster-name $akscluster --resource-group $aksclusterresourcegroup --release-train stable --configuration-settings blobContainer=$blobcontainer storageAccount=$storageaccount storageAccountResourceGroup=$storageaccountresourcegroup storageAccountSubscriptionId=$subscriptionId
В рамках установки расширения удостоверение пользователя создается в группе ресурсов пула узлов кластера AKS. Чтобы получить доступ к учетной записи хранения, необходимо указать это удостоверение служба хранилища роль участника данных BLOB-объектов. Чтобы назначить требуемую роль, выполните следующую команду:
az role assignment create --assignee-object-id $(az k8s-extension show --name azure-aks-backup --cluster-name $akscluster --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, необходимо включить доверенный доступ , так как это позволяет хранилищу резервного копирования иметь прямую линию зрения к кластеру AKS.
Чтобы включить доверенный доступ, выполните следующую команду:
az aks trustedaccess rolebinding create --cluster-name $akscluster --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.
Подготовка запроса
Настройка резервного копирования выполняется двумя шагами.
Подготовьте конфигурацию резервного копирования, чтобы определить, какие ресурсы кластера необходимо создать резервную копию с помощью
az dataprotection backup-instance initialize-backupconfig
команды. Команда создает JSON, который можно обновить, чтобы определить конфигурацию резервного копирования для кластера AKS по мере необходимости.az dataprotection backup-instance initialize-backupconfig --datasource-type AzureKubernetesService > aksbackupconfig.json { "excluded_namespaces": null, "excluded_resource_types": null, "include_cluster_scope_resources": true, "included_namespaces": null, "included_resource_types": null, "label_selectors": null, "snapshot_volumes": true }
Подготовьте соответствующий запрос с помощью соответствующего хранилища, политики, кластера AKS, конфигурации резервного копирования и группы ресурсов моментальных снимков с помощью
az dataprotection backup-instance initialize
команды.az dataprotection backup-instance initialize --datasource-id /subscriptions/$subscriptionId/resourceGroups/$aksclusterresourcegroup/providers/Microsoft.ContainerService/managedClusters/$akscluster --datasource-location $region --datasource-type AzureKubernetesService --policy-id /subscriptions/$subscriptionId/resourceGroups/$backupvaultresourcegroup/providers/Microsoft.DataProtection/backupVaults/$backupvault/backupPolicies/$backuppolicy --backup-configuration ./aksbackupconfig.json --friendly-name ecommercebackup --snapshot-resource-group-name $snapshotresourcegroup > backupinstance.json
Теперь используйте выходные данные JSON этой команды для настройки резервного копирования для кластера AKS.
Назначение необходимых разрешений и проверка
Для доступа к другим ресурсам Azure хранилище Azure Backup использует управляемое удостоверение. Чтобы настроить резервное копирование кластера AKS, управляемому удостоверению хранилища архивации требуется набор разрешений для кластера AKS и групп ресурсов, в которых создаются и управляются моментальные снимки. Кроме того, кластер AKS требует разрешения на группу ресурсов моментальных снимков.
Только управляемое удостоверение, назначаемое системой, в настоящее время поддерживается для резервного копирования (как для хранилища резервных копий, так и кластера AKS). Система назначает по одному управляемому удостоверению на ресурс, привязывая их к жизненному циклу этого ресурса. Управляемому удостоверению можно предоставить разрешения, используя управление доступом на основе ролей Azure (Azure RBAC). Управляемое удостоверение — это особый субъект-служба, который можно использовать только с ресурсами Azure. Дополнительные сведения об управляемых удостоверениях.
Подготовив запрос, сначала необходимо проверить, назначены ли необходимые роли ресурсам, упоминание выше, выполнив следующую команду:
az dataprotection backup-instance validate-for-backup --backup-instance ./backupinstance.json --ids /subscriptions/$subscriptionId/resourceGroups/$backupvaultresourcegroup/providers/Microsoft.DataProtection/backupVaults/$backupvault
Если проверка завершается ошибкой и отсутствуют определенные разрешения, их можно назначить, выполнив следующую команду:
az dataprotection backup-instance update-msi-permissions command.
az dataprotection backup-instance update-msi-permissions --datasource-type AzureKubernetesService --operation Backup --permissions-scope ResourceGroup --vault-name $backupvault --resource-group $backupvaultresourcegroup --backup-instance backupinstance.json
После назначения разрешений повторно выполните следующую проверку для команды резервного копирования :
az dataprotection backup-instance create --backup-instance backupinstance.json --resource-group $backupvaultresourcegroup --vault-name $backupvault
Выполнение резервного копирования по требованию
Чтобы получить соответствующий экземпляр резервного копирования, в котором требуется активировать резервную копию, выполните az dataprotection backup-instance list-from-resourcegraph --
команду.
az dataprotection backup-instance list-from-resourcegraph --datasource-type AzureKubernetesService --datasource-id /subscriptions/$subscriptionId/resourceGroups/$aksclusterresourcegroup/providers/Microsoft.ContainerService/managedClusters/$akscluster --query aksAssignedIdentity.id
Теперь активируйте резервное копирование по запросу для экземпляра резервного копирования, выполнив следующую команду:
az dataprotection backup-instance adhoc-backup --rule-name "BackupDaily" --ids /subscriptions/$subscriptionId/resourceGroups/$backupvaultresourcegroup/providers/Microsoft.DataProtection/backupVaults/$backupvault/backupInstances/$backupinstanceid
Отслеживание заданий
Отслеживание заданий резервного копирования, 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 OnDemandBackup
Для запланированного резервного копирования:
az dataprotection job list-from-resourcegraph --datasource-type AzureKubernetesService --datasource-id /subscriptions/$subscriptionId/resourceGroups/$aksclusterresourcegroup/providers/Microsoft.ContainerService/managedClusters/$akscluster --operation ScheduledBackup