Настройка резервного копирования с использованием Кибер Бэкап
В разделе описана процедура настройки резервного копирования ресурсов Kubernetes и данных, хранящихся на PersistentVolumeClaim (PVC), в Longhorn с использованием Кибер Бэкап в Nova.
1. Необходимые условия
-
Развернут кластер Nova версии 7.5.0.
-
Развернут отдельный сервер с установленным Кибер Бэкап версии 18.5.
-
У вас есть доступ к кластеру Nova с учетной записью, имеющей роль
cluster-adminв Kubernetes. -
Установлен модуль Longhorn.
-
Настроено резервное копирование узлов кластера.
-
Изучен блок статей по защите Kubernetes.
2. Установка агента Кибер Бэкап в Nova
-
Убедитесь, что у вас установлены необходимые пакеты из статьи.
-
В веб-консоли Кибер Бэкап перейдите в Устройства → Необслуживаемые машины.
-
Добавьте приложение Kubernetes.
-
Скачайте и установите агент Кибер Бэкап для Kubernetes.
-
Скопируйте файл агента на мастер-узлы.
-
Запустите агент с правами
root. -
При установке выберите Agent for Linux и Agent for Kubernetes.
-
При установке укажите IP-адрес сервера управления Кибер Бэкап и данные для подключения (в данном случае — имя и пароль).
|
При возникновении ошибки при установке обратитесь к статье. |
3. Бэкап Kubernetes ресурсов Nova и PVC (на Longhorn)
3.1. Добавление кластера Nova в веб-консоли Кибер Бэкап
-
В веб-консоли Кибер Бэкап перейдите в Устройства → Необслуживаемые машины (или в любую другую вкладку в пределах блока Устройства).
-
Добавьте кластер Kubernetes.
-
Выберите подключенный агент.
-
Выберите конфигурационный файл кластера (можно использовать файл
kubeadmin.conf, созданный при установке Nova, или взять с мастер-узла/etc/kubernetes/admin.conf).
3.2. Создание плана защиты в веб-консоли Кибер Бэкап
-
В веб-консоли Кибер Бэкап перейдите в раздел Планы → Защита.
-
Создайте план и выберите Kubernetes в разделе Выбор данных.
-
Выберите Комбинированное в разделе Хранение моментальных снимков.
-
Выберите Место сохранения.
-
Нажмите Создать.
|
Для большей безопасности данных рекомендуется использовать Комбинированное хранение моментальных снимков. Это позволит хранить резервную копию данных PVC локально и на удаленном сервере в настроенном Хранилище резервных копий (например, на NFS-сервере).
При использовании RWX томов большого объёма — потребуется увеличить параметр podStartupTimeout в файле |
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.
|
3.4. Проверка резервного копирования PVC
-
Создайте ресурсы из следующего манифеста в кластере 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 -
Создайте файл внутри пода в смонтированном каталоге.
kubectl exec -it busybox-pod -n test -- /bin/sh -c 'echo "Hello World!" > /tmp/busybox/test.txt' -
Зайдите в веб-консоль Кибер Бэкап в Устройства → Kubernetes.
-
Найдите и выберите пространство имен
test. -
Нажмите Защитить.
-
Выберите и примените план защиты.
-
В веб-консоли Nova перейдите на вкладку Namespaces и удалите пространство имен
test. -
В веб-консоли Longhorn перейдите на вкладку Volume и убедитесь, что
busybox-podотсутствует в списке. -
В веб-консоли Кибер Бэкап перейдите в Устройства → Kubernetes.
-
Найдите и выберите пространство имен
test. -
Нажмите Восстановление.
-
Выберите нужную резервную копию и нажмите Восстановить.
-
Нажмите Восстановить все пространство.
-
Выберите Удалить старое пространство и создать новое с выбранными ресурсами и нажмите Начать восстановление.
-
В веб-консоли Nova перейдите на вкладку Ресурсы → Pods.
-
Убедитесь, что создался под
busybox-pod. -
Убедитесь, что данные восстановились.
kubectl exec -it busybox-pod -n test -- /bin/sh -c 'cat /tmp/busybox/test.txt' Hello World!
4. Создание резервной копии узлов Nova
В данном примере будет выполнено резервное копирование и восстановление мастер-узлов.
4.1. Создание плана защиты в веб-консоли Кибер Бэкап
-
В веб-консоли Кибер Бэкап перейдите в Планы → Защита.
-
Создайте план и выберите Вся машина в Выбор данных.
-
Выберите Место сохранения.
-
Нажмите Создать.
-
Отредактируйте план и добавьте узел для резервного копирования. Для этого нажмите Добавить устройство. После этого выберите мастер-узел.
-
Перейдите в Устройства → Физические и виртуальные машины → выберите мастер-узел и нажмите Защитить.
-
Запустите резервное копирование и дождитесь его завершения.
-
Выключите мастер-узел и создайте аналогичный сервер.
-
Установите на новом сервере пакет
nfs-common. -
Установите агент Кибер Бэкап на сервер с настройками, аналогичными ранее заданным, но также добавьте компонент Bootable Media Builder.
-
В веб-консоли Кибер Бэкап перейдите в Хранилища резервных копий → выберите хранилище → выберите резервную копию, из которой хотите выполнить восстановление → нажмите Восстановить и выберите Вся машина.
-
Укажите сервер, куда будут восстановлены данные, и нажмите Начать восстановление.
-
Проверьте, какие изменения будут выполнены, и нажмите Начать восстановление.
-
Дождитесь окончания восстановления.
-
Зайдите на узел и проверьте состояние сервисов
kubeletиetcd.systemctl status kubelet systemctl status etcd -
В случае проблем с
etcdследуйте соответствующему пункту в статье.