Создание бэкапов

Предварительные требования

  1. Подключено S3-хранилище.
  2. Установлен и работает модуль резервного копирования и восстановления (shturval-backup) — режим Авто, см. обзор сервисов.

Ресурс Backup (разовый бэкап)

Имя, TTL, хранилище, лейблы бэкапа и селектор объектов (неймспейсы, типы ресурсов, лейблы) задают объём данных. Селектор в форме интерфейса работает по принципу «И»: в бэкап попадают выбранные объекты кластера/неймспейсов и объекты с выбранными лейблами или выражениями.

Для сложной конфигурации бэкапа рекомендуется использовать YAML-манифест. Загрузить его в графический интерфейс можно через импорт манифестов.


В графическом интерфейсе кластера или неймспейса

ДействиеПуть
Разовый бэкапРезервное копирование и восстановление → Резервные копии → Добавить резервную копию
ПланировщикРезервное копирование и восстановление → Планировщики → Добавить планировщик
Скриншоты — иллюстрация

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

Выбор объектов для бэкапа

Добавление планировщика резервных копий

Статус бэкапа

Манифест бэкапа


Параметры резервной копии

ПолеПараметр в манифестеОписание
Имяmetadata.nameОбязательное. Строчные латинские буквы и цифры, начинается с буквы. После создания не меняется.
TTLspec.ttlВремя жизни бэкапа в хранилище.
Хранилищеspec.storageLocationВыбранный BackupStorageLocation.
defaultVolumesToFsBackupspec.defaultVolumesToFsBackupРезервное копирование томов через файловую систему пода (по умолчанию включено). Для полного бэкапа кластера с PV рекомендуется отключить, чтобы снизить риск ошибок при восстановлении (см. справочник).
Лейблы бэкапаmetadata.labelsМетки, проставляемые на создаваемый объект Backup.

Выбор ресурсов и неймспейсов

В кластере доступно: Копирование кластерных ресурсов, Копирование неймспейсов, Копирование неймспейсных ресурсов. В неймспейсе доступен только блок Копирование неймспейсных ресурсов.

Состав резервной копии задаётся отдельно для кластерных ресурсов, неймспейсов и неймспейсных ресурсов: что включить в копию и что из неё исключить. Один и тот же ресурс или неймспейс нельзя одновременно включить и исключить.

ПолеПараметр в манифестеОписание
Включить кластерные ресурсыspec.includedClusterScopedResourcesТипы кластерных ресурсов, включаемые в резервную копию.
Исключить кластерные ресурсыspec.excludedClusterScopedResourcesТипы кластерных ресурсов, исключаемые из резервной копии.
Включить неймспейсыspec.includedNamespacesНеймспейсы, включаемые в резервную копию.
Исключить неймспейсыspec.excludedNamespacesНеймспейсы, исключаемые из резервной копии.
Включить неймспейсные ресурсыspec.includedNamespaceScopedResourcesТипы неймспейсных ресурсов, включаемые в резервную копию.
Исключить неймспейсные ресурсыspec.excludedNamespaceScopedResourcesТипы неймспейсных ресурсов, исключаемые из резервной копии.

В ресурсе Schedule те же параметры задаются в spec.template.

Чекбокс Все кластерные ресурсы, Все неймспейсные ресурсы или Все неймспейсы выбирает сразу всё в этом списке (*Все ресурсы или неймспейсы. В манифест передаётся единственное значение *) и снимает уже отмеченные имена. Если затем выбрать конкретный ресурс или неймспейс, отметка «все» снимается.

Правило исключения всех неймспейсов в Velero заблокировано, поэтому в интерфейсе чекбокс Все неймспейсы недоступен. Исключить можно только выбранные неймспейсы.

Неймспейс velero исключается автоматически — его восстановление приводит к ошибке.

В одном списке нельзя одновременно выбрать «все» (*) и отдельные имена. Сохранить такую настройку не получится.

Если ничего не включили и ничего не исключили, в копию попадёт всё в этом блоке. Неймспейс velero и промежуточные CSI-снапшоты платформа не копирует в любом случае.

Можно включить все ресурсы (*) и исключить отдельные типы. Наоборот нельзя: исключить всё и при этом что-то включить. Если и во включении, и в исключении стоит «все» (*), в копию не попадёт ничего.

Зависимые объекты: при выборе PVC в неймспейсные ресурсы в бэкап попадает связанный PV.

