Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Compute Cloud
  • Yandex Container Solution
    • Все руководства
    • Настройка синхронизации часов с помощью NTP
    • Автомасштабирование группы ВМ для обработки сообщений из очереди
    • Обновление группы ВМ под нагрузкой
    • Развертывание Remote Desktop Gateway
    • Начало работы с Packer
    • Передача логов с ВМ в Yandex Cloud Logging
    • Сборка образа ВМ с набором инфраструктурных инструментов с помощью Packer
    • Миграция в Yandex Cloud с помощью Хайстекс Акура
    • Защита от сбоев с помощью Хайстекс Акура
    • Резервное копирование ВМ с помощью Хайстекс Акура
    • Развертывание отказоустойчивой архитектуры с прерываемыми ВМ
    • Настройка отказоустойчивой архитектуры в Yandex Cloud
    • Создание триггера для бюджетов, который вызывает функцию для остановки ВМ
    • Создание триггеров, которые вызывают функции для остановки ВМ и отправки уведомлений в Telegram
    • Создание веб-приложения на Python с использованием фреймворка Flask
    • Создание SAP-программы в Yandex Cloud
    • Развертывание сервера Minecraft в Yandex Cloud
    • Автоматизация сборки образов с помощью Jenkins и Packer
    • Создание тестовых виртуальных машин через GitLab CI
    • Высокопроизводительные вычисления (HPC) на прерываемых ВМ
    • Настройка SFTP-сервера на Centos 7
    • Развертывание параллельной файловой системы GlusterFS в высокодоступном режиме
    • Развертывание параллельной файловой системы GlusterFS в высокопроизводительном режиме
    • Резервное копирование в Object Storage с помощью Bacula
    • Построение пайплайна CI/CD в GitLab с использованием serverless-продуктов
    • Реализация защищенной высокодоступной сетевой инфраструктуры с выделением DMZ на основе Check Point NGFW
    • Сегментация облачной инфраструктуры с помощью решения Check Point Next-Generation Firewall
    • Настройка защищенного туннеля GRE поверх IPsec
    • Создание бастионного хоста
    • Реализация отказоустойчивых сценариев для сетевых виртуальных машин
    • Создание туннеля между двумя подсетями при помощи OpenVPN Access Server
    • Создание внешней таблицы на базе таблицы из бакета Object Storage с помощью конфигурационного файла
    • Настройка сетевой связности между подсетями BareMetal и Virtual Private Cloud
    • Работа со снапшотами в Managed Service for Kubernetes
    • Запуск языковой модели DeepSeek-R1 в кластере GPU
    • Запуск библиотеки vLLM с языковой моделью Gemma 3 на ВМ с GPU
    • Доставка USB-устройств на виртуальную машину или сервер BareMetal
  • Управление доступом
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • История изменений
  • Обучающие курсы

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

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

Работа со снапшотами в Yandex Managed Service for Kubernetes

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

В Managed Service for Kubernetes доступны снапшоты — копии дисков PersistentVolume на определенный момент времени. Подробнее о механизме снапшотов см. в документации Kubernetes.

Чтобы создать снапшот, а потом восстановить его:

  1. Подготовьте тестовое окружение.
  2. Создайте снапшот.
  3. Восстановите объекты из снапшота.

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

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

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

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

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

  1. Создайте ресурсы Kubernetes:

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

      Важно

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

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

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

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

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

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

    5. Скачайте в ту же рабочую директорию файл конфигурации кластера k8s-cluster.tf. В файле описаны:

      • Сеть.

      • Подсеть.

      • Кластер Managed Service for Kubernetes.

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

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

        Важно

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

    6. Укажите в файле конфигурации идентификатор каталога.

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

      terraform validate
      

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

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

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

        terraform plan
        

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

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

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

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

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

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

  2. Установите kubectl и настройте его на работу с созданным кластером.

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

Для проверки работы со снапшотами будет создан PersistentVolumeClaim и под, имитирующий рабочую нагрузку.

  1. Создайте файл 01-pvc.yaml с манифестом PersistentVolumeClaim:

    ---
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: pvc-dynamic
    spec:
      accessModes:
        - ReadWriteOnce
      storageClassName: yc-network-hdd
      resources:
        requests:
          storage: 5Gi
    
  2. Создайте PersistentVolumeClaim:

    kubectl apply -f 01-pvc.yaml
    
  3. Убедитесь, что PersistentVolumeClaim создан и имеет состояние Pending:

    kubectl get pvc pvc-dynamic
    
  4. Создайте файл 02-pod.yaml с манифестом пода pod-source:

    ---
    apiVersion: v1
    kind: Pod
    metadata:
      name: pod-source
    spec:
      containers:
        - name: app
          image: ubuntu
          command: ["/bin/sh"]
          args:
            ["-c", "while true; do echo $(date -u) >> /data/out.txt; sleep 5; done"]
          volumeMounts:
            - name: persistent-storage
              mountPath: /data
      volumes:
        - name: persistent-storage
          persistentVolumeClaim:
            claimName: pvc-dynamic
    

    Контейнер пода будет записывать текущие дату и время в файл /data/out.txt.

  5. Создайте под pod-source:

    kubectl apply -f 02-pod.yaml
    
  6. Убедитесь, что под перешел в состояние Running:

    kubectl get pod pod-source
    
  7. Убедитесь, что в файл /data/out.txt попадают записи даты и времени. Для этого выполните команду на поде:

    kubectl exec pod-source -- tail /data/out.txt
    

    Результат:

    Thu Feb 3 04:55:21 UTC 2022
    Thu Feb 3 04:55:26 UTC 2022
    ...
    

