Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Практические руководства
    • Все руководства
    • Миграция в Yandex Cloud с помощью Хайстекс Акура
    • Защита от сбоев с помощью Хайстекс Акура
    • Настройка SFTP-сервера на Centos 7
    • Резервное копирование ВМ с помощью Хайстекс Акура
    • Резервное копирование в Object Storage с помощью MSP360 Backup (CloudBerry Desktop Backup)
    • Резервное копирование в Object Storage через Duplicati
    • Резервное копирование в Object Storage с помощью Bacula
    • Резервное копирование в Object Storage с помощью Veeam Backup
    • Резервное копирование в Object Storage с помощью Veritas Backup Exec
    • Резервное копирование кластера Managed Service for Kubernetes в Object Storage
    • Развертывание параллельной файловой системы GlusterFS в высокодоступном режиме
    • Развертывание параллельной файловой системы GlusterFS в высокопроизводительном режиме
    • Репликация логов в Object Storage с помощью Data Streams
    • Репликация логов в Object Storage с помощью Fluent Bit
    • Использование Object Storage в Yandex Data Processing
    • Подключить сервер BareMetal к Cloud Backup

В этой статье:

  • Необходимые платные ресурсы
  • Перед началом работы
  • Подготовьте инфраструктуру
  • Выполните дополнительные настройки
  • Резервное копирование
  • Восстановление данных из резервной копии
  • Удалите созданные ресурсы
  1. Хранение и восстановление данных
  2. Резервное копирование кластера Managed Service for Kubernetes в Object Storage

Резервное копирование кластера Managed Service for Kubernetes в Object Storage

Статья создана
Yandex Cloud
Улучшена
Обновлена 21 апреля 2025 г.
  • Необходимые платные ресурсы
  • Перед началом работы
    • Подготовьте инфраструктуру
    • Выполните дополнительные настройки
  • Резервное копирование
  • Восстановление данных из резервной копии
  • Удалите созданные ресурсы

Данные в кластерах Managed Service for Kubernetes надежно хранятся и реплицируются в инфраструктуре Yandex Cloud. Однако в любой момент вы можете сделать резервные копии данных из групп узлов кластеров Managed Service for Kubernetes и хранить их в Yandex Object Storage или другом хранилище.

Вы можете создавать резервные копии данных из групп узлов кластера Managed Service for Kubernetes с помощью инструмента Velero. Этот инструмент поддерживает работу с дисками Yandex Cloud с помощью CSI-драйвера Kubernetes, и позволяет создавать моментальные снимки дисков томов.

При работе с Velero, установленным вручную, вы можете использовать nfs, emptyDir, локальный или любой другой тип тома, в котором нет встроенной поддержки моментальных снимков. Чтобы использовать такой тип тома, задействуйте плагин restic при установке Velero. Плагин restic не включен в Velero, установленный из Cloud Marketplace.

Из этой статьи вы узнаете, как создать резервную копию группы узлов одного кластера Managed Service for Kubernetes с помощью Velero, сохранить ее в Object Storage, а затем восстановить в группе узлов другого кластера:

  1. Создайте резервную копию группы узлов Managed Service for Kubernetes.
  2. Восстановите группу узлов другого кластера Managed Service for Kubernetes из резервной копии.

Если созданные ресурсы вам больше не нужны, удалите их.

Необходимые платные ресурсыНеобходимые платные ресурсы

В стоимость поддержки описываемого решения входят:

  • Плата за каждый кластер Managed Service for Kubernetes: использование мастера и исходящий трафик (см. тарифы Managed Service for Kubernetes).
  • Плата за ВМ (две группы узлов и ВМ для управления кластером без публичного доступа): использование вычислительных ресурсов, операционной системы и хранилища (см. тарифы Compute Cloud).
  • Плата за публичные IP-адреса для узлов кластеров (см. тарифы Virtual Private Cloud).
  • Плата за бакет Object Storage: хранение данных и выполнение операций с ними (см. тарифы Object Storage).

Перед началом работыПеред началом работы

Подготовьте инфраструктуруПодготовьте инфраструктуру

