Восстановление сервиса из бэкапа Longhorn
1. О Longhorn
Longhorn — это легкая, надежная и простая в использовании распределенная блочная система хранения данных для Kubernetes.
В этой инструкции описывается создание автоматических регулярных резервных копий в сервисе Longhorn и восстановление сервисов портала Cloudlink из бэкапа.
Longhorn совместим с хранилищами NFS, CIFS, Azure или серверами, совместимыми с S3.
Подробнее о работе с резервным копированием — в официальной документации Longhorn.
2. Создание бэкапа
В этой инструкции описывается создание автоматических регулярных бэкапов.
|
Создание бэкапов вручную можно настроить в интерфейсе Longhorn — подробнее об этом ниже. Однако этот способ не рекомендуется, так как настроенные вручную бэкапы могут быть перезаписаны автоматическими бэкапами при обновлении портала. |
При установке портала Cloudlink бэкап сервисов можно настроить в переменных деплоя (config.yml). Также настройка бэкапа возможна после установки.
Перед созданием бэкапа, установите предварительные настройки в установочном файле config.yaml:
-
backup_target-- укажите сервер nfs для хранения бэкапов. Если значение не указано, то бэкапы на удаленный сервер не выполняются. Общий вид nfs-ссылки:nfs://<server>[:<port>]/<path>. -
backup_recurring_job— настройка автоматического резервного копирования всех томов. Значение "true" — резервное копирование активировано, "false" — деактивировано. -
backup_cron--- расписание, с какой частотой создаются бэкапы. -
backup_retain— количество последних бэкапов, которые нужно хранить. При переполнении хранилища самые последние бэкапы удаляются или перезаписываются.
Пример параметров в config.yml:
backup_target: nfs://storage.portal.box:/path/to/folder
backup_recurring_job: true
backup_cron: "0 0 * * *"
backup_retain: 7
| В инструкции описана настройка NFS-подключения без пароля. О создании дополнительных механизмов защиты данных — в официальной документации Longhorn. |
|
Вручную можно создать бэкап в интерфейсе Longhorn, однако имя "Recurring Job" не должно быть "backup", так как это имя по умолчанию используется для автоматического создания бэкапов в файле config.yml
Время создания бэкапа отображается по умолчанию во временной зоне UTC. Созданные бэкапы расположены на вкладке Backup. Отображаемое состояние бэкапа Creation State — "Complete". |
3. Восстановление сервиса из бэкапа
3.1. Подготовка к восстановлению сервиса
Восстановить можно только те сервисы, которые хранят свое состояние в собственной файловой системе (Stateful Sets). Это такие сервисы, как Clickhouse, Keykclock, Postgress (Vault), Zookeeper.
|
Для сервисов-операторов (например, postgres-operator (pgo), clickhouse) процесс восстановления из бэкапа отличается. Подробнее о восстановлении сервисов-операторов. |
В этой инструкции используется интерфейс Lens (Kubernetes IDE).
| В процессе выполнения следующих действий, сервис будет недоступен до его полного восстановления из бэкапа. |
-
Чтобы остановить сервис, уменьшите реплики до нуля. Выполните действия с помощью kubectl или через IDE-интерфейс:
-
Выполните команды в kubectl:
-
Получите имя развертывания:
kubectl get deployments | grep nexus -
Уменьшите количество реплик до нуля:
kubectl scale deployments [SERVICE NAME] --replicas=0
-
-
В интерфейсе Kubernetes IDE:
-
Перейдите в раздел Workloads → Stateful Sets.
-
В строке с выбранным сервисом нажмите на кнопку ⋮ и выберите Scale.
-
Уменьшите значение Scale до нуля.

-
-
-
Удалите PV/PVC (Persistent Volume) принадлежащее сервису. Выполните действия с помощью kubectl или через IDE-интерфейс:
-
Выполните команды в kubectl:
-
Получите имя PVC:
kubectl get pvc | grep nexus -
Получите имя PV (Persistent Volume)
kubectl describe pvc [PVC NAME] | grep -i volume: | awk '{print $2}' -
Удалите PVC:
kubectl delete pvc [PVC NAME] -
Удалите PV:
kubectl delete pv [PERSISTENT VOLUME ID]
-
-
В интерфейсе Kubernetes IDE:
-
Перейдите в раздел Storage → Persistent Volumes.
-
Найдите нужный диск и в строке с ним нажмите на кнопку ⋮ и выберите Delete.

