Поделиться через


Резервное копирование службы Azure Kubernetes с помощью PowerShell

В этой статье описывается, как настроить и создать резервную копию Azure Kubernetes Service (AKS) с помощью Azure PowerShell.

Azure Backup теперь позволяет создавать резервные копии кластеров AKS (ресурсы кластера и постоянные тома, подключенные к кластеру) с помощью расширения резервного копирования, которое должно быть установлено в кластере. Хранилище резервных копий взаимодействует с кластером с помощью этого расширения резервного копирования для выполнения операций резервного копирования и восстановления.

Предпосылки

Прежде чем приступить к резервному копированию кластера AKS, проверьте следующие предварительные требования:

  • В настоящее время резервное копирование AKS поддерживает только постоянные тома на основе дисков Azure, которые поддерживаются драйвером CSI. Резервные копии хранятся только в оперативном хранилище данных (в вашем тентанте) и не перемещаются в резервное хранилище. Хранилище резервных копий и кластер AKS должны находиться в одном регионе.

  • Резервное копирование AKS использует контейнер BLOB и группу ресурсов для хранения резервных копий. Контейнер больших двоичных объектов содержит ресурсы кластера AKS, хранящиеся в нем, а моментальные снимки сохраняемого тома хранятся в группе ресурсов. Кластер AKS и расположения хранилища должны находиться в одном регионе. Узнайте, как создать контейнер больших двоичных объектов.

  • В настоящее время резервное копирование AKS поддерживает ежедневное создание резервных копий. Он также поддерживает более частые резервные копии (каждые 4, 8 и 12 часов интервалы) в день. Оно позволяет хранить данные для восстановления до 360 дней. Узнайте, как создать политику резервного копирования.

  • Чтобы настроить операции резервного копирования и восстановления в кластере AKS, необходимо установить расширение резервного копирования. Узнать больше о расширении резервного копирования.

  • Убедитесь, что Microsoft.KubernetesConfiguration, Microsoft.DataProtection, и Microsoft.ContainerService зарегистрированы для вашей подписки перед началом конфигурации резервного копирования и операций восстановления.

  • Перед началом операции резервного копирования или восстановления для AKS необходимо выполнить все предварительные условия.

Дополнительные сведения о поддерживаемых сценариях, ограничениях и доступности см. в матрице поддержки.

Создайте хранилище резервных копий для AKS

Хранилище резервных копий — это сущность управления в Azure, в которой хранятся данные резервного копирования для различных новых рабочих нагрузок, поддерживаемых Azure Backup, таких как База данных Azure для PostgreSQL серверы и диски Azure. Хранилища резервных копий упрощают упорядочивание данных резервного копирования при минимизации затрат на управление. Они основаны на модели Azure Resource Manager, которая предоставляет расширенные возможности для защиты данных резервного копирования. Перед созданием хранилища резервных копий выберите избыточность данных в хранилище, а затем создайте хранилище резервных копий с этой избыточностью хранилища и расположением.

Здесь мы создадим хранилище Backup Vault TestBkpVault в регионе "Западная часть США" в группе ресурсов testBkpVaultRG. Используйте командлет New-AzDataProtectionBackupVault для создания хранилища резервных копий. Дополнительные сведения о создании хранилища Azure Backup.

Примечание.

Хотя выбранное хранилище может иметь глобальный уровень избыточности , резервное копирование для AKS в настоящее время поддерживает только операционный уровень . Все резервные копии хранятся в подписке в том же регионе, что и кластер AKS, и они не копируются в хранилище резервных копий.

  1. Чтобы задать настройки хранилища резервных копий, выполните следующий командлет:

    Примечание.

    Хранилище создается с поддержкой только локальной избыточности и операционного хранилища данных.

    $storageSetting = New-AzDataProtectionBackupVaultStorageSettingObject -Type LocallyRedundant -DataStoreType OperationalStore
    
  2. Чтобы создать хранилище резервных копий в соответствии с указанными ранее сведениями, выполните следующий командлет:

    New-AzDataProtectionBackupVault -ResourceGroupName testBkpVaultRG -VaultName TestBkpVault -Location westus -StorageSetting $storageSetting
    $TestBkpVault = Get-AzDataProtectionBackupVault -VaultName TestBkpVault
    

