StorageClasses (классы хранилища)

StorageClass определяет, как динамически создавать PersistentVolume при запросе PVC. Один класс — один тип хранилища и набор параметров.

Перед созданием StorageClass для NFS, vSphere, oVirt, vCloud Director, Yandex Cloud или Ceph необходимо включить соответствующий CSI-провиженер в Сервисы и репозитории → Установленные сервисы. Для Yandex Cloud это shturval-capy-csi. Подробнее — Установка и управление сервисами.

Где управлять

Хранилище → StorageClasses (на уровне кластера).

Скриншот: список StorageClasses

Список StorageClasses

Создание StorageClass

  1. Хранилище → StorageClasses → + Добавить StorageClass.
  2. Задайте имя StorageClass.
  3. При необходимости добавьте лейблы и аннотации. Например, добавьте аннотацию storageclass.kubernetes.io/is-default-class: "true" для использования по умолчанию.
  4. Выберите тип провиженера: oVirt, vSphere, NFS, Rawfile, CephFS, CephRBD, Yandex Cloud, Иной.
  5. Задайте политику возврата (reclaimPolicy):
    • Delete — при удалении PVC соответствующий PV удаляется (по умолчанию).
    • Retain — используйте, если данными PV после удаления PVC нужно управлять вручную.
  6. Задайте режим привязки (volumeBindingMode):
    • Immediate — PV создаётся сразу после создания PVC.
    • WaitForFirstConsumer — PV создаётся только после создания пода, который использует PVC.
  7. Настройте параметры StorageClass.
  8. Нажмите Сохранить.
Скриншот: создание StorageClass

Создание StorageClass

Параметры по типам

Тип провиженера в интерфейсе помогает сконфигурировать StorageClass. Значение provisioner задаётся автоматически для всех типов, кроме Иной:

  • vSphere — csi.vsphere.vmware.com;
  • NFS — nfs.csi.k8s.io;
  • oVirt — csi.ovirt.org;
  • Rawfile — rawfile.csi.openebs.io;
  • CephFS — cephfs.csi.ceph.com;
  • CephRBD — bd.csi.ceph.com;
  • Yandex Cloud — disk-csi-driver.mks.ycloud.io. Поле Provisioner недоступно для правки.

По умолчанию в платформе доступны следующие типы провиженеров:

  • CephFS Provisioner;
  • CephRBD Provisioner;
  • OpenEBS Rawfile Provisioner;
  • oVirt Provisioner;
  • vSphere Provisioner;
  • NFS Provisioner;
  • Yandex Cloud.

Для добавления параметра для CephFS, CephRBD, OpenEBS Rawfile или типа Иной нажмите + в блоке Параметры, задайте имя и значение, нажмите Добавить.

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

NFS (nfs.csi.k8s.io)

Параметр StorageClassЗначениеСоответствие на стороне провайдера (NFS-сервер)
serverIP-адрес или hostname NFS-сервера, например, 10.11.12.13Хост, на котором поднят NFS-сервер; должен экспортировать каталог (export).
shareПуть к экспорту, например, /nfsЭкспортируемая директория на NFS-сервере (указана в /etc/exports или аналоге).
onDeletedelete | retain | archiveДействие при удалении PVC: удалить каталог тома на NFS, оставить данные, или архивировать.
mountPermissionsВосьмеричное число (например 0777, 0755); по умолчанию 0Права доступа (chmod) для смонтированной точки; 0 — без изменения.
Скриншот: параметры NFS

Параметры NFS

vSphere (csi.vsphere.vmware.com)

Параметр StorageClassЗначениеСоответствие на стороне провайдера (vCenter / vSphere)
storagepolicynameИмя политики хранилища (необязательно).vSphere Storage Policy (SPBM) — политика размещения и качества хранилища в vCenter.
vsphereFstypeext4 | xfsТип файловой системы, создаваемой на виртуальном диске (VMDK) при первом форматировании.
datastoreИмя хранилища данных.Datastore в vSphere.
diskformatФормат диска.Формат виртуального диска в vSphere.
Скриншот: параметры vSphere

Параметры vSphere

oVirt (csi.ovirt.org)

Параметр StorageClassЗначениеСоответствие на стороне провайдера (oVirt / RHV)
storageDomainNameИмя домена хранения, например, VM_StoreStorage Domain в oVirt. Админ-портал oVirt → Storage → Domains; сюда будут создаваться диски ВМ (образы).
thinProvisioningtrue | falseТонкое (thin) или толстое (thick) выделение: true — место выделяется по мере записи; false — выделяется сразу весь объём на Storage Domain.
ovirtFstypeext4 | xfsТип файловой системы на диске при форматировании.
Скриншот: параметры oVirt

Параметры oVirt

CephRBD (bd.csi.ceph.com)

Параметры задаются вручную. Например:

Параметр StorageClassЗначениеСоответствие на стороне провайдера (Ceph)
clusterIDУникальный идентификатор кластера Ceph (до 36 байт)Идентификатор кластера Ceph, в котором создаются RBD-образы.
poolИмя пула Ceph, например, replicapoolRBD pool в кластере Ceph; в этом пуле создаются образы (images) для PV.
dataPoolИмя пула для данных (необязательно, для erasure-coded)Пул для данных при использовании erasure-coded пула; пул в pool используется для метаданных.
imageFeaturesСписок через запятую: layering, journaling, exclusive-lock и др.Включённые фичи RBD-образа (см. документацию Ceph RBD).
СекретыСсылки на Secret с ключами Ceph (admin, user)Учётные данные доступа к Ceph (ключи из ceph auth get, namespace секрета).

CephFS (cephfs.csi.ceph.com)

Параметры задаются вручную. Например:

Параметр StorageClassЗначениеСоответствие на стороне провайдера (Ceph)
clusterIDИдентификатор кластера CephИдентификатор кластера Ceph.
fsNameИмя файловой системы CephFS, например, myfsCephFS filesystem в кластере (ceph fs ls); в ней создаются подтома для PV.
volumeNamePrefixПрефикс имён томов (необязательно)Префикс имён создаваемых подтомов в CephFS.
provisionerSecret / nodeStageSecret и др.Имена Secret в кластереСекреты с учётными данными Ceph (пользователь с правами на CephFS).

OpenEBS Rawfile (rawfile.csi.openebs.io)

Параметры задаются вручную в зависимости от конфигурации OpenEBS (пути, пулы и т.д.). См. документацию драйвера.

Yandex Cloud (disk-csi-driver.mks.ycloud.io)

Параметры по умолчанию:

Параметр StorageClassЗначение по умолчаниюСоответствие на стороне Yandex Cloud
typenetwork-hddТип диска Compute Cloud. В чарте shturval-capy-csi отдельно создаётся класс yc-network-ssd с типом network-ssd.
fstypeext4Файловая система на диске при первом форматировании.
Скриншот: StorageClass для Yandex Cloud

Добавление StorageClass, тип Yandex Cloud

Иной

Имена и значения параметров задаются по документации конкретного CSI-драйвера. Соответствие на стороне провайдера определяется этим драйвером (облако, СХД, файловый сервер и т.д.).

Скриншот: добавление параметра

Добавление параметра Добавление параметра

Просмотр и изменение StorageClass

На странице StorageClass доступны вкладки:

  • StorageClass — параметры класса;
  • PersistentVolumes — список PV этого класса. Нажмите строку с названием PersistentVolume, чтобы перейти на страницу просмотра этого PV;
  • Лейблы и аннотации;
  • Манифест — просмотр YAML и правка лейблов и аннотаций.

В созданном StorageClass изменяются только лейблы и аннотации.

Чтобы скорректировать лейблы и аннотации в манифесте StorageClass, перейдите на вкладку Манифест и внесите изменения. После изменения манифеста нажмите Применить. В правой части экрана отобразится результат проверки. Раскройте блок результата проверки, чтобы увидеть полный манифест.

Сохраните изменения, внесённые в манифест. Несохранённые изменения не будут применены.

Удалить StorageClass можно одним из способов:

  • на странице StorageClasses нажмите значок удаления в строке объекта;
  • на странице просмотра StorageClass на вкладке StorageClass нажмите Удалить;
  • на странице просмотра StorageClass перейдите на вкладку Манифест и нажмите значок удаления.

В списке StorageClasses можно удалить один класс или несколько сразу. Как выбрать объекты и подтвердить удаление — в разделе Множественное удаление.

Скриншот: страница StorageClass

Страница StorageClass