Kubernetes Basics · Урок

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

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

Урок 4 из 413 шагов

«StorageClasses и динамическое выделение» — бесплатный урок Kubernetes Basics на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Kubernetes Basics, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Kubernetes Basics содержит 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 ссылаются на класс по имени, а класс по умолчанию обрабатывает запросы, в которых класс не указан.

Можно начать бесплатно

Изучай Kubernetes Basics с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
12
Уроки
48

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

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

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

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

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

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

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

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

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

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

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

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

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