После завершения создания хранилища создайте политику резервного копирования для защиты кластеров AKS.

Создание политики резервного копирования для кластера AKS

Azure Backup позволяет создавать политики резервного копирования для защиты кластера AKS с ежедневными резервными копиями или несколькими резервными копиями в день.

Чтобы создать политику резервного копирования для кластера AKS, выполните следующие командлеты:

  1. Извлеките шаблон политики с помощью командлета Get-AzDataProtectionPolicyTemplate и проверьте внутренние компоненты политики резервного копирования для резервного копирования AKS. Эта команда возвращает шаблон политики по умолчанию для заданного типа источника данных. Используйте этот шаблон политики для создания новой политики.

    $policyDefn = Get-AzDataProtectionPolicyTemplate -DatasourceType AzureKubernetesService
    

    Шаблон политики состоит из условий триггера (которые определяют факторы для запуска задания резервного копирования) и жизненного цикла (который решает, когда следует удалять, копировать или перемещать резервные копии). В резервном копировании AKS значение по умолчанию для триггера — это запланированный почасовой триггер каждые 4 часа (PT4H), а срок хранения каждой резервной копии составляет 7 дней.

    $policyDefn.PolicyRule[0]. Trigger | fl
    
    ObjectType: ScheduleBasedTriggerContext
    ScheduleRepeatingTimeInterval: {R/2023-04-05T13:00:00+00:00/PT4H}
    TaggingCriterion: {Default}
    
    $policyDefn.PolicyRule[1]. Lifecycle | fl
    
    DeleteAfterDuration: P7D
    DeleteAfterObjectType: AbsoluteDeleteOption
    SourceDataStoreObjectType : DataStoreInfoBase
    SourceDataStoreType: OperationalStore
    TargetDataStoreCopySetting:
    
  2. Для частоты ежедневного резервного копирования укажите время дня, когда необходимо выполнить резервное копирование.

    Внимание

    Указываемое время суток обозначает время запуска резервного копирования, а не время, когда создание резервной копии будет завершено. Время, необходимое для выполнения операции резервного копирования, зависит от различных факторов, включая количество и размер постоянных томов и частоту обработки между последовательными резервными копиями.

    Резервное копирование для AKS обеспечивает несколько резервных копий в день. Резервные копии равномерно распределяются по дням, если требуется более частое резервное копирование, выбрав частоту почасового резервного копирования, которая имеет возможность создавать резервные копии с интервалами каждые 4, 6, 8 или 12 часов. Резервные копии запланированы на основе выбранного интервала времени. Например, если выбрать каждые 4 часа, резервные копии выполняются примерно в интервале каждые 4 часа.

  3. Если вы хотите изменить почасовую частоту или период хранения, используйте командлеты Edit-AzDataProtectionPolicyTriggerClientObject и/или Edit-AzDataProtectionPolicyRetentionRuleClientObject. После того как объект политики имеет все необходимые значения, начните создавать новую политику из объекта политики с помощью командлета New-AzDataProtectionBackupPolicy .

    New-AzDataProtectionBackupPolicy -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -Name aksBkpPolicy -Policy $policyDefn
    
    $aksBkpPol = Get-AzDataProtectionBackupPolicy -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -Name "aksBkpPolicy"
    

Подготовка кластера AKS к резервному копированию

