Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
Yandex Managed Service for Kubernetes
  • Сопоставление с другими сервисами Yandex Cloud
  • Начало работы
  • Пошаговые инструкции
    • Все инструкции
    • Подключение к узлу по SSH
    • Обновление Kubernetes
    • Настройка автомасштабирования
    • Подключение к кластеру
      • Обзор способов подключения
      • Настройка групп безопасности
      • Создание статического файла конфигурации
    • Установка приложений из Cloud Marketplace
      • Основы работы с Cloud Marketplace
      • Установка Argo CD
      • Установка Container Storage Interface для S3
      • Установка Crossplane
      • Установка External Secrets Operator
      • Установка Falco
      • Установка Filebeat
      • Установка Fluent Bit
      • Установка Gateway API
      • Установка GitLab Agent
      • Установка GitLab Runner
      • Установка HashiCorp Vault
      • Установка Ingress-контроллера Application Load Balancer
      • Установка Jaeger
      • Установка Kyverno & Kyverno Policies
      • Установка Loki
      • Установка Metrics Provider
      • Установка NodeLocal DNS
      • Установка Policy Reporter
      • Установка Thumbor
    • Сетевые сценарии
      • Обеспечение доступа к приложению, запущенному в кластере Kubernetes
      • Настройка контроллера сетевых политик Calico
      • Настройка контроллера сетевых политик Cilium
      • Настройка NodeLocal DNS для контроллера сетевых политик Cilium
    • Работа с постоянными томами
      • Динамическая подготовка тома
      • Статическая подготовка тома
      • Управление классами хранилищ
      • Увеличение размера тома для подов
      • Увеличение размера тома для контроллера StatefulSet
      • Подключение тома в блочном режиме
      • Интеграция с Object Storage
    • Управление кластером Kubernetes
      • Получение информации о кластере Kubernetes
      • Создание кластера Kubernetes
      • Изменение кластера Kubernetes
      • Создание пространства имен в кластере Kubernetes
      • Удаление кластера Kubernetes
    • Управление группой узлов
      • Информация об имеющихся группах узлов
      • Создание группы узлов
      • Подключение к узлу по SSH
      • Настройка автомасштабирования
      • Изменение группы узлов
      • Управление метками узлов кластера Kubernetes
      • Удаление группы узлов
    • Подключение внешних узлов к кластеру
  • Практические руководства
    • Все руководства
    • Создание нового Kubernetes-проекта в Yandex Cloud
    • Интеграция с Container Registry
    • Подпись и проверка Docker-образов Container Registry
    • Сканирование уязвимостей Container Registry при непрерывном развертывании приложений с помощью GitLab
    • Запуск рабочих нагрузок с GPU
    • Установка Ingress-контроллера NGINX с Let's Encrypt®
    • Установка Ingress-контроллера NGINX с сертификатом из Certificate Manager
    • Резервное копирование в Object Storage
    • Горизонтальное масштабирование приложения в кластере
    • Вертикальное масштабирование приложения в кластере
    • Развертывание и нагрузочное тестирование gRPC-сервиса с масштабированием
    • Работа со снапшотами
    • Интеграция с корпоративной зоной DNS
    • Автоматическое масштабирование DNS по размеру кластера
    • Настройка локального кеширования DNS
    • Проверка DNS Challenge для сертификатов Let's Encrypt®
    • Мониторинг кластера с помощью Prometheus и Grafana
    • Непрерывное развертывание контейнеризованных приложений с помощью GitLab
    • Изменение параметров сервера метрик (Metrics Server)
    • Использование продуктов Cloud Marketplace
      • Интеграция с Argo CD
      • Интеграция с Crossplane
      • Синхронизация с секретами Yandex Lockbox
      • Настройка Fluent Bit для работы с Cloud Logging
      • Настройка Gateway API
      • Настройка Application Load Balancer Ingress-контроллера
      • Использование Jaeger для трассировки запросов в Managed Service for YDB
      • Настройка Kyverno & Kyverno Policies
      • Использование Metrics Provider для трансляции метрик
  • Концепции
    • Взаимосвязь ресурсов сервиса
    • Релизные каналы и обновления
    • Шифрование секретов
    • Использование объектов API Kubernetes
      • Том
      • Сервис
    • Группа узлов
      • Автоматическое масштабирование группы узлов
      • Расселение подов с узла
      • Динамическое резервирование ресурсов для узла
      • Группы узлов с GPU
    • Сеть в Managed Service for Kubernetes
    • Внешние узлы кластера
    • Сетевые настройки и политики кластера
    • Автоматическое масштабирование
    • Квоты и лимиты
    • Рекомендации по использованию Managed Service for Kubernetes
  • Управление доступом
  • Правила тарификации
  • Справочник API
    • Аутентификация в API
    • gRPC (англ.)
      • Overview
      • ClusterService
      • NodeGroupService
      • VersionService
      • OperationService
    • REST (англ.)
      • Overview
      • Cluster
        • Overview
        • create
        • delete
        • get
        • list
        • listNodeGroups
        • listNodes
        • listOperations
        • start
        • stop
        • update
      • NodeGroup
        • Overview
        • create
        • delete
        • get
        • list
        • listNodes
        • listOperations
        • update
      • Version
        • Overview
        • list
  • Вопросы и ответы
    • Общие вопросы
    • Хранилище данных
    • Настройка и обновление
    • Автоматическое масштабирование
    • Ресурсы
    • Логи
    • Все вопросы на одной странице
  1. Пошаговые инструкции
  2. Работа с постоянными томами
  3. Статическая подготовка тома

