База знаний LinxCloud Services

Управление классами хранения

Классы хранения (storage classes) используются при динамическом создании томов (Persistent Volume Claim).

В каждом кластере Kubernetes VK Cloud присутствуют преднастроенные классы хранения.

 

Получить информацию о классах хранения

Выполните одну из команд:

  1. Для получения списка всех классов хранения:
    kubectl get storageclasses

     

  2. Для получения подробной информации о классе хранения:
    kubectl describe storageclasses <имя класса хранения, полученное от предыдущей команды>

     

 

Создать класс хранения

  1. Определитесь, с какими параметрами требуется создать новый класс хранения.Для создания класса хранения с использованием драйвера OpenStack Cinder CSI (который интегрируется с сервисами хранилища Linx Cloud) необходимо задать следующие параметры:
    1. Provisioner: имя драйвера.При использовании Cinder CSI значение всегда должно быть cinder.csi.openstack.org.
    2. Parameters: параметры драйвера.Для драйвера доступно множество параметров. Для работы с VK Cloud необходимо задать следующие параметры:
      • availability: зона доступности. Наличие зон доступности зависит от региона, в котором размещен кластер Kubernetes:
        • Москва: GZ1MS1.
        • Амстердам: AMS.

        При создании класса хранения допустимо указывать только зону того региона, в котором находится кластер Kubernetes.

        В противном случае, Persistent Volume, созданный на основе этого класса, будет неработоспособен.

      • typeтип хранилища.
        • ceph-hdd
        • ceph-ssd
        • high-iops
    3. Задайте требуемые параметры Kubernetes для класса хранения.При этом учитывайте, что используется Cinder CSI.

    Для создания класса хранения с использованием другого CSI-драйвера, обратитесь к документации поставщика драйвера.

  2. Создайте конфигурационный файл YAML custom-storage-class,yaml с описанием класса хранения:
    1apiVersion: storage.k8s.io/v1
    2kind: StorageClass
    3metadata:
    4  name: <имя класса хранения>
    5provisioner: cinder.csi.openstack.org
    6parameters:
    7  availability: <зона доступности>
    8  type: <тип хранилища>
    9allowVolumeExpansion: <разрешить расширение PV: true/false>
    10mountOptions: []
    11reclaimPolicy: <политика прекращения использования PV>
    12volumeBindingMode: Immediate

     

  3. Создайте класс хранения с помощью этого конфгурационного файла:
    kubectl apply -f custom-storage-class,yaml

     

  4. Проверьте, что класс хранения успешно создался, получив подробную информацию о нем.

 

Выбрать класс хранения по умолчанию

В кластерах Kubernetes Linx Cloud нет назначенного класса хранения по умолчанию. Это означает, что при создании Persistent Volume Claim всегда нужно указывать имя класса хранения.

Чтобы избежать этого, можно выбрать один из доступных классов хранения как класс по умолчанию:

  1. Получите список всех доступных классов хранения.
  2. Если хотя бы рядом с одним классом хранения есть метка (default) — снимите ее для всех таких классов. Если в списке классов хранения будет несколько классов по умолчанию, то выбор класса по умолчанию ни на что не будет влиять.Для этого выполните команду:
    kubectl annotate storageclass <имя класса хранения> storageclass.kubernetes.io/is-default-class-

     

  3. Выполните команду, чтобы выбрать класс хранения по умолчанию:
    kubectl annotate storageclass <имя класса хранения> storageclass.kubernetes.io/is-default-class=true

     

  4. Получите список доступных классов хранения еще раз, чтобы подтвердить успешное выполнение операции.Например, пусть был выбран по умолчанию класс хранения csi-ceph-ssd-ms1. Тогда в выводе команды kubectl get storageclasses должен быть похожий текст:
    1NAME                         PROVISIONER                RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
    2...
    3
    4csi-ceph-ssd-ms1 (default)   cinder.csi.openstack.org   Delete          Immediate           true                   ...
    5
    6...
    

     

 

Удалить класс хранения

Не удаляйте предустановленные классы хранения, так как это может привести к неработоспособности кластера или потере данных.

Выполните команду:

kubectl delete storageclass <имя класса хранения>

 

 

Параметры классов хранения

Эти параметры классов хранения Kubernetes влияют на поведение Persistent Volumes, которые создаются на основе этих классов:

  • allowVolumeExpansion: если эта опция установлена в true, то объем Persistent Volume, созданный на основе этого класса хранения, можно будет расширить.
  • mountOptions: опции, с которыми будет монтироваться Persistent Volume.При использовании Cinder CSI в VK Cloud с блочными устройствами Ceph (typeceph-hddceph-ssd) или высокопроизводительными SSD High IOPS (typehigh-iops) не должно указываться никаких опций монтирования. Т.е. либо можно указать [] в качестве значения, либо полностью опустить этот параметр.
  • reclaimPolicy: политика прекращения использования Persistent Volume, который будет использовать класс хранения
    • Delete (по умолчанию): удалить Persistent Volume после удаления соответствующего ему Persistent Volume Claim.
    • Retain: оставить Persistent Volume после удаления соответствующего ему Persistent Volume Claim.В этом случае можно будет позднее получить доступ к этому Persistent Volume, создав новый Persistent Volume Claim.Или же можно удалить этот Persistent Volume позже вручную.
  • volumeBindingMode: параметр определяет, каким образом должно выполняться динамическое выделение и привязка (volume binding) тома.При использовании Cinder CSI в VK Cloud значение всегда должно быть Immediate. Это означает, что выполняются немедленные привязка и выделение тома, сразу после создания Persistent Volume Claim. Другие режимы не поддерживаются Cinder CSI.
Что вас интересует?
Получить демо-доступ

Спасибо за ваш запрос, мы свяжемся с вами в ближайшее время!