Вручную
Terraform
  1. Создайте группы безопасности для кластера Managed Service for Kubernetes и входящих в него групп узлов.

    Эти группы безопасности необходимо настроить для каждого кластера и группы узлов.

    Важно

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

  2. Создайте два кластера Managed Service for Kubernetes. При создании укажите группы безопасности, подготовленные ранее.

    Один кластер Managed Service for Kubernetes будет использован, чтобы создать резервную копию данных для группы узлов, другой — чтобы восстановить данные из копии.

    Если вы планируете работать с кластерами в пределах сети Yandex Cloud, выделять кластерам публичный IP-адрес не нужно. Для подключений извне предоставьте кластерам публичный адрес.

  3. Создайте по группе узлов в каждом кластере. При создании выделите каждой группе публичный IP-адрес и укажите группы безопасности, подготовленные ранее.

  4. Создайте бакет в Object Storage.

  5. Создайте сервисный аккаунт с ролью compute.admin на каталог для работы с Velero.

  6. Выдайте сервисному аккаунту права READ и WRITE к бакету в Object Storage. Для этого выполните настройки ACL бакета.

  7. Создайте статический ключ доступа для сервисного аккаунта и сохраните его идентификатор и значение. Получить значение ключа снова будет невозможно.

  1. Если у вас еще нет Terraform, установите его.

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

  3. Настройте и инициализируйте провайдер. Чтобы не создавать конфигурационный файл с настройками провайдера вручную, скачайте его.

  4. Поместите конфигурационный файл в отдельную рабочую директорию и укажите значения параметров. Если данные для аутентификации не были добавлены в переменные окружения, укажите их в конфигурационном файле.

  5. Скачайте в ту же рабочую директорию файл конфигурации velero-backup.tf.

    В этом файле описаны:

    • Сеть.

    • Подсеть.

    • Два кластера Managed Service for Kubernetes и их группы узлов.

    • Сервисный аккаунт, необходимый для работы кластеров Managed Service for Kubernetes и групп узлов.

    • Группы безопасности, которые содержат необходимые правила для кластера Managed Service for Kubernetes и входящих в него групп узлов.

      Эти группы безопасности будут использоваться обоими кластерами.

      Важно

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

    • Сервисный аккаунт с ролью compute.admin для работы с Velero.

    • Статический ключ доступа для сервисного аккаунта, предназначенного для работы с Velero.

    • Бакет в Object Storage.

  6. Укажите в файле velero-backup.tf:

    • folder_id — идентификатор каталога, в котором будут созданы ресурсы.
    • k8s_version — версию Kubernetes 1.22 или выше.
    • zone_a_v4_cidr_blocks — CIDR подсети, в которой будут размещены кластеры Managed Service for Kubernetes.
    • sa_name_k8s — имя сервисного аккаунта кластеров Managed Service for Kubernetes.
    • sa_name_velero — имя сервисного аккаунта для работы с Velero.
    • storage_sa_id — идентификатор сервисного аккаунта с ролью storage.admin. С помощью него будет создан бакет в Object Storage с разрешением READ и WRITE в ACL для сервисного аккаунта sa_name_velero.
    • bucket_name — имя бакета в Object Storage.
  7. Выполните команду terraform init в директории с конфигурационным файлом. Эта команда инициализирует провайдер, указанный в конфигурационных файлах, и позволяет работать с ресурсами и источниками данных провайдера.

  8. Проверьте корректность файлов конфигурации Terraform с помощью команды:

    terraform validate
    

    Если в файлах конфигурации есть ошибки, Terraform на них укажет.

  9. Создайте необходимую инфраструктуру:

    1. Выполните команду для просмотра планируемых изменений:

      terraform plan
      

      Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.

    2. Если вас устраивают планируемые изменения, внесите их:

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

        terraform apply
        
      2. Подтвердите изменение ресурсов.

      3. Дождитесь завершения операции.

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

  10. Получите и сохраните идентификатор и значение статического ключа сервисного аккаунта, предназначенного для работы с Velero:

    • Идентификатор ключа:

      terraform output -raw access_key
      
    • Значение ключа:

      terraform output -raw secret_key
      

Выполните дополнительные настройкиВыполните дополнительные настройки

  1. Выберите клиентскую часть Velero для своей платформы согласно таблице совместимости.

  2. Скачайте клиентскую часть Velero, распакуйте архив и установите программу. Подробнее об установке программы читайте в документации Velero.

  3. Убедитесь, что клиентская часть Velero установлена. Для этого выполните команду:

    velero version
    

    Результат:

    Client:
            Version: v1.10.3
            Git commit: 18ee078dffd9345df610e0ca9f61b31124e93f50
    

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

