Восстановление кластеров с помощью Velero
Velero — это инструмент с открытым исходным кодом, предназначенный для резервного копирования и восстановления ресурсов Kubernetes, выполнения аварийного восстановления и миграции приложений между кластерами. Он позволяет сохранять и восстанавливать как объекты Kubernetes, так и данные постоянных томов при интеграции с Longhorn.
|
1. Активация Velero
-
Чтобы включить установку Velero, обновите файл:
inventories/sample/group_vars/k3s/config.yaml. -
В секции параметров 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:
|
2. Создание бэкапа
-
Авторизуйтесь в сервисе Velero.
-
Перейдите в раздел Backups нажмите + New.
-
На шаге Type — выберите From Scratch.
-
На шаге Info настройте следующие параметры:
-
Backup Name — задайте уникальное название для бэкапа.
-
TTL — задайте время жизни бэкапа в часах.
-
Included Namespaces — выберите "portal-box".
-
Options — активируйте опцию Snapshot Volumes, чтобы сохранить содержимое Longhorn-томов.
-
Storage Location — выберите локацию default.
-
-
На шаге Resources активируйте опцию Include Cluster Resources.
-
Пропустите шаг Labels.
-
-
На последнем шаге Confirmation проверьте правильность заполненных параметров и нажмите Confirm.
Дождитесь завершения создания бэкапа, его статус должен быть 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:
-
В боковом меню перейдите в раздел Backups.
-
В боковом меню выберите бэкап и в колонке Actions нажмите на иконку восстановления. Откроется окно для настроек восстановления из бэкапа:
-
Restore name — укажите название.
-
На шаге backup активируйте опции:
-
Include Cluster Resources
-
Restore Volumes
-
Preserve Node Ports
-
-
-
На шаге Resources в поле Excluded Resources введите следующие объекты кластера, которые нужно исключить из восстановления, чтобы избежать ошибок в процессе:
deployments, statefulsets, daemonsets, pods, replicasets, validatingwebhookconfigurations, volumeattachments
-
Шаг Mapping & Labels оставьте без изменений.
-
На шаге Confirmation проверьте параметры и нажмите Confirm.
Дождитесь завершения процесса восстановления в Velero. Восстановление объектов произойдёт быстро, однако восстановление дисков в Longhorn может занять значительное время.
|
Не переходите к следующему этапу, пока все диски (Volumes) в Longhorn не восстановятся и не перейдут в статус Detached и Ready for workload: Ready.
|
3.3. Этап 3. Восстановление объектов кластера
Теперь, после полного восстановления всех дисков (Volumes), можно восстанавливать контроллеры, которые будут монтировать эти тома.
Выполните действия в Velero:
-
На шаге Info не включайте дополнительные опции.
-
На шаге Resources в поле Included Resources удалите тип
*(обозначает - все объекты) и добавьте следующие объекты:deployments, statefulsets, daemonsets, validatingwebhookconfigurations
Дождитесь, когда все поды будут успешно созданы и запущены.
4. Удаление бэкапа
После восстановления кластера рекомендуется удалить бэкап через Velero. Для этого используйте команду:
velero backup delete <BACKUP_NAME>
Эта команда удаляет в Velero ресурс бэкапа и запускает очистку его метаданных и объектов, которые хранятся в объектном хранилище.
|
Даже после успешного удаления через Velero могут остаться:
Выполните удаление вручную, очистив бакет с бэкапами. |