Создайте снапшотСоздайте снапшот

  1. Создайте файл 03-snapshot.yaml с манифестом снапшота:

    ---
    apiVersion: snapshot.storage.k8s.io/v1
    kind: VolumeSnapshot
    metadata:
      name: new-snapshot-test
    spec:
      volumeSnapshotClassName: yc-csi-snapclass
      source:
        persistentVolumeClaimName: pvc-dynamic
    
  2. Создайте снапшот:

    kubectl apply -f 03-snapshot.yaml
    
  3. Убедитесь, что снапшот создан:

    kubectl get volumesnapshots.snapshot.storage.k8s.io
    
  4. Убедитесь, что создан VolumeSnapshotContent:

    kubectl get volumesnapshotcontents.snapshot.storage.k8s.io
    

Восстановите объекты из снапшотаВосстановите объекты из снапшота

При восстановлении из снапшота в кластере будут созданы:

  • Объект PersistentVolumeClaim с именем pvc-restore.
  • Под с именем pod-restore, содержащий записи в файле /data/out.txt.

Чтобы восстановить снапшот:

  1. Создайте файл 04-restore-snapshot.yaml с манифестом нового PersistentVolumeClaim:

    ---
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: pvc-restore
    spec:
      storageClassName: yc-network-hdd
      dataSource:
        name: new-snapshot-test
        kind: VolumeSnapshot
        apiGroup: snapshot.storage.k8s.io
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 10Gi
    

    Совет

    Вы можете изменить размер создаваемого PersistentVolumeClaim. Для этого укажите нужный размер в значении настройки spec.resources.requests.storage.

  2. Создайте новый PersistentVolumeClaim:

    kubectl apply -f 04-restore-snapshot.yaml
    
  3. Убедитесь, что PersistentVolumeClaim создан и имеет состояние Pending:

    kubectl get pvc pvc-restore
    
  4. Создайте файл 05-pod-restore.yaml с манифестом нового пода pod-restore:

    ---
    apiVersion: v1
    kind: Pod
    metadata:
      name: pod-restore
    spec:
      containers:
        - name: app-restore
          image: ubuntu
          command: ["/bin/sh"]
          args: ["-c", "while true; do sleep 5; done"]
          volumeMounts:
            - name: persistent-storage-r
              mountPath: /data
      volumes:
        - name: persistent-storage-r
          persistentVolumeClaim:
            claimName: pvc-restore
    

    Контейнер нового пода не будет производить никаких действий с файлом /data/out.txt.

  5. Создайте под pod-restore:

    kubectl apply -f 05-pod-restore.yaml
    
  6. Убедитесь, что под перешел в состояние Running:

    kubectl get pod pod-restore
    
  7. Убедитесь, что новый PersistentVolumeClaim перешел в состояние Bound:

    kubectl get pvc pvc-restore
    
  8. Убедитесь, что файл /data/out.txt на новом поде содержит записи, которые контейнер пода pod-source записал в файл до создания снапшота:

    kubectl exec pod-restore -- tail /data/out.txt
    

    Результат:

    Thu Feb 3 04:55:21 UTC 2022
    Thu Feb 3 04:55:26 UTC 2022
    ...
    

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

Удалите ресурсы, которые вы больше не будете использовать, чтобы за них не списывалась плата:

  1. Удалите кластер Managed Service for Kubernetes:

    Вручную
    Terraform

    Удалите кластер Managed Service for Kubernetes.

    1. В терминале перейдите в директорию с планом инфраструктуры.

      Важно

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

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

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

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

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

  2. Если вы зарезервировали для кластера публичный статический IP-адрес, удалите его.

  3. Удалите снимок диска.

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

Предыдущая
Настройка сетевой связности между подсетями BareMetal и Virtual Private Cloud
Следующая
Создать ВМ с Container Optimized Image
Проект Яндекса
© 2025 ООО «Яндекс.Облако»