Чтобы выполнить резервное копирование данных группы узлов Managed Service for Kubernetes:

  1. Установите kubectl и настройте его на работу с первым кластером Managed Service for Kubernetes.

    Если для кластера не предоставлен публичный адрес и kubectl настроен через внутренний адрес кластера, выполняйте команды kubectl на ВМ Yandex Cloud, находящейся в одной сети с кластером.

  2. Установите приложение Velero:

    Yandex Cloud Marketplace
    Вручную

    Установите приложение Velero согласно инструкции. В поле Имя бакета Object Storage укажите созданный ранее бакет.

    Важно

    Если имя пространства имен, где установлено приложение Velero, отличается от velero, для всех последующих команд дополнительно используйте параметр --namespace <пространство_имен_приложения_Velero>.

    Примечание

    Плагин restic для создания снимков томов nfs, emptyDir, локальных и любых других типов томов без встроенной поддержки моментальных снимков, не включен в приложение Velero.

    1. Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.

      По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

    2. Создайте сервисный аккаунт, необходимый для работы Velero.

    3. Назначьте ему роль storage.editor для доступа к Yandex Object Storage.

    4. Создайте статический ключ доступа для сервисного аккаунта в формате JSON и сохраните его в файл sa-key.json:

      yc iam access-key create \
         --service-account-name=<имя_сервисного_аккаунта> \
         --format=json > sa-key.json
      
    5. Создайте файл credentials с данными статического ключа доступа, полученными ранее:

      [default]
      aws_access_key_id=<идентификатор_ключа>
      aws_secret_access_key=<секретная_часть_ключа>
      
    6. Установите серверную часть Velero в кластер Managed Service for Kubernetes:

      kubectl label volumesnapshotclasses.snapshot.storage.k8s.io yc-csi-snapclass \
      velero.io/csi-volumesnapshot-class="true" && \
      velero install \
        --backup-location-config s3Url=https://storage.yandexcloud.net,region=ru-central1 \
        --bucket <имя_бакета> \
        --plugins velero/velero-plugin-for-aws:v1.5.2 \
        --provider aws \
        --secret-file <путь_к_файлу_credentials> \
        --features=EnableCSI \
        --use-volume-snapshots=true \
        --snapshot-location-config region=ru-central1 \
        --uploader-type=restic
      

      Где:

      • --backup-location-config — параметры хранилища резервных копий. URL-адрес хранилища Object Storage и регион.
      • --bucket — имя бакета Object Storage для хранения резервных копий, созданного ранее.
      • --plugins — образы плагина для совместимости с AWS API.
      • --provider — имя провайдера объектного хранилища.
      • --secret-file — полный путь к файлу с данными статического ключа доступа.
      • --features — список активных функциональных возможностей.
      • --snapshot-location-config — зона доступности, в которой будут размещены снимки дисков.
      • (опционально) --uploader-type=restic — включение плагина restic для создания снимков томов nfs, emptyDir, локальных и любых других типов томов без встроенной поддержки моментальных снимков.

      Результат:

      CustomResourceDefinition/backups.velero.io: attempting to create resource
      CustomResourceDefinition/backups.velero.io: already exists, proceeding
      CustomResourceDefinition/backups.velero.io: created
      ...
      Velero is installed! ⛵ Use 'kubectl logs deployment/velero -n velero' to view the status.
      
    7. Убедитесь, что под Velero перешел в состояние Running:

      kubectl get pods --namespace velero
      
  3. Убедитесь, что квот на количество снимков дисков и их объем достаточно для создания резервной копии данных. Для этого можно использовать сервис проверки квот.

  4. Выполните резервное копирование данных с группы узлов кластера Managed Service for Kubernetes:

    velero backup create my-backup
    

    Результат:

    Backup request "my-backup" submitted successfully.
    Run `velero backup describe my-backup` or `velero backup logs my-backup` for more details.
    
  5. Дождитесь завершения резервного копирования. В графе STATUS появится значение Completed.

    velero backup get
    

    Результат:

    NAME       STATUS     ERRORS  WARNINGS  CREATED                        EXPIRES  STORAGE LOCATION  SELECTOR
    my-backup  Completed  0       0         2020-10-19 17:13:25 +0300 MSK  29d      default           <none>
    

Восстановление данных из резервной копииВосстановление данных из резервной копии

