StorageClass в Kubernetes: гибкое управление хранилищами

Автор Itworkroom

Что такое StorageClass?

StorageClass — это объект Kubernetes, который определяет тип и параметры хранилища для динамического выделения Persistent Volumes (PV).

Ключевые возможности:

  • Автоматическое создание PV по запросу (без ручного управления)
  • Абстракция от конкретных провайдеров (AWS EBS, GCP Persistent Disk, NFS, Ceph)
  • Гибкость конфигурации (тип диска, политики репликации, IOPS)

Основные параметры StorageClass

Обязательные поля

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: fast-ssd  # Уникальное имя класса
provisioner: kubernetes.io/aws-ebs  # Драйвер хранилища

Дополнительные настройки

Параметр Пример значения Описание
volumeBindingMode WaitForFirstConsumer Отложенное выделение тома
reclaimPolicy Retain Не удалять PV после удаления PVC
allowVolumeExpansion true Разрешить увеличение размера
parameters type: gp3 Провайдер-специфичные опции

Популярные Provisioners

Облачные провайдеры

  • AWSkubernetes.io/aws-ebs (gp3, io1)
  • GCPkubernetes.io/gce-pd (pd-standard, pd-ssd)
  • Azurekubernetes.io/azure-disk (Premium_LRS)

Локальные решения

  • NFSnfs.csi.k8s.io
  • Ceph/Rookrook-ceph.rbd.csi.ceph.com
  • Longhorndriver.longhorn.io

Практические примеры

StorageClass для SSD в AWS

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: aws-gp3
provisioner: kubernetes.io/aws-ebs
parameters:
  type: gp3
  iops: "3000"
  throughput: "125"
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true

StorageClass для Ceph

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: ceph-rbd
provisioner: rook-ceph.rbd.csi.ceph.com
parameters:
  clusterID: rook-ceph
  pool: replicapool
  imageFormat: "2"
reclaimPolicy: Retain

Как использовать StorageClass?

Запрос хранилища через PVC

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-pvc
spec:
  storageClassName: fast-ssd  # Ссылка на StorageClass
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 100Gi

Проверка созданных ресурсов

kubectl get pvc
kubectl describe pv  # Просмотр автоматически созданного тома

Особенности и лучшие практики

Выбор политики удаления

  • Delete (по умолчанию) — том удаляется при удалении PVC
  • Retain — том сохраняется для ручного управления

Отложенное выделение (WaitForFirstConsumer)

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

Мониторинг

Интегрируйте Prometheus для отслеживания:

  • Использования дискового пространства
  • IOPS/латентности

Трудности и решения

Проблема: «No persistent volumes available»

Решение:

  • Проверить доступность provisioner
  • Убедиться, что StorageClass указан правильно

Проблема: Невозможно изменить размер PVC

Решение:

  • Добавить allowVolumeExpansion: true в StorageClass
  • Некоторые провайдеры (например, AWS) требуют ручного подтверждения

Вывод

StorageClass — это мощный инструмент для:
✅ Динамического выделения хранилищ
✅ Унификации работы с разными провайдерами
✅ Оптимизации затрат (выбор подходящего типа диска)

Совет: Всегда тестируйте новые StorageClass в non-production среде перед промышленным использованием.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *