Для улучшения работы сайта мы используем файлы cookies. Оставаясь на сайте, вы соглашаетесь с политикой обработки персональных данных.

Настройка резервного копирования с использованием Кибер Бэкап

В разделе описана процедура настройки резервного копирования ресурсов Kubernetes и данных, хранящихся на PersistentVolumeClaim (PVC), в Longhorn с использованием Кибер Бэкап в Nova.

1. Необходимые условия

  • Развернут кластер Nova версии 7.5.0.

  • Развернут отдельный сервер с установленным Кибер Бэкап версии 18.5.

  • У вас есть доступ к кластеру Nova с учетной записью, имеющей роль cluster-admin в Kubernetes.

  • Установлен модуль Longhorn.

  • Настроено резервное копирование узлов кластера.

  • Изучен блок статей по защите Kubernetes.

2. Установка агента Кибер Бэкап в Nova

  1. Убедитесь, что у вас установлены необходимые пакеты из статьи.

  2. В веб-консоли Кибер Бэкап перейдите в УстройстваНеобслуживаемые машины.

    Необслуживаемые машины
  3. Добавьте приложение Kubernetes.

    Приложение Kubernetes
  4. Скачайте и установите агент Кибер Бэкап для Kubernetes.

    Агент Кибер Бэкап для Kubernetes
  5. Скопируйте файл агента на мастер-узлы.

  6. Запустите агент с правами root.

  7. При установке выберите Agent for Linux и Agent for Kubernetes.

    Настройки агента
  8. При установке укажите IP-адрес сервера управления Кибер Бэкап и данные для подключения (в данном случае — имя и пароль).

    Данные для подключения

При возникновении ошибки при установке обратитесь к статье.

3. Бэкап Kubernetes ресурсов Nova и PVC (на Longhorn)

3.1. Добавление кластера Nova в веб-консоли Кибер Бэкап

  1. В веб-консоли Кибер Бэкап перейдите в УстройстваНеобслуживаемые машины (или в любую другую вкладку в пределах блока Устройства).

    Необслуживаемые машины
  2. Добавьте кластер Kubernetes.

    Приложение Kubernetes
    Добавить кластер Kubernetes
  3. Выберите подключенный агент.

  4. Выберите конфигурационный файл кластера (можно использовать файл kubeadmin.conf, созданный при установке Nova, или взять с мастер-узла /etc/kubernetes/admin.conf).

    Данные для добавления кластера Kubernetes

3.2. Создание плана защиты в веб-консоли Кибер Бэкап

  1. В веб-консоли Кибер Бэкап перейдите в раздел ПланыЗащита.

  2. Создайте план и выберите Kubernetes в разделе Выбор данных.

    Создать план
    Создать план Kubernetes
  3. Выберите Комбинированное в разделе Хранение моментальных снимков.

  4. Выберите Место сохранения.

  5. Нажмите Создать.

    Настройки плана

Для большей безопасности данных рекомендуется использовать Комбинированное хранение моментальных снимков. Это позволит хранить резервную копию данных PVC локально и на удаленном сервере в настроенном Хранилище резервных копий (например, на NFS-сервере). При использовании RWX томов большого объёма — потребуется увеличить параметр podStartupTimeout в файле /opt/acronis/etc/dsp.k8s/k8s-agent.json в зависимости от объёма PVC. Иначе резервное копирование на удаленный сервер будет падать из-за слишком долгого процесса подсчёта хэш-сумм в BackingImage.

3.3. Настройка резервного копирования PVC на основе Longhorn в Nova

Создайте VolumeSnapshotClass для резервного копирования данных Longhorn.

Поддерживаются типы BI и BAK. Тип BAK позволяет хранить резервную копию данных PVC только на удаленном сервере. Тип BI позволяет хранить резервную копию данных PVC локально и на удаленном сервере.

Если вы планируете резервное копирование данных на PVC большого объема, используйте режим BAK, так как при использовании режима BI процесс резервного копирования может занять длительное время. При перезапуске узла проверка хэш-сумм будет выполнена заново, из-за чего резервное копирование на удаленный сервер может прерваться.

kind: VolumeSnapshotClass
apiVersion: snapshot.storage.k8s.io/v1
metadata:
  name: longhorn
  annotations:
    snapshot.storage.kubernetes.io/is-default-class: "true"
driver: driver.longhorn.io
deletionPolicy: Delete
parameters:
  type: bi