Чтобы восстановить данные группы узлов кластера Managed Service for Kubernetes:

  1. Настройте kubectl на работу со вторым кластером Managed Service for Kubernetes.

    Если для кластера не предоставлен публичный адрес и kubectl настроен через внутренний адрес кластера, выполняйте команды kubectl на ВМ Yandex Cloud, находящейся в одной сети с кластером.

  2. Установите приложение Velero:

    Yandex Cloud Marketplace
    Вручную

    Установите приложение Velero согласно инструкции. В поле Имя бакета Object Storage укажите созданный ранее бакет.

    Важно

    Если имя пространства имен, где установлено приложение Velero, отличается от velero, для всех последующих команд дополнительно используйте параметр --namespace <пространство_имен_приложения_Velero>.

    Примечание

    Плагин restic для создания снимков томов nfs, emptyDir, локальных и любых других типов томов без встроенной поддержки моментальных снимков, не включен в приложение Velero.

    1. Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.

      По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

    2. Создайте сервисный аккаунт, необходимый для работы Velero.

    3. Назначьте ему роль storage.editor для доступа к Yandex Object Storage.

    4. Создайте статический ключ доступа для сервисного аккаунта в формате JSON и сохраните его в файл sa-key.json:

      yc iam access-key create \
         --service-account-name=<имя_сервисного_аккаунта> \
         --format=json > sa-key.json
      
    5. Создайте файл credentials с данными статического ключа доступа, полученными ранее:

      [default]
      aws_access_key_id=<идентификатор_ключа>
      aws_secret_access_key=<секретная_часть_ключа>
      
    6. Установите серверную часть Velero в кластер Managed Service for Kubernetes:

      kubectl label volumesnapshotclasses.snapshot.storage.k8s.io yc-csi-snapclass \
      velero.io/csi-volumesnapshot-class="true" && \
      velero install \
        --backup-location-config s3Url=https://storage.yandexcloud.net,region=ru-central1 \
        --bucket <имя_бакета> \
        --plugins velero/velero-plugin-for-aws:v1.5.2 \
        --provider aws \
        --secret-file <путь_к_файлу_credentials> \
        --features=EnableCSI \
        --use-volume-snapshots=true \
        --snapshot-location-config region=ru-central1 \
        --uploader-type=restic
      

      Где:

      • --backup-location-config — параметры хранилища резервных копий. URL-адрес хранилища Object Storage и регион.
      • --bucket — имя бакета Object Storage для хранения резервных копий, созданного ранее.
      • --plugins — образы плагина для совместимости с AWS API.
      • --provider — имя провайдера объектного хранилища.
      • --secret-file — полный путь к файлу с данными статического ключа доступа.
      • --features — список активных функциональных возможностей.
      • --snapshot-location-config — зона доступности, в которой будут размещены снимки дисков.
      • (опционально) --uploader-type=restic — включение плагина restic для создания снимков томов nfs, emptyDir, локальных и любых других типов томов без встроенной поддержки моментальных снимков.

      Результат:

      CustomResourceDefinition/backups.velero.io: attempting to create resource
      CustomResourceDefinition/backups.velero.io: already exists, proceeding
      CustomResourceDefinition/backups.velero.io: created
      ...
      Velero is installed! ⛵ Use 'kubectl logs deployment/velero -n velero' to view the status.
      
    7. Убедитесь, что под Velero перешел в состояние Running:

      kubectl get pods --namespace velero
      
  3. Проверьте, что в новом кластере Managed Service for Kubernetes отображается резервная копия данных:

    velero backup get
    

    Результат:

    NAME       STATUS     ERRORS  WARNINGS  CREATED                        EXPIRES  STORAGE LOCATION  SELECTOR
    my-backup  Completed  0       0         2020-10-19 17:13:25 +0300 MSK  29d      default           <none>
    
  4. Восстановите данные из резервной копии:

    velero restore create my-restore \
      --exclude-namespaces velero \
      --from-backup my-backup
    

    Где:

    • --exclude-namespaces — список пространств имен, которые необходимо исключить из процесса восстановления.
    • --from-backup — имя резервной копии для восстановления.

    Результат:

    Restore request "my-restore" submitted successfully.
    Run `velero restore describe my-restore` or `velero restore logs my-restore` for more details.
    
  5. Дождитесь завершения восстановления данных из резервной копии. В графе STATUS появится значение Completed.

    velero get restore
    

    Результат:

    NAME        BACKUP     STATUS     STARTED                        COMPLETED                      ERRORS  WARNINGS  CREATED                        SELECTOR
    my-restore  my-backup  Completed  2020-10-20 14:04:55 +0300 MSK  2020-10-20 14:05:22 +0300 MSK  0       23        2020-10-20 14:04:55 +0300 MSK  <none>
    

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

Если созданные ресурсы вам больше не нужны, удалите их:

Вручную
Terraform
  • Удалите кластеры Managed Service for Kubernetes.
  • Если вы зарезервировали для кластеров Managed Service for Kubernetes публичные статические IP-адреса, удалите их.
  • Удалите бакет Object Storage.
  • Удалите сервисный аккаунт для работы с Velero.
  1. В терминале перейдите в директорию с планом инфраструктуры.

    Важно

    Убедитесь, что в директории нет Terraform-манифестов с ресурсами, которые вы хотите сохранить. Terraform удаляет все ресурсы, которые были созданы с помощью манифестов в текущей директории.

  2. Удалите ресурсы:

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

      terraform destroy
      
    2. Подтвердите удаление ресурсов и дождитесь завершения операции.

    Все ресурсы, которые были описаны в Terraform-манифестах, будут удалены.

Была ли статья полезна?

Предыдущая
Резервное копирование в Object Storage с помощью Veritas Backup Exec
Следующая
Развертывание параллельной файловой системы GlusterFS в высокодоступном режиме
Проект Яндекса
© 2025 ООО «Яндекс.Облако»