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

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

Velero — это инструмент с открытым исходным кодом, предназначенный для резервного копирования и восстановления ресурсов Kubernetes, выполнения аварийного восстановления и миграции приложений между кластерами. Он позволяет сохранять и восстанавливать как объекты Kubernetes, так и данные постоянных томов при интеграции с Longhorn.

1. Активация Velero

  1. Чтобы включить установку Velero, обновите файл inventories/sample/group_vars/k3s/config.yaml.

  2. В секции параметров Velero задайте следующие значения:

    velero_enabled: true (1)
    velero_ui_password: "<пароль>"
    velero_s3_bucket: "<имя_бакета>"
    velero_s3_url: "<s3_url>"
    velero_s3_login: "<логин>"
    velero_s3_password: "<пароль>"
    1 velero_enabled: true — параметр активирует процесс установки Velero

Остальные параметры требуются для настройки доступа к S3-совместимому хранилищу.

Для корректной работы VolumeSnapshot и резервного копирования данных Persistent Volumes необходимо предварительно настроить Backup Target в сервисе Longhorn.

Настройка выполняется в интерфейсе Longhorn:

  1. Авторизуйтесь в интерфейсе Longhorn.

  2. Перейдите в Settings  General.

  3. В параметре Backup Target укажите хранилище для резервных копий:

    • Для S3: s3://<bucket>@<region>

    • Для NFS: nfs://<server>/<path>

      При использовании S3 укажите Backup Target Credential Secret с доступами.

  4. Сохраните изменения.

2. Создание резервной копии

  1. Авторизуйтесь в сервисе Velero.

  2. Перейдите в раздел Backups и нажмите + New.

    velero restore backup 1
    1. На шаге Type выберите From Scratch.

    2. На шаге Info настройте параметры:

      • Backup Name — задайте уникальное название для резервной копии

      • TTL — задайте время жизни резервной копии в часах

      • Included Namespaces — выберите portal-box

      • Options — активируйте опцию Snapshot Volumes, чтобы сохранить содержимое Longhorn-томов

      • Storage Location — выберите локацию default

        velero restore backup 2
    3. На шаге Resources активируйте опцию Include Cluster Resources.

      velero restore backup 3
    4. Пропустите шаг Labels.

  3. На последнем шаге Confirmation проверьте правильность заполненных параметров и нажмите Confirm.

    velero restore backup 4

Дождитесь завершения создания резервной копии, статус должен быть Completed.

3. Восстановление данных

Восстановление данных в Velero выполняется в три этапа:

3.1. Восстановление кластера K3s

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

Плейбук восстанавливает конфигурацию кластера, включая манифесты, сертификаты и настройки компонентов.

Выполните команду:

docker run -it --network host --rm \
    -v /home/$USER/portal-box:/apps \ (1)
    -v ~/.ssh/id_rsa:/root/.ssh/id_rsa \
    -v ~/.kube/cloud:/root/.kube/cloud \
    deploy-manager-1.9.1 \
    -i inventories/box/hosts \
    -u $USER \
    deploy.yml \
    --ask-vault-pass \ (2)
    --tags restore -e '{"restore": true}' (3)

Параметры команды:

1 -v — с помощью флага монтируются нужные директории: плейбук, SSH-ключ и kubeconfig
2 --ask-vault-pass — команда для запроса пароля в интерактивном режиме
3 --tags restore -e '{"restore": true}' — выполняет только задачи восстановления

3.2. Восстановление дисков

На этом этапе восстанавливаются только тома, объектам кластера нельзя запускаться до восстановления дисков.

Выполните действия в Velero:

  1. В боковом меню перейдите в раздел Backups.

  2. В боковом меню выберите резервную копию и в колонке Actions нажмите на иконку восстановления. Откроется окно для настроек восстановления из резервной копии:

    1. Restore name — укажите название.

      velero restore volumes
    2. На шаге backup активируйте опции:

      • Include Cluster Resources

      • Restore Volumes

      • Preserve Node Ports

        velero restore volumes 2
  3. На шаге Resources в поле Excluded Resources введите следующие объекты кластера, которые нужно исключить из восстановления, чтобы избежать ошибок в процессе:

    deployments, statefulsets, daemonsets, pods, replicasets, validatingwebhookconfigurations, volumeattachments
    velero restore volumes 3
  4. Шаг Mapping & Labels оставьте без изменений.

  5. На шаге Confirmation проверьте параметры и нажмите Confirm.

Дождитесь завершения процесса восстановления в Velero. Восстановление объектов произойдёт быстро, однако восстановление дисков в Longhorn может занять значительное время.

Не переходите к следующему этапу, пока все диски (Volumes) в Longhorn не восстановятся и не перейдут в статус Detached и Ready for workload: Ready.

velero longhorn volumes
velero longhorn volumes 2

3.3. Восстановление объектов кластера

После полного восстановления всех дисков (томов) можно восстанавливать контроллеры, которые будут монтировать эти тома.

Выполните действия в Velero:

  1. На шаге Info не включайте дополнительные опции.

  2. На шаге Resources в поле Included Resources удалите тип * (обозначает — все объекты) и добавьте следующие объекты:

    deployments, statefulsets, daemonsets, validatingwebhookconfigurations
    velero restore objects 1

Дождитесь, когда все поды будут успешно созданы и запущены.

4. Удаление резервной копии

После восстановления кластера рекомендуется удалить резервную копию через Velero. Для этого используйте команду:

velero backup delete <BACKUP_NAME>

Эта команда удаляет в Velero ресурс резервной копии и запускает очистку её метаданных и объектов, которые хранятся в объектном хранилище.

Даже после успешного удаления через Velero могут остаться:

  • данные резервных копий томов, созданные Longhorn (CS I‑snapshot/backup);

  • объекты в бакете MinIO, куда экспортируются резервные копии томов.

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