0Pricing
DevOps Bootcamp · Урок

StorageClasses и динамическое выделение

Узнайте, как StorageClasses позволяют Kubernetes автоматически выделять постоянные тома по запросу без ручной работы администратора.

«StorageClasses и динамическое выделение» — бесплатный урок DevOps Bootcamp на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения DevOps Bootcamp, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс DevOps Bootcamp содержит 4 уроков всего.

Проблема ручного управления хранилищем

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

Динамическое выделение хранилища автоматически создаёт тома при создании запроса.

Что такое StorageClass

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

Представьте его как шаблон для создания PersistentVolumes по требованию.

Определение StorageClass

Поле provisioner указывает плагин, создающий том, часто это драйвер облачного диска.

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: fast-ssd
provisioner: kubernetes.io/aws-ebs
parameters:
  type: gp3
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer

Запрос динамического хранилища

PVC просто ссылается на StorageClass по имени. Затем Kubernetes автоматически создаёт соответствующий PV.

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: data
spec:
  accessModes: ['ReadWriteOnce']
  storageClassName: fast-ssd
  resources:
    requests:
      storage: 10Gi

StorageClass по умолчанию

Если в PVC не указано storageClassName, Kubernetes использует StorageClass кластера по умолчанию, отмеченный аннотацией. Благодаря этому запросы работают сразу после создания.

kubectl get storageclass
# NAME            PROVISIONER          DEFAULT
# standard (default)  ...

Политика восстановления тома

Параметр reclaimPolicy определяет, что произойдёт после удаления PVC:

  • Удалить: базовый том также удаляется
  • Сохранить: том остаётся для восстановления вручную

Режим привязки тома

WaitForFirstConsumer откладывает создание тома до планирования пода, использующего PVC. Это гарантирует, что диск окажется в той же зоне, что и под.

Immediate создаёт том сразу, из-за чего зоны могут не совпасть.

Наблюдение за созданием тома

После применения PVC наблюдайте, как его состояние меняется с ожидания на привязку по мере создания тома.

kubectl apply -f pvc.yaml
kubectl get pvc data -w
# data   Pending
# data   Bound   pvc-8a3f...  10Gi

Несколько уровней хранилища

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

# fast-ssd  -> low latency, higher cost
# standard  -> balanced default
# cold-hdd  -> cheap, archival

Расширение томов

Если в StorageClass задано allowVolumeExpansion: true, можно увеличить PVC, изменив запрошенный размер, а поставщик изменит размер базового диска.

spec:
  resources:
    requests:
      storage: 20Gi  # increased from 10Gi

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

  • Динамическое: вариант по умолчанию; не требует участия администратора и хорошо масштабируется
  • Статическое: когда необходимо привязаться к конкретному существующему диску или экспорту NFS

Быстрая проверка

Проверьте, насколько хорошо вы понимаете динамическое выделение хранилища.

Итоги

Вы узнали, что StorageClass задаёт шаблон создания хранилища и тем самым включает динамическое выделение хранилища. Ключевые поля включают поставщик, reclaimPolicy и volumeBindingMode. PVC ссылаются на класс по имени, а класс по умолчанию обрабатывает запросы, в которых класс не указан.

Часто задаваемые вопросы

Урок «StorageClasses и динамическое выделение» бесплатный?

Да — полный текст урока «StorageClasses и динамическое выделение» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс DevOps Bootcamp, подпишись на CoddyKit PRO. Курс DevOps Bootcamp содержит 4 уроков всего.

Чему я научусь в уроке «StorageClasses и динамическое выделение»?

Узнайте, как StorageClasses позволяют Kubernetes автоматически выделять постоянные тома по запросу без ручной работы администратора. Ты практикуешь DevOps Bootcamp с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать DevOps Bootcamp?

Предыдущий опыт не требуется. DevOps Bootcamp на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «StorageClasses и динамическое выделение»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке DevOps Bootcamp?

Да. Каждый урок DevOps Bootcamp включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. ConfigMaps для конфигурации
  2. Секреты для конфиденциальных данных
  3. Постоянные тома и заявки
  4. StorageClasses и динамическое выделение
← Назад к DevOps Bootcamp