Находится в процессе активного развития. Функциональность может существенно измениться.

Модуль не включен по умолчанию в каком-либо наборе модулей.

Как явно включить или отключить модуль…

Установите spec.enabled в true или false в настройках модуля для его явного включения или выключения.

Пример включения модуля linstor:

apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: linstor
spec:
  enabled: true

Пример выключения модуля linstor:

apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: linstor
spec:
  enabled: false

Работоспособность модуля гарантируется только для стоковых ядер, поставляемых вместе с дистрибутивами перечисленными в списке поддерживаемых ОС. Работоспособность модуля на других ядрах возможна, но не гарантируется.

После включения модуля кластер автоматически настраивается на использование LINSTOR и остается только сконфигурировать хранилище.

Сам модуль не требует настройки и не имеет параметров. Однако отдельные его функции могут потребовать указания мастер-пароля.
Для того чтобы задать мастер-пароль, создайте Secret в пространстве имен d8-system:

apiVersion: v1
kind: Secret
metadata:
  name: linstor-passphrase
  namespace: d8-system
immutable: true
stringData:
  MASTER_PASSPHRASE: *!пароль* # Мастер-пароль для LINSTOR

Внимание: подойдите ответственно к выбору мастер-пароля для LINSTOR. При его потере зашифрованные данные окажутся недоступными.

Конфигурация хранилища LINSTOR

Конфигурация LINSTOR в Deckhouse осуществляется посредством назначения специального тега linstor-<имя_пула> на LVM-группу томов или LVMThin-пул.

  1. Выберите имя тега.

    Имя тега должно быть уникальным в пределах одного узла. Поэтому каждый раз, прежде чем назначить новый тег, убедитесь в отсутствии этого тега у других групп томов и пулов.

    Выполните следующие команды, чтобы вывести список групп томов и пулов:

    # LVM пулы
    vgs -o name,tags | awk 'NR==1;$2~/linstor-/'
    # LVMThin пулы
    lvs -o name,vg_name,tags | awk 'NR==1;$3~/linstor-/'
    
  2. Добавьте пулы.

    Создайте пулы хранения на всех узлах, где вы планируете хранить ваши данные. Используйте одинаковые имена пулов хранения на разных узлах, если хотите иметь для них общий StorageClass.

    • Чтобы добавить пул LVM создайте группу томов с тегом linstor-<имя_пула>, либо добавьте тег linstor-<имя_пула> существующей группе.

      Пример команды создания группы томов vg0 с тегом linstor-data:

      vgcreate vg0 /dev/nvme0n1 /dev/nvme1n1 --add-tag linstor-data
      

      Пример команды добавления тега linstor-data существующей группе томов vg0:

      vgchange vg0 --add-tag linstor-data
      
    • Чтобы добавить пул LVMThin создайте LVMThin-пул с тегом linstor-<имя_пула>.

      Пример команды создания LVMThin-пула vg0/thindata с тегом linstor-data:

      vgcreate vg0 /dev/nvme0n1 /dev/nvme1n1
      lvcreate -l 100%FREE -T vg0/thindata --add-tag linstor-thindata
      

      Обратите внимание, что сама группа томов не обязана содержать какой-либо тег.

  3. Проверьте создание StorageClass.

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

    kubectl get storageclass
    

    Пример вывода списка StorageClass:

    $ kubectl get storageclass
    NAME                   PROVISIONER                  AGE
    linstor-data-r1        linstor.csi.linbit.com       143s
    linstor-data-r2        linstor.csi.linbit.com       142s
    linstor-data-r3        linstor.csi.linbit.com       142s
    

    Каждый StorageClass можно использовать для создания томов соответственно с одной, двумя или тремя репликами в ваших пулах хранения.

При необходимости изучите пример расширенной конфигурации LINSTOR, но мы рекомендуем придерживаться приведенного выше упрощённого руководства.