Статическая подготовка тома

Статья создана
Yandex Cloud
,
улучшена
Dmitry A.
  • Перед началом работы
  • Создайте объект PersistentVolume
  • Создайте объект PersistentVolumeClaim
  • Создайте под со статически подготовленным томом
  • Как удалить том

Создайте под со статически подготовленным томом:

  1. Создайте объект PersistentVolume.
  2. Создайте объект PersistentVolumeClaim.
  3. Создайте под.

Совет

Вы можете использовать бакет Yandex Object Storage в качестве хранилища для пода. Подробнее см. в разделе Интеграция с Object Storage.

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

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

  2. Узнайте уникальный идентификатор диска, который будет использован для создания объекта PersistentVolume:

    1. Если у вас еще нет диска, создайте его.

      Важно

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

    2. Получите идентификатор диска (колонка ID):

      yc compute disk list
      

      Результат:

      +----------------------+------+------------+-------------------+--------+--------------+-------------+
      |          ID          | NAME |    SIZE    |       ZONE        | STATUS | INSTANCE IDS | DESCRIPTION |
      +----------------------+------+------------+-------------------+--------+--------------+-------------+
      | ef3ouo4sgl86740ridn6 | k8s  | 4294967296 | ru-central1-a | READY  |              |             |
      +----------------------+------+------------+-------------------+--------+--------------+-------------+
      
  3. Посмотрите доступные классы хранилищ и выберите подходящий:

    kubectl get storageclass
    

    Результат:

    NAME                          PROVISIONER                    RECLAIMPOLICY  VOLUMEBINDINGMODE     ALLOWVOLUMEEXPANSION  AGE
    yc-network-hdd (default)      disk-csi-driver.mks.ycloud.io  Delete         WaitForFirstConsumer  true                  12d
    yc-network-nvme               disk-csi-driver.mks.ycloud.io  Delete         WaitForFirstConsumer  true                  12d
    yc-network-ssd                disk-csi-driver.mks.ycloud.io  Delete         WaitForFirstConsumer  true                  12d
    yc-network-ssd-nonreplicated  disk-csi-driver.mks.ycloud.io  Delete         WaitForFirstConsumer  true                  12d
    

    Примечание

    Не путайте классы хранилищ Kubernetes и типы дисков Yandex Compute Cloud.