После завершения создания хранилища и политики необходимо выполнить следующие предварительные требования для подготовки кластера AKS к резервному копированию:

  1. Создайте учетную запись хранения и контейнер BLOB

    Резервное копирование для AKS сохраняет ресурсы Kubernetes в контейнере объектов как резервные копии. Чтобы подготовить кластер AKS к резервному копированию, необходимо установить расширение в кластере. Для этого расширения требуется учетная запись хранения и контейнер BLOB в качестве входных данных.

    Чтобы создать новую учетную запись хранения и контейнер объектов BLOB, см. следующие действия.

    Примечание.

    1. Учетная запись хранения и кластер AKS должны находиться в одном регионе и подписке.
    2. Контейнер BLOB-объектов не должен содержать ранее созданные файловые системы (за исключением резервных копий для AKS).
    3. Если исходный или целевой кластер AKS находится в частной виртуальной сети, необходимо создать частную конечную точку для подключения учетной записи хранения к кластеру AKS.
  2. Установка расширения резервного копирования

    Расширение резервного копирования является обязательным для установки в кластере AKS для выполнения любых операций резервного копирования и восстановления. Расширение резервного копирования создает пространство dataprotection-microsoft имен в кластере и использует его для развертывания своих ресурсов. Для установки расширения требуются учетная запись хранения и контейнер BLOB. Узнайте о командах установки расширения.

    В процессе установки расширения в группе ресурсов пула узлов кластера AKS создается учетная запись пользователя. Чтобы расширение получило доступ к учетной записи хранения, необходимо предоставить этой учётной записи роль участника учетной записи хранения. Чтобы назначить требуемую роль, выполните следующую команду.

  3. Включение доверенного доступа

Чтобы хранилище резервных копий было подключено к кластеру AKS, необходимо включить доверенный доступ, так как это позволяет хранилищу резервного копирования иметь прямую линию зрения к кластеру AKS. Узнайте , как включить доверенный доступ.

Примечание.

Для установки расширения резервного копирования и включения доверенного доступа команды доступны только в Azure CLI.

Настройка резервных копий для кластера AKS

С помощью созданного хранилища резервных копий и политики резервного копирования, а также кластера AKS в состоянии готовности к резервному копированию теперь можно начать резервное копирование кластера AKS.

Основные сущности

  • Кластер AKS, который нужно защитить

    Получите идентификатор Azure Resource Manager для защиты кластера AKS. Это служит идентификатором кластера. В этом примере мы используем кластер AKS с именем PSTestAKSCluster в группе ресурсов aksrg в другой подписке:

    $sourceClusterId = "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/aksrg /providers/Microsoft.ContainerService/managedClusters/ PSTestAKSCluster "
    
  • Группа ресурсов моментальных снимков

    Моментальные снимки постоянных томов хранятся в группе ресурсов в подписке. Рекомендуется создать выделенную группу ресурсов в качестве хранилища данных моментальных снимков для использования службой Azure Backup. Выделенная группа ресурсов позволяет ограничить разрешения доступа для группы ресурсов, обеспечивая безопасность и простоту управления данными резервного копирования. Сохраните идентификатор Azure Resource Manager группы ресурсов в месте хранения моментальных снимков сохраняемого тома.

    $snapshotrg = "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/snapshotrg"
    

Подготовка запроса

Настройка резервного копирования выполняется двумя шагами.

  1. Подготовьте конфигурацию резервного копирования, чтобы определить, какие ресурсы кластера необходимо создать резервную копию с помощью командлета New-AzDataProtectionBackupConfigurationClientObject . В следующем примере конфигурация определяется как все ресурсы кластера в текущих и будущих пространствах имен, которые будут резервироваться с меткой key-value pair x=y. Кроме того, все ресурсы с уровнем области кластера и постоянные тома резервируются. Следующие пространства имен исключены из конфигурации резервного копирования и не предназначены для резервных копий: kube-system, kube-node-lease, kube-public.

    $backupConfig = New-AzDataProtectionBackupConfigurationClientObject -SnapshotVolume $true -IncludeClusterScopeResource $true -DatasourceType AzureKubernetesService -LabelSelector "env=prod"
    
  2. Подготовьте необходимый запрос, используя нужное хранилище, политику, кластер AKS, конфигурацию резервного копирования и группу ресурсов для моментальных снимков с помощью командлета Initialize-AzDataProtectionBackupInstance.

    $backupInstance = Initialize-AzDataProtectionBackupInstance -DatasourceType AzureKubernetesService  -DatasourceLocation $dataSourceLocation -PolicyId $ aksBkpPol.Id -DatasourceId $sourceClusterId -SnapshotResourceGroupId $ snapshotrg -FriendlyName $friendlyName -BackupConfiguration $backupConfig
    

Назначение необходимых разрешений и проверка