Автоисключение CSI-снапшотов: при обработке Backup контроллер Velero (начиная с v1.17.0, в платформе — с 2.13.1) автоматически добавляет в исключения volumesnapshots.snapshot.storage.k8s.io и volumesnapshotcontents.snapshot.storage.k8s.io, даже если в конфигурации в интерфейсе они не задавались. Подробности — Автоматическое исключение промежуточных CSI-ресурсов.

Скриншоты

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

Выбор объектов для бэкапа

Выбор объектов для бэкапа

Исключение объекта по лейблу (Velero)

Отдельный объект можно исключить из бэкапа лейблом velero.io/exclude-from-backup=true (применимо, если объект попадает под общий селектор). Подробности и пример команды — Backup Reference (v1.17).

Статус и манифест

Статус выполнения отображается в ресурсе Backup — смотрите поле status.phase. Восстановление из конкретной копии возможно после завершения (Completed или PartiallyFailed) бэкапирования, см. Когда можно восстановить. YAML доступен как манифест того же ресурса. Удалить запись о бэкапе можно со страницы списка бэкапов, со страницы просмотра бэкапа или удалив объект на вкладке манифеста. В списке резервных копий кластера и неймспейса можно удалить одну копию или несколько сразу. Как выбрать объекты и подтвердить удаление — в разделе Множественное удаление.

Удаление только CR Backup через kubectl delete backup не удаляет данные из объектного хранилища; полное удаление данных — через velero backup delete <имя> (Backup Reference (v1.17)).

После правок манифеста бэкапа или планировщика в интерфейсе нажмите Проверить; при ошибке формата манифеста проверка недоступна.

Пример: Backup (YAML)

Имя в spec.storageLocation должно совпадать с именем подключённого хранилища (BackupStorageLocation).

apiVersion: velero.io/v1
kind: Backup
metadata:
  name: backup-my-namespace
  namespace: velero
spec:
  storageLocation: default
  ttl: 720h
  includedNamespaces:
  - my-app
  includedNamespaceScopedResources:
  - "*"
  excludedNamespaceScopedResources:
  - events
  defaultVolumesToFsBackup: false

Импорт: Импорт манифестов.


Ресурс Schedule (планировщик)

Планировщик создаёт бэкапы по расписанию. Выбор ресурсов и неймспейсов, автоисключение CSI-снапшотов и зависимые объекты — те же, что у разового бэкапа. Изменения в сохранённом планировщике применяются к новым бэкапам, уже созданные не пересобираются. В списке планировщиков кластера и неймспейса можно удалить один планировщик или несколько сразу. Как выбрать объекты и подтвердить удаление — в разделе Множественное удаление.

Скриншот: добавление планировщика

Добавление планировщика резервных копий

ПолеПараметр в манифестеОписание
Имя планировщикаmetadata.nameОбязательное. Строчные латинские буквы и цифры, начинается с буквы. После создания не меняется.
Лейблыmetadata.labelsМетки, проставляемые на создаваемый объект Schedule.
Расписаниеspec.scheduleОбязательное. Cron или CRON_TZРасписание может быть задано в формате Cron или с часовым поясом, например, CRON_TZ=Europe/Moscow 0 3 * * *. При переходе на летнее/зимнее время может не наступить или наступить дважды событие по расписанию. Плейсхолдер поля: CRON_TZ=Europe/Moscow 0 3 * * *. Если указано не только cron-выражение, проверяются префикс CRON_TZ= и указание таймзоны через /.
Время хранения резервной копииspec.template.ttlВремя жизни создаваемых бэкапов в хранилище. Задаётся в часах, минутах и секундах; по умолчанию 720 ч.
Имя хранилищаspec.template.storageLocationВыбранный BackupStorageLocation.
defaultVolumesToFsBackupspec.template.defaultVolumesToFsBackupРезервное копирование томов через файловую систему пода. Да — включено, Нет — выключено.

Формат с часовым поясом — в Backup Reference (v1.17).

Для сложной конфигурации планировщика рекомендуется использовать YAML-манифест. Загрузить его в графический интерфейс можно через импорт манифестов.

Пример: Schedule (YAML)

apiVersion: velero.io/v1
kind: Schedule
metadata:
  name: daily-my-app
  namespace: velero
spec:
  schedule: "CRON_TZ=Europe/Moscow 0 3 * * *"
  template:
    ttl: 168h
    storageLocation: default
    includedNamespaces:
    - my-app
    includedNamespaceScopedResources:
    - "*"
    excludedNamespaceScopedResources:
    - events
    defaultVolumesToFsBackup: false

При сбоях см. Траблшутинг.