Бөлісу құралы:


Что такое резервное копирование в службе Azure Kubernetes?

резервное копирование Служба Azure Kubernetes (AKS) — это простой облачный процесс, который можно использовать для резервного копирования и восстановления контейнерных приложений и данных, выполняемых в кластере AKS. Можно настроить плановое резервное копирование данных состояния кластера и приложений, хранящихся на постоянных томах в хранилище дисков Azure на основе драйвера CSI. Это решение предоставляет возможность детального контроля с целью выбора резервного копирования или восстановления конкретного пространства имен или всего кластера благодаря локальному хранению резервных копий в контейнере BLOB-объектов и в виде моментальных снимков дисков. Службу резервного копирование AKS можно использовать для комплексных сценариев, в том числе для — для оперативного восстановления, клонирования сред разработчика или сред тестирования, а также для сценариев обновления кластера.

Служба резервного копирования AKS интегрируется с центром резервного копирования в Azure, обеспечивая единое представление, которое позволяет управлять, отслеживать, управлять и анализировать резервные копии в любом масштабе. Резервные копии также доступны в портал Azure в разделе "Параметры" в меню службы для экземпляра AKS.

Как работает резервное копирование AKS?

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

Наряду с расширением резервного копирования в управляемой группе ресурсов кластера AKS создается удостоверение пользователя (называемое удостоверением расширения). Удостоверение расширения назначается роли участника учетной записи хранения в учетной записи хранения, в которой резервные копии хранятся в контейнере BLOB-объектов.

Для поддержки общедоступных, частных и авторизованных кластеров на основе IP-адресов резервная копия AKS требует включения доверенного доступа между кластером AKS и хранилищем резервных копий. Доверенный доступ позволяет хранилищу резервного копирования получить доступ к кластеру AKS из-за определенных разрешений, назначенных ему для операций резервного копирования. Дополнительные сведения о доверенном доступе AKS см. в статье "Разрешить ресурсам Azure доступ к кластерам AKS с помощью доверенного доступа".

Примечание.

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

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

Решение резервного копирования позволяет выполнять операции резервного копирования для источников данных AKS, развернутых в кластере, и для данных, хранящихся в постоянном томе кластера, а затем хранить резервные копии в контейнере BLOB-объектов. Постоянные тома на основе диска создаются в виде моментальных снимков дисков в группе ресурсов моментальных снимков. Моментальные снимки и состояние кластера в большом двоичном объекте объединяются для формирования точки восстановления, которая хранится в клиенте под названием "Операционный уровень". Вы также можете преобразовать резервные копии (первая успешная архивация в день, неделю, месяц или год) в операционный уровень в большие двоичные объекты, а затем переместить их в Хранилище (за пределами клиента) один раз в день.

Примечание.

В настоящее время Azure Backup поддерживает только постоянные тома в хранилище дисков Azure на основе драйвера CSI. Во время резервного копирования решение пропускает другие типы постоянных томов, например общую папку Azure и большие двоичные объекты. Кроме того, если вы определили правила хранения для уровня хранилища, резервные копии могут быть перемещены только в хранилище, если постоянные тома имеют размер меньше или равно 1 ТБ.

Настроить резервное копирование

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

    Примечание.

    • Хранилище резервных копий и кластер AKS, которые требуется выполнить резервное копирование или восстановление, должны находиться в одном регионе и подписке.
    • Параметр избыточности хранилища резервных копий (LRS/GRS) применяется только к резервным копиям, хранящимся на уровне хранилища. Если вы хотите использовать резервные копии для аварийного восстановления, задайте избыточность хранилища как GRS с включенным восстановлением между регионами.
  • Резервное копирование AKS автоматически активирует запланированное задание резервного копирования. Задание копирует ресурсы кластера в контейнер БОЛЬШИХ двоичных объектов и создает добавочный моментальный снимок постоянных томов на основе диска в соответствии с частотой резервного копирования. Резервные копии сохраняются на операционном уровне и уровне хранилища в соответствии с длительностью хранения, определенной в политике резервного копирования, и удаляются после завершения длительности.

    Примечание.

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

Управление резервным копированием

После завершения конфигурации резервного копирования для кластера AKS в хранилище резервных копий создается экземпляр резервной копии. Экземпляр резервного копирования для кластера можно просмотреть в разделе "Резервное копирование" для экземпляра AKS в портал Azure. Вы можете выполнять любые операции, связанные с резервным копированием для экземпляра, такие как инициирование восстановления, мониторинг, остановка защиты и т. д. с помощью соответствующего экземпляра резервного копирования.

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

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

Восстановление из резервной копии

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

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

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

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

  1. Пропустить. Этот параметр выбран по умолчанию. Например, если вы создали резервную копию ПВХ с именем pvc-azuredisk и восстанавливаете его в целевом кластере с тем же именем, то расширение резервного копирования пропускает восстановление сохраняемого утверждения тома (ПВХ). В таких сценариях рекомендуется удалить ресурс из кластера, а затем выполнить операцию восстановления, чтобы элементы резервного копирования были доступны только в кластере и не пропускаются.

  2. Исправление. Этот параметр позволяет изменять изменяемую переменную в резервном копировании ресурса ресурса в целевом кластере. Если вы хотите обновить количество реплик в целевом кластере, можно выбрать исправление в качестве операции.

Примечание.

Резервное копирование AKS в настоящее время не удаляет и повторно создает ресурсы в целевом кластере, если они уже существуют. При попытке восстановить постоянные тома в исходном расположении удалите существующие постоянные тома и выполните операцию восстановления.

Использование пользовательских перехватчиков для резервного копирования и восстановления

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

Что такое пользовательские перехватчики?

Резервное копирование AKS можно использовать для выполнения пользовательских перехватчиков в рамках операции резервного копирования и восстановления. Перехватчики — это команды, настроенные для выполнения одной или нескольких команд, выполняемых в модуле pod в контейнере во время операции резервного копирования или после восстановления. Эти перехватчики определяются как пользовательский ресурс и развертываются в кластере AKS, который требуется выполнить резервное копирование или восстановление. При развертывании пользовательского ресурса в кластере AKS в требуемом пространстве имен вы предоставляете сведения в качестве входных данных для потока для настройки резервного копирования и восстановления. Расширение резервного копирования запускает перехватчики, как определено в YAML-файле.

Примечание.

Перехватчики не выполняются в оболочке на контейнерах.

Резервное копирование в AKS имеет два типа перехватчиков:

  • Перехватчики резервного копирования
  • Восстановление перехватчиков

Перехватчики резервного копирования

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

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

apiVersion: clusterbackup.dataprotection.microsoft.com/v1alpha1
kind: BackupHook
metadata:
  # BackupHook CR Name and Namespace
  name: bkphookname0
  namespace: default
spec:
  # BackupHook is a list of hooks to execute before and after backing up a resource.
  backupHook:
    # BackupHook Name. This is the name of the hook that will be executed during backup.
    # compulsory
  - name: hook1
    # Namespaces where this hook will be executed.
    includedNamespaces: 
    - hrweb
    excludedNamespaces:
    labelSelector:
    # PreHooks is a list of BackupResourceHooks to execute prior to backing up an item.
    preHooks:
      - exec:
          # Container is the container in the pod where the command should be executed.
          container: webcontainer
          # Command is the command and arguments to execute.
          command:
            - /bin/uname
            - -a
          # OnError specifies how Velero should behave if it encounters an error executing this hook  
          onError: Continue
          # Timeout is the amount of time to wait for the hook to complete before considering it failed.
          timeout: 10s
      - exec:
          command:
            - /bin/bash
            - -c
            - echo hello > hello.txt && echo goodbye > goodbye.txt
          container: webcontainer
          onError: Continue
    # PostHooks is a list of BackupResourceHooks to execute after backing up an item.
    postHooks:
      - exec:
          container: webcontainer
          command:
            - /bin/uname
            - -a
          onError: Continue
          timeout: 10s

Восстановление перехватчиков

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

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

apiVersion: clusterbackup.dataprotection.microsoft.com/v1alpha1
kind: RestoreHook
metadata:
  name: restorehookname0
  namespace: default
spec:
  # RestoreHook is a list of hooks to execute after restoring a resource.
  restoreHook:
    # Name is the name of this hook.
  - name: myhook-1  
    # Restored Namespaces where this hook will be executed.
    includedNamespaces: 
    excludedNamespaces:
    labelSelector:
    # PostHooks is a list of RestoreResourceHooks to execute during and after restoring a resource.
    postHooks:
      - exec:
          # Container is the container in the pod where the command should be executed.
          container: webcontainer
          # Command is the command and arguments to execute from within a container after a pod has been restored.
          command:
            - /bin/bash
            - -c
            - echo hello > hello.txt && echo goodbye > goodbye.txt
          # OnError specifies how Velero should behave if it encounters an error executing this hook
          # default value is Continue
          onError: Continue
          # Timeout is the amount of time to wait for the hook to complete before considering it failed.
          execTimeout: 30s
          # WaitTimeout defines the maximum amount of time Velero should wait for the container to be ready before attempting to run the command.
          waitTimeout: 5m

Узнайте , как использовать перехватчики во время резервного копирования AKS.

Примечание.

  • Во время восстановления расширение резервного копирования ожидает появления контейнера, а затем выполняет команды exec на них, определенные в перехватчиках восстановления.
  • Если вы выполняете восстановление в том же пространстве имен, которое было создано, перехватчики восстановления не будут выполняться, так как он ищет только новый контейнер, который возвращается. Это независимо от того, выбирается ли политика пропуска или исправления.

