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: 10GiStorageClass по умолчанию
Если в 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 — локальная установка не требуется.
Все уроки этого курса
- ConfigMaps для конфигурации
- Секреты для конфиденциальных данных
- Постоянные тома и заявки
- StorageClasses и динамическое выделение