Чтобы назначить необходимые разрешения и выполнить проверку для защиты кластера AKS, выполните следующие командлеты:

  1. Подготовив запрос, необходимо назначить пользователю необходимые разрешения с помощью управления доступом на основе ролей Azure (Azure RBAC) к хранилищу (через управляемую системную идентификацию хранилища) и кластеру AKS. Это можно выполнить с помощью командлета Set-AzDataProtectionMSIPermission . Хранилище восстановления использует управляемое удостоверение для доступа к другим ресурсам Azure. Чтобы настроить резервное копирование кластера AKS, управляемой идентификации хранилища резервных копий требуется набор разрешений на кластер AKS и группы ресурсов, в которых создаются и управляются моментальные снимки. Кроме того, кластер AKS требует разрешения на группу ресурсов снэпшотов.

    Примечание.

    Только системно назначаемое управляемое удостоверение поддерживается для резервного копирования (как для хранилища резервных копий, так и для кластера AKS). Назначенная системой управляемая идентичность ограничена одним удостоверением на ресурс и привязана к жизненному циклу этого ресурса. Вы можете предоставить разрешения управляемому удостоверению с помощью Azure RBAC. Управляемое удостоверение — это служебный принципал особого типа, который можно использовать только с ресурсами Azure. Узнайте больше об управляемых удостоверениях.

    Set-AzDataProtectionMSIPermission -BackupInstance $backupInstance -VaultResourceGroup $rgName -VaultName $vaultName -PermissionsScope "ResourceGroup"
    
  2. После назначения разрешений проверьте готовность созданного экземпляра.

    test-AzDataProtectionBackupInstanceReadiness -ResourceGroupName $resourceGroupName -VaultName $vaultName -BackupInstance  $backupInstance.Property 
    
  3. После успешной проверки отправьте запрос на защиту кластера AKS с помощью командлета New-AzDataProtectionBackupInstance .

    New-AzDataProtectionBackupInstance -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -BackupInstance $backupInstance
    

Запуск резервного копирования по запросу для кластера AKS

Чтобы активировать резервное копирование по запросу, выполните следующие командлеты:

  1. Получите соответствующий экземпляр резервного копирования, на котором требуется активировать резервную копию, выполнив Get-AzDataProtectionBackupInstance командлет.

    $instance = Get-AzDataProtectionBackupInstance -SubscriptionId "xxxx-xxx-xxx" -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -Name "BackupInstanceName"
    
  2. Укажите правило хранения при активации резервной копии. Чтобы просмотреть правила хранения в политике, перейдите к объекту политики для правил хранения. В следующем примере появляется правило с именем по умолчанию , и мы будем использовать это правило для резервного копирования по запросу.

    $policyDefn.PolicyRule | fl
    BackupParameter: Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.AzureBackupParams
    BackupParameterObjectType: AzureBackupParams
    DataStoreObjectType: DataStoreInfoBase
    DataStoreType: OperationalStore
    Name: BackupHourly
    ObjectType: AzureBackupRule
    Trigger: Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.ScheduleBasedTriggerContext
    TriggerObjectType: ScheduleBasedTriggerContext
    IsDefault: True
    Lifecycle: {Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.SourceLifeCycle}
    Name: Default
    ObjectType: AzureRetentionRule
    
  3. Активируйте резервную копию по запросу с помощью командлета Backup-AzDataProtectionBackupInstanceAdhoc .

    $AllInstances = Get-AzDataProtectionBackupInstance -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name
    
    Backup-AzDataProtectionBackupInstanceAdhoc -BackupInstanceName $AllInstances[0].Name -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -BackupRuleOptionRuleName "Default"
    

Отслеживание заданий резервного копирования AKS

Отслеживайте все задания с помощью командлета Get-AzDataProtectionJob . Можно вывести список всех заданий и получить сведения о конкретном задании. Вы также можете использовать командлет Az.ResourceGraph для отслеживания всех заданий во всех хранилищах резервных копий. Используйте командлет Search-AzDataProtectionJobInAzGraph, чтобы получить соответствующие сведения о задании из любого хранилища резервных копий.

$job = Search-AzDataProtectionJobInAzGraph -Subscription $sub -ResourceGroupName "testBkpVaultRG" -Vault $TestBkpVault.Name -DatasourceType AzureKubernetesService  -Operation OnDemandBackup

Следующие шаги