Изменение ресурса при восстановлении резервных копий в кластер AKS

Вы можете использовать функцию изменения ресурсов для изменения резервных копий ресурсов Kubernetes во время восстановления, указав исправления JSON , configmap развернутые в кластере AKS.

Создание и применение конфигурации модификатора ресурсов во время восстановления

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

  1. Создайте модификаторы ресурсов configmap.

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

    Пример создания команды:

    version: v1
    resourceModifierRules:
    - conditions:
        groupResource: persistentvolumeclaims
        resourceNameRegex: "^mysql.*$"
        namespaces:
        - bar
        - foo
        labelSelector:
            matchLabels:
              foo: bar
      patches:
      - operation: replace
        path: "/spec/storageClassName"
        value: "premium"
      - operation: remove
        path: "/metadata/labels/test"
    
    • Приведенный выше configmap применяет исправление JSON ко всем сохраняемым копиям томов в строке имен и foo с именем, начинающимся с mysql и match label foo: bar. Исправление storageClassName premium JSON заменяет метку и удаляет метку test из постоянных копий томов.
    • Здесь пространство имен — это исходное пространство имен резервного копирования ресурса, а не новое пространство имен, в котором будет восстановлен ресурс.
    • Можно указать несколько исправлений JSON для определенного ресурса. Исправления применяются в соответствии с порядком, указанным в файле конфигурации. Последующее исправление применяется в порядке. Если для одного пути задано несколько исправлений, последнее исправление переопределяет предыдущие исправления.
    • В конфигурации можно указать несколькоresourceModifierRules. Правила применяются в соответствии с порядком, указанным в файле конфигурации.
  2. Создание ссылки на модификатор ресурсов в конфигурации восстановления

    При выполнении операции восстановления укажите имя ConfigMap и пространство имен, где оно развертывается в рамках конфигурации восстановления. Эти сведения необходимо указать в правилах модификатора ресурсов.

    Снимок экрана: расположение для предоставления сведений о ресурсе.

Операции, поддерживаемые модификатором ресурсов

  • Прибавить

    Операцию "Добавить" можно использовать для добавления нового блока в json ресурса. В приведенном ниже примере операция добавляет новые сведения о контейнере в спецификацию с развертыванием.

    version: v1
    resourceModifierRules:
    - conditions:
        groupResource: deployments.apps
        resourceNameRegex: "^test-.*$"
        namespaces:
        - bar
        - foo
      patches:
        # Dealing with complex values by escaping the yaml
      - operation: add
        path: "/spec/template/spec/containers/0"
        value: "{\"name\": \"nginx\", \"image\": \"nginx:1.14.2\", \"ports\": [{\"containerPort\": 80}]}"
    
  • Удалить

    Операцию "Удалить" можно использовать для удаления ключа из json ресурса. В приведенном ниже примере операция удаляет метку с тестом в качестве ключа.

    version: v1
    resourceModifierRules:
    - conditions:
          groupResource: persistentvolumeclaims
          resourceNameRegex: "^mysql.*$"
          namespaces:
          - bar
          - foo
          labelSelector:
            matchLabels:
                foo: bar
      patches:
      - operation: remove
        path: "/metadata/labels/test"
    
  • Replace

    Операцию "Заменить" можно использовать для замены значения пути, указанного в альтернативном. В приведенном ниже примере операция заменяет storageClassName в утверждении постоянного тома на premium.

    version: v1
    resourceModifierRules:
    - conditions:
         groupResource: persistentvolumeclaims
         resourceNameRegex: "^mysql.*$"
         namespaces:
         - bar
         - foo
         labelSelector:
            matchLabels:
               foo: bar
      patches:
      - operation: replace
        path: "/spec/storageClassName"
        value: "premium"
    
  • Копировать

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

    version: v1
    resourceModifierRules:
    - conditions:
        groupResource: deployments.apps
        resourceNameRegex: "^test-.*$"
        namespaces:
        - bar
        - foo
      patches:
      - operation: copy
        from: "/spec/template/spec/containers/0"
        path: "/spec/template/spec/containers/1"
    
  • Тестирование

    Операцию тестирования можно использовать для проверки наличия определенного значения в ресурсе. Если значение присутствует, применяется исправление. Если значение отсутствует, исправление не применяется. В приведенном ниже примере операция проверяет, имеют ли утверждения постоянного тома premium в качестве StorageClassName и заменяют ли они стандартным значением, если значение true.

    version: v1
    resourceModifierRules:
    - conditions:
        groupResource: persistentvolumeclaims
        resourceNameRegex: ".*"
        namespaces:
        - bar
        - foo
      patches:
      - operation: test
        path: "/spec/storageClassName"
        value: "premium"
      - operation: replace
        path: "/spec/storageClassName"
        value: "standard"
    
  • Исправление JSON

    Эта конфигурация применяет исправление JSON ко всем развертываниям в пространствах имен по умолчанию и nginx nginx nginxdepwith the name that starts with. Исправление JSON обновляет число реплик до 12 для всех таких развертываний.

    version: v1
    resourceModifierRules:
    - conditions:
        groupResource: deployments.apps
        resourceNameRegex: "^nginxdep.*$"
        namespaces:
       - default
       - nginx
      patches:
      - operation: replace
        path: "/spec/replicas"
        value: "12"
    
  • Исправление слияния JSON

    Эта карта конфигурации будет применять исправление слияния JSON ко всем развертываниям в пространствах имен по умолчанию и nginx с именем, начиная с nginxdep. Исправление слияния JSON добавит или обновит метку app со значением nginx1.

    version: v1
    resourceModifierRules:
      - conditions:
          groupResource: deployments.apps
          resourceNameRegex: "^nginxdep.*$"
          namespaces:
            - default
            - nginx
        mergePatches:
          - patchData: |
              {
                "metadata" : {
                  "labels" : {
                    "app" : "nginx1"
                  }
                }
              }
    
  • Стратегическое исправление слияния

    Эта карта конфигурации будет применять исправление стратегического слияния ко всем модулям pod в пространстве имен по умолчанию с именем, начиная с nginx. Исправление стратегического слияния обновит образ контейнера nginx до mcr.microsoft.com/cbl-mariner/base/nginx:1.22

    version: v1
    resourceModifierRules:
    - conditions:
        groupResource: pods
        resourceNameRegex: "^nginx.*$"
        namespaces:
        - default
      strategicPatches:
      - patchData: |
          {
            "spec": {
              "containers": [
                {
                  "name": "nginx",
                  "image": "mcr.microsoft.com/cbl-mariner/base/nginx:1.22"
                }
              ]
            }
          }
    

