Резервное копирование по расписанию

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

Подготовительные шаги

  1. Создайте кластер Kubernetes актуальной версии, если это еще не сделано.
  2. Убедитесь, что вы можете подключиться к кластеру с помощью kubectl.
  3. Установите и настройте Velero, если это еще не сделано.

1. Создайте расписание резервного копирования

Создайте расписание резервного копирования для нужного пространства имен:

velero schedule create <НАЗВАНИЕ_РАСПИСАНИЯ> --schedule="0 7 * * *" --include-namespaces <ПРОСТРАНСТВО_ИМЕН>

Здесь:

  • <НАЗВАНИЕ_РАСПИСАНИЯ> — название расписания, по которому вы сможете в дальнейшем найти его в списке расписаний резервного копирования.

  • <ПРОСТРАНСТВО_ИМЕН> — пространство имен кластера, для которого нужно настроить расписание. Вы можете указать несколько пространств имен через запятую. Пример такого перечисления:

    --include-namespaces test_namespace1,test_namespace2,test_namespace3

    Вы также можете исключить отдельные ресурсы из резервного копирования, даже если они соответствуют пространству имен, указанному при настройке расписания. Примеры такого исключения:

    --exclude-resources secrets--exclude-namespaces test_namespace1,test_namespace2,test_namespace3

    Подробнее в официальной документации Velero.

  • --schedule — параметр, который задает время создания резервных копий в формате cron, например 0 7 * * *. Каждый символ отвечает за конкретное значение времени.

В результате работы такого расписания резервные копии будут создаваться ежедневно в 07:00. Название каждой резервной копии будет в формате <НАЗВАНИЕ_РАСПИСАНИЯ>-<TIMESTAMP>, где <TIMESTAMP> — время ее создания. Пример названия: daily-backup-20260318070000.

2. Просмотрите созданное расписание

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

    velero schedule get --namespace <ПРОСТРАНСТВО_ИМЕН> <НАЗВАНИЕ_РАСПИСАНИЯ>

    Здесь:

    • <ПРОСТРАНСТВО_ИМЕН> — пространство имен, для которого создано расписание резервного копирования.
    • <НАЗВАНИЕ_РАСПИСАНИЯ> — название расписания.

    Пример вывода команды:

    NAME                      STATUS   CREATED                         SCHEDULE    BACKUP TTL   LAST BACKUP   SELECTOR   PAUSEDmy-schedule               New      2024-11-11 15:35:32 +0600 +06   0 7 * * *   0s           n/a           <none>     false
  2. Проверьте параметры расписания с помощью команды:

    velero schedule describe <НАЗВАНИЕ_РАСПИСАНИЯ>

    Пример вывода команды:

    Name:         my_scheduleNamespace:    test_namespaceLabels:       <none>Annotations:  <none>Phase:  NewPaused:  false

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

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

velero restore create --namespace <ПРОСТРАНСТВО_ИМЕН> --from-schedule <НАЗВАНИЕ_РАСПИСАНИЯ>

Удалите неиспользуемые ресурсы

Работающий кластер тарифицируется и потребляет вычислительные ресурсы. Если инструмент Velero и ресурсы Kubernetes, созданные для проверки резервного копирования с его помощью, вам больше не нужны, удалите их:

  1. Удалите ресурс restore:

    kubectl -n velero delete restorevelero restore delete
  2. Удалите Velero:

    velero uninstall
  3. Удалите резервные копии из бакета, который использовался Velero.

    При необходимости также удалите сам бакет.

  4. Остановите созданный кластер, чтобы воспользоваться им позже, или удалите его навсегда.