-
-
3.2. Действия по восстановлению
Восстановление сервиса из бэкапа возможно только в интерфейсе Longhorn:
-
Удалите Volume в сервисе Longhorn. Для этого:
-
Перейдите в сервис Longhorn.
-
Нажмите на вкладку Volume.
-
В списке дисков найдите нужный и в строке с ним нажмите на кнопку меню ≡ и выберите Delete.
-
Подтвердите удаление.
-
-
Восстановите Volume из бэкапа. Для этого:
-
Перейдите в сервис Longhorn.
-
Нажмите на вкладку Backup.
-
В списке бэкапов найдите нужный и в строке с ним нажмите на кнопку меню ≡ и выберите Restore Latest Backup.
-
В форме восстановления укажите:
-
Use Previous Name — активируйте эту опцию, та как важно совпадение названий дисков при восстановлении из бэкапа.
-
Прочие настройки оставьте по умолчанию и нажмите OK.
После этого запустится восстановление из бэкапа. Процесс восстановления может занять несколько минут. Просмотреть состояние восстанавливающегося диска можно на вкладке Volume. Дождитесь полного восстановления диска (Volume). Его статус будет "Ready"
-
-
-
Восстановите PV/PVC. Для этого
-
Перейдите в сервис Longhorn.
-
Нажмите на вкладку Volume.
-
В списке дисков найдите нужный и в строке с ним нажмите на кнопку меню ≡ и нажмите Backup.
-
-
Увеличьте количество реплик до предыдущего значения. Для этого:
-
Перейдите в интерфейс Kubernetes IDE.
-
Перейдите в раздел Workloads → Stateful Sets.
-
В строке с выбранным сервисом нажмите на кнопку ⋮ и выберите Scale.
-
Увеличьте значение Scale до предыдущего состояния.
Количество реплик Scale нужно увеличить до того количества, которое было ранее задано для этого сервиса. Если при восстановлении из бэкапа реплик будет больше или меньше предыдущего значения, то возможны ошибки восстановления.
-
4. Восстановление из бэкапа сервисов-операторов
Операторы — это сервисы, которые управляют другими сервисами (например, postgres-operator (pgo), clickhouse). У некоторых операторов в названии присутствует обозначение "operator" — так их можно отличить от обычных сервисов.
Их восстановление из бэкапа отличается от обычных сервисов.
4.1. Подготовка к восстановлению
| В процессе выполнения следующих действий, сервис будет недоступен до его полного восстановления из бэкапа. |
-
Чтобы остановить сервис, уменьшите реплики оператора до нуля. Для этого:
-
В интерфейсе Kubernetes IDE перейдите в раздел Workloads → Stateful Sets.
-
В строке с выбранным сервисом нажмите на кнопку ⋮ и выберите Scale.
-
Уменьшите значение Scale до нуля.
-
-
Уменьшите реплики сервисов оператора до нуля. Для этого:
-
В интерфейсе Kubernetes IDE перейдите в раздел Workloads → Stateful Sets.
-
В строке с выбранным сервисом нажмите на кнопку ⋮ и выберите Scale.
-
Уменьшите значение Scale до нуля.
-
-
Удалите PV/PVC (Persistent Volume) принадлежащее сервису. Для этого:
-
Перейдите в раздел Storage → Persistent Volumes.
-
Найдите нужный диск и в строке с ним нажмите на кнопку ⋮ и выберите Delete.
-
4.2. Действия по восстановлению
-
Удалите Volume из сервиса Longhorn. Для этого:
-
Перейдите в сервис Longhorn.
-
Нажмите на вкладку Volume.
-
В списке дисков найдите нужный и в строке с ним нажмите на кнопку меню ≡ и выберите Delete.
-
Подтвердите удаление.
-
-
Восстановите Volume из бэкапа. Для этого:
-
Перейдите в сервис Longhorn.
-
Нажмите на вкладку Backup.
-
В списке бэкапов найдите нужный и в строке с ним нажмите на кнопку меню ≡ и выберите Restore Latest Backup.
-
В форме восстановления укажите:
-
Use Previous Name — активируйте эту опцию, та как важно совпадение названий дисков при восстановлении из бэкапа.
-
Прочие настройки оставьте по умолчанию и нажмите OK.
После этого запустится восстановление из бэкапа. Процесс восстановления может занять несколько минут. Просмотреть состояние восстанавливающегося диска можно на вкладке Volume. Дождитесь полного восстановления диска (Volume). Его статус будет "Ready"
-
-
-
Увеличьте количество реплик сервисов оператора до предыдущего значения. Для этого:
-
Перейдите в интерфейс Kubernetes IDE.
-
Перейдите в раздел Workloads → Stateful Sets.
-
В строке с выбранным сервисом нажмите на кнопку ⋮ и выберите Scale.
-
Увеличьте значение Scale до предыдущего состояния. Для сервиса увеличивать количество реплик не нужно, оператор сам поднимет правильное значение.
-
-
Восстановите PV/PVC. Для этого
-
Перейдите в сервис Longhorn.
-
Нажмите на вкладку Volume.
-
В списке дисков найдите нужный и в строке с ним нажмите на кнопку меню ≡ и нажмите Backup.
-