Для резервного копирования томов в хранилище Кибер Бэкап — CSI-драйвер должен поддерживать функцию Raw Block. Если ваш драйвер её не поддерживает, то следует добавить аннотацию в VolumeSnapshotClass.

metadata:
  annotations:
    cyberprotect.ru/convert-to-block-mode: 'false'

3.4. Проверка резервного копирования PVC

  1. Создайте ресурсы из следующего манифеста в кластере Nova (можно применить в веб-консоли Nova или с одного из мастер-узлов).

    Пример
    apiVersion: v1
    kind: Namespace
    metadata:
      name: test
    ---
    apiVersion: v1
    kind: Pod
    metadata:
      name: busybox-pod
      namespace: test
    spec:
      containers:
      - name: busybox
        image: hub-nova.orionsoft.ru/library/busybox:latest
        command: ["/bin/sh", "-c", "sleep 3600"]
        volumeMounts:
        - mountPath: /tmp/busybox
          name: busybox-storage
      volumes:
      - name: busybox-storage
        persistentVolumeClaim:
          claimName: busybox-pvc
    ---
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: busybox-pvc
      namespace: test
    spec:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 1Gi
      storageClassName: longhorn-storage-single-replica
  2. Создайте файл внутри пода в смонтированном каталоге.

    kubectl exec -it busybox-pod -n test -- /bin/sh -c 'echo "Hello World!" > /tmp/busybox/test.txt'
  3. Зайдите в веб-консоль Кибер Бэкап в УстройстваKubernetes.

  4. Найдите и выберите пространство имен test.

  5. Нажмите Защитить.

    Kubernetes
  6. Выберите и примените план защиты.

    Kubernetes
  7. В веб-консоли Nova перейдите на вкладку Namespaces и удалите пространство имен test.

  8. В веб-консоли Longhorn перейдите на вкладку Volume и убедитесь, что busybox-pod отсутствует в списке.

  9. В веб-консоли Кибер Бэкап перейдите в УстройстваKubernetes.

  10. Найдите и выберите пространство имен test.

  11. Нажмите Восстановление.

    Восстановление
  12. Выберите нужную резервную копию и нажмите Восстановить.

    Восстановление
  13. Нажмите Восстановить все пространство.

    Восстановление
  14. Выберите Удалить старое пространство и создать новое с выбранными ресурсами и нажмите Начать восстановление.

    Восстановление
  15. В веб-консоли Nova перейдите на вкладку РесурсыPods.

  16. Убедитесь, что создался под busybox-pod.

  17. Убедитесь, что данные восстановились.

    kubectl exec -it busybox-pod -n test -- /bin/sh -c 'cat /tmp/busybox/test.txt'
    
    Hello World!

4. Создание резервной копии узлов Nova

В данном примере будет выполнено резервное копирование и восстановление мастер-узлов.

4.1. Создание плана защиты в веб-консоли Кибер Бэкап

  1. В веб-консоли Кибер Бэкап перейдите в ПланыЗащита.

  2. Создайте план и выберите Вся машина в Выбор данных.

    Создать план
  3. Выберите Место сохранения.

  4. Нажмите Создать.

  5. Отредактируйте план и добавьте узел для резервного копирования. Для этого нажмите Добавить устройство. После этого выберите мастер-узел.

    Добавить устройство
  6. Перейдите в УстройстваФизические и виртуальные машины → выберите мастер-узел и нажмите Защитить.

    Защитить
  7. Запустите резервное копирование и дождитесь его завершения.

    Создание резервной копии
  8. Выключите мастер-узел и создайте аналогичный сервер.

  9. Установите на новом сервере пакет nfs-common.

  10. Установите агент Кибер Бэкап на сервер с настройками, аналогичными ранее заданным, но также добавьте компонент Bootable Media Builder.

    Компоненты
  11. В веб-консоли Кибер Бэкап перейдите в Хранилища резервных копий → выберите хранилище → выберите резервную копию, из которой хотите выполнить восстановление → нажмите Восстановить и выберите Вся машина.

    Хранилища резервных копий
  12. Укажите сервер, куда будут восстановлены данные, и нажмите Начать восстановление.

    Восстановление
  13. Проверьте, какие изменения будут выполнены, и нажмите Начать восстановление.

    Подтверждение
  14. Дождитесь окончания восстановления.

  15. Зайдите на узел и проверьте состояние сервисов kubelet и etcd.

    systemctl status kubelet
    systemctl status etcd
  16. В случае проблем с etcd следуйте соответствующему пункту в статье.