Какой уровень хранилища резервных копий поддерживает резервное копирование AKS?

Azure Backup для AKS поддерживает два уровня хранилища в качестве хранилищ резервных копий:

  • Операционный уровень. Расширение резервного копирования, установленное в кластере AKS, сначала принимает резервное копирование, принимая моментальные снимки томов с помощью драйвера CSI и сохраняет состояние кластера в контейнере BLOB-объектов в собственном клиенте. Этот уровень поддерживает более низкую RPO с минимальной длительностью между двумя резервными копиями в четыре часа. Кроме того, для томов на основе дисков Azure операционный уровень поддерживает более быстрое восстановление.

  • Стандартный уровень хранилища: для хранения данных резервного копирования в течение длительного времени с меньшими затратами, чем моментальные снимки, резервное копирование AKS поддерживает хранилище данных хранилища уровня "Стандартный". Согласно правилам хранения, заданным в политике резервного копирования, первое успешное резервное копирование (дня, недели, месяца или года) перемещается в контейнер БОЛЬШИХ двоичных объектов за пределами клиента. Это хранилище данных не только обеспечивает более длительное хранение, но и обеспечивает защиту от программ-шантажистов. Вы также можете переместить резервные копии, хранящиеся в хранилище, в другой регион (парный регион Azure), чтобы восстановить геоизбыточное расположение и восстановление между регионами в хранилище резервных копий.

Примечание.

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

Общие сведения о ценах

Вы несете плату за:

  • Плата за защищенный экземпляр: Azure Backup для AKS взимает плату за защищенное пространство имен в месяц. При настройке резервного копирования для кластера AKS создается защищенный экземпляр. Каждый экземпляр имеет определенное количество пространств имен, резервных копий которых выполняется в конфигурации резервного копирования. Дополнительные сведения о ценах на резервное копирование AKS см. в разделе "Цены на облачное резервное копирование" и выбор Служба Azure Kubernetes в качестве рабочей нагрузки

  • Плата за моментальный снимок: Azure Backup для AKS защищает постоянный том на основе диска, принимая моментальные снимки, хранящиеся в группе ресурсов в подписке Azure. Эти моментальные снимки несут расходы на хранение моментальных снимков. Так как моментальные снимки не копируются в хранилище резервных копий, стоимость хранения резервных копий не применяется. Дополнительные сведения о ценах на моментальный снимок см. в разделе "Цены на управляемый диск".

  • Плата за хранилище резервных копий: Azure Backup для AKS также поддерживает хранение резервных копий на уровне хранилища. Это можно сделать, определив правила хранения для хранилища уровня "Стандартный " в политике резервного копирования с одной точкой восстановления в день, доступной для перемещения в Хранилище. Точки восстановления, хранящиеся на уровне хранилища, взимается отдельная плата с оплатой хранилища резервных копий в зависимости от общего объема данных, хранящихся (в ГБ) и типа избыточности, включенного в Хранилище резервных копий.

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