Создайте объект PersistentVolume

  1. Сохраните спецификацию для создания объекта PersistentVolume в YAML-файл с названием test-pv.yaml.

    Подробнее о спецификации читайте в документации Kubernetes.

    При указании параметра spec.capacity.storage убедитесь, что задан точный объем диска. Container Storage Interface не обеспечивает проверку объема диска для статически подготовленных томов.

    Для создания объекта PersistentVolume на основе существующего облачного диска в параметре volumeHandle укажите уникальный идентификатор необходимого диска.

    Примечание

    Если не указать параметр storageClassName, будет использован класс хранилищ по умолчанию: yc-network-hdd. Как изменить класс по умолчанию читайте в разделе Измените класс хранилищ по умолчанию.

    Подробнее о спецификации для создания объекта PersistentVolumeClaim читайте в документации Kubernetes.

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: <имя PersistentVolume>
    spec:
      capacity:
        storage: <размер PersistentVolume>
      accessModes:
        - ReadWriteOnce
      storageClassName: "yc-network-hdd"
      csi:
        driver: disk-csi-driver.mks.ycloud.io
        fsType: ext4
        volumeHandle: <идентификатор диска>
      storageClassName: <имя класса хранилища>
    
  2. Выполните команду:

    kubectl create -f test-pv.yaml
    

    Результат:

    persistentvolume/<имя PersistentVolume> created
    
  3. Посмотрите информацию о созданном объекте PersistentVolume:

    kubectl describe persistentvolume <имя PersistentVolume>
    

    Результат:

    Name:            <имя PersistentVolume>
    Labels:          <none>
    Annotations:     <none>
    Finalizers:      [kubernetes.io/pv-protection]
    StorageClass:    <имя класса хранилища>
    Status:          Available
    ...
    

Создайте объект PersistentVolumeClaim

  1. Сохраните спецификацию для создания объекта PersistentVolumeClaim YAML-файл с названием test-claim.yaml.

    Подробнее о спецификации читайте в документации Kubernetes.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: <имя PersistentVolumeClaim>
    spec:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: <размер PersistentVolumeClaim>
      storageClassName: <имя класса хранилища>
      volumeName: <имя PersistentVolume>
    

    Примечание

    Размер PersistentVolumeClaim должен быть меньше или равен размеру PersistentVolume.

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

      kubectl create -f test-claim.yaml
      

      Результат:

      persistentvolumeclaim/<имя PersistentVolumeClaim> created
      
    2. Посмотрите информацию о созданном PersistentVolumeClaim:

      kubectl describe persistentvolumeclaim <имя PersistentVolumeClaim>
      

      Результат:

      Name:          <имя PersistentVolumeClaim>
      Namespace:     default
      StorageClass:  <имя класса хранилища>
      Status:        Bound
      Volume:        <имя PersistentVolume>
      ...
      

Создайте под со статически подготовленным томом

  1. Создайте файл test-pod.yaml с манифестом пода, использующего PersistentVolumeClaim:

    apiVersion: v1
    kind: Pod
    metadata:
      name: test-pod
    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: <имя PersistentVolumeClaim>
    

    Подробнее о спецификации читайте в документации Kubernetes.

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

    kubectl create -f test-pod.yaml
    

    Результат:

    pod/test-pod created
    
  3. Посмотрите информацию о созданном поде:

    kubectl describe pod test-pod
    

    Результат:

    Name:       test-pod
    Namespace:  default
    Priority:   0
    ...
      ----    ------                  ----  ----                     -------
      Normal  Scheduled               20m   default-scheduler        Successfully assigned default/test-pod to cl1jtehftl7q1umj18ll-icut
      Normal  SuccessfulAttachVolume  20m   attachdetach-controller  AttachVolume.Attach succeeded for volume "<имя PersistentVolume>"
    

После этого рядом с используемым диском в консоли управления в Compute Cloud в разделе Диски появится надпись Подключен.

Как удалить том

Диски в Compute Cloud не удаляются автоматически при удалении PersistentVolume. Чтобы полностью удалить том:

  1. Удалите объект PersistentVolumeClaim:

    kubectl delete pvc <идентификатор объекта PersistentVolumeClaim>
    
  2. Удалите объект PersistentVolume:

    kubectl delete pv <идентификатор объекта PersistentVolume>
    
  3. Удалите диск в Compute Cloud, связанный с объектом PersistentVolume.

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

Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
В этой статье:
  • Перед началом работы
  • Создайте объект PersistentVolume
  • Создайте объект PersistentVolumeClaim
  • Создайте под со статически подготовленным томом
  • Как удалить том