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

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

Перед созданием StorageClass для NFS, vSphere, oVirt, vCloud Director или Ceph необходимо включить соответствующий 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, Иной.
  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.

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

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

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

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

NFS (nfs.csi.k8s.io)

Параметр StorageClass Значение Соответствие на стороне провайдера (NFS-сервер)
server IP-адрес или hostname NFS-сервера, например 10.11.12.13 Хост, на котором поднят NFS-сервер; должен экспортировать каталог (export).
share Путь к экспорту, например /nfs Экспортируемая директория на NFS-сервере (указана в /etc/exports или аналоге).
onDelete delete | 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.
vsphereFstype ext4 | xfs Тип файловой системы, создаваемой на виртуальном диске (VMDK) при первом форматировании.
datastore Имя хранилища данных. Datastore в vSphere.
diskformat Формат диска. Формат виртуального диска в vSphere.
Скриншот: параметры vSphere

Параметры vSphere

oVirt (csi.ovirt.org)

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

Параметры oVirt

CephRBD (bd.csi.ceph.com)

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

Параметр StorageClass Значение Соответствие на стороне провайдера (Ceph)
clusterID Уникальный идентификатор кластера Ceph (до 36 байт) Идентификатор кластера Ceph, в котором создаются RBD-образы.
pool Имя пула Ceph, например replicapool RBD 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, например myfs CephFS filesystem в кластере (ceph fs ls); в ней создаются подтома для PV.
volumeNamePrefix Префикс имён томов (необязательно) Префикс имён создаваемых подтомов в CephFS.
provisionerSecret / nodeStageSecret и др. Имена Secret в кластере Секреты с учётными данными Ceph (пользователь с правами на CephFS).

OpenEBS Rawfile (rawfile.csi.openebs.io)

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

Иной

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

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

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

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

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

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

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

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

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

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

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

Страница StorageClass