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

Восстановление кластеров с помощью Velero

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

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

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

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

    velero_enabled: true
    velero_ui_password: "<пароль>"
    velero_s3_bucket: "<имя_бакета>"
    velero_s3_url: "<s3_url>"
    velero_s3_login: "<логин>"
    velero_s3_password: "<пароль>"

    Параметр 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. Этап 1. Восстановление кластера K3s

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

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

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

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

Где:

  • --tags restore -e '{"restore": true}' — выполняет только задачи восстановления.

  • -v — с помощью флага монтируются нужные директории: playbook, SSH-ключ и kubeconfig.

  • --ask-vault-pass — используется для доступа к зашифрованным данным (пароли и секреты).

3.2. Этап 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. Этап 3. Восстановление объектов кластера

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

Выполните действия в 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, куда экспортируются бэкапы томов

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