Для улучшения работы сайта мы используем файлы cookies. Оставаясь на сайте, вы соглашаетесь с политикой обработки персональных данных.

Примеры использования

Данный раздел описывает все поддерживаемые сценарии использования и примеры конфигураций для управления LonghornClusterConfig и NodeVolumeConfig.

Важно соблюдать правильный порядок! Перед созданием LonghornClusterConfig необходимо создать соответствующий NodeVolumeConfig.

1. Инструкция по созданию ресурсов

1.1. NodeVolumeConfig

NodeVolumeConfig — это интерфейс для управления конфигурациями томов узлов, который позволяет настраивать и администрировать дисковое пространство, непосредственно привязанное к рабочим узлам кластера.

node volume config

1.2. Создание NodeVolumeConfig

  1. В консоли в разделе Узлы кластера перейдите к подразделу NodeVolumeConfig.

  2. Нажмите на кнопку Создать NodeVolumeConfig в правом верхнем углу.

    node volume config create
  3. Настроить конфигурацию NodeVolumeConfig можно двумя способами:

    • С помощью YAML-манифеста

      node volume config yaml

      Ниже представлен пример заполнения YAML-манифеста с пояснениями:

      Пример манифеста
      apiVersion: storage.nova-platform.io/v1alpha1 (1)
      kind: NodeVolumeConfig (2)
      metadata:
        name: worker-nodes (3)
      spec:
        volumeGroup: lnghrn-vg-01 (4)
        volumes: (5)
          - name: lnghrn-lv-01 (6)
            mountPath: /mnt/lnghrn-lv-01 (7)
            fsType: xfs (8)
            size: 31Gi (9)
        nodes: (10)
          - name: nova-worker-1.nova.internal (11)
            blockDevices: (12)
              - path: /dev/vdb (13)
      1 apiVersion (тип: string) - версия API для ресурса NodeVolumeConfig.
      2 kind (тип: string) - тип Kubernetes ресурса.
      3 metadata.name (тип: string) - уникальное имя конфигурации в кластере.
      4 spec.volumeGroup (тип: string) - имя группы томов. Группа томов, которая будет создана на выбранном узле кластера. В данной группе томов будут созданы один или несколько логических томов.
      5 spec.volumes (тип: array) - список логических томов для создания.
      6 spec.volumes.name (тип: string) - уникальное имя логического тома.
      7 spec.volumes.mountPath (тип: string) - путь для монтирования тома в файловой системе.
      8 spec.volumes.fsType (тип: string) - тип файловой системы для форматирования.
      9 spec.volumes.size (тип: string) - размер логического тома.
      10 spec.nodes (тип: array) - список узлов для применения конфигурации.
      11 spec.nodes.name (тип: string) - имя узла.
      12 spec.nodes.blockDevices (тип: array) - список блочных устройств.
      13 spec.nodes.blockDevices.path (тип: string) - путь к блочному устройству на узле.
    • С помощью формы

      node volume config form

      В форме не выведены поля apiVersion и kind, поскольку значения заполняются автоматически.

      Ниже представлена таблица с описанием полей формы и указано соответствие полям YAML-манифеста:

      Заголовок Имя Обязательно Описание Соответствие поля с YAML Пример заполнения

      Имя

      Имя

      Да

      Уникальное имя конфигурации в кластере.

      metadata.name

      worker-nodes

      Группа тома

      Группа тома

      Да

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

      spec.volumeGroup

      lnghrn-vg-01

      Узлы

      Имя

      Да

      Имя узла.

      spec.nodes.name

      nova-worker-1.nova.internal

      Узлы

      Путь блочного устройства

      Да

      Путь к блочному устройству на узле. Возможно указать несколько значений.

      spec.nodes.blockDevices.path

      /dev/vdb, /dev/sdc

      Тома

      Имя

      Да

      Уникальное имя логического тома.

      spec.volumes.name

      lnghrn-lv-01

      Тома

      Путь монтирования

      Да

      Путь для монтирования тома в файловой системе.

      spec.volumes.mountPath

      /mnt/lnghrn-lv-01

      Тома

      Тип ФС

      Да

      Тип файловой системы для форматирования.

      spec.volumes.fsType

      xfs, ext4

      Тома

      Размер

      Да

      Размер логического тома.

      spec.volumes.size

      10

      Тома

      Ед. изм.

      Да

      Единицы измерения размера.

      spec.volumes.size

      ГиБ

1.3. LonghornClusterConfig

LonghornClusterConfig - это ресурс для настройки параметров кластера и хранилища Longhorn.

longhorn cluster 1

1.4. Расположение LonghornClusterConfig в консоли

  1. Перейдите в раздел Администрирование → Настройки.

  2. Перейдите на вкладку Конфигурация компонентов.

    longhorn cluster 2
  3. Перейдите в ресурс Longhorn:

    • Если конфигурация создана, то откроется общая страница LonghornClusterConfig.

      longhorn cluster 3
    • Если конфигурация отсутствует, откроется форма создания LonghornClusterConfig.

      longhorn cluster 4

1.5. Создание LonghornClusterConfig

Убедитесь, что у вас не создан LonghornClusterConfig. В рамках кластера может быть создана только одна конфигурация

  1. Для создания перейдите в ресурс конфигурации Longhorn.

  2. Настроить конфигурацию можно двумя способами:

    • С помощью YAML-манифеста

      longhorn cluster 5

      Ниже представлен пример заполнения YAML-манифеста с пояснениями:

      Пример манифеста
      apiVersion: storage.nova-platform.io/v1alpha1 (1)
      kind: LonghornClusterConfig (2)
      metadata:
        name: longhorn-storage (3)
      spec:
        clientNodes: (4)
          - nova-infra-1.nova.internal
          - nova-infra-2.nova.internal
        storagePool: (5)
          - nodeVolumeConfig:
              name: worker-nodes (6)
              volumeName: lnghrn-lv-01 (7)
            default: true (8)
      1 apiVersion (тип: string) - версия API для LonghornClusterConfig.
      2 kind (тип: string) - тип ресурса Kubernetes.
      3 metadata.name (тип: string) - уникальное имя конфигурации кластера Longhorn. Имя может быть только longhorn-storage.
      4 spec.clientNodes (тип: array) - необязательно. Список узлов, где будут запущены сервисы Longhorn для поддержки постоянного хранилища.
      5 spec.storagePool (тип: array) - массив конфигураций пулов хранения данных.
      6 spec.storagePool.nodeVolumeConfig.name (тип: string) - идентификатор NodeVolumeConfig.
      7 spec.storagePool.nodeVolumeConfig.volumeName (тип: string) - имя тома для хранения данных на узлах.
      8 spec.storagePool.default (тип: boolean) - необязательно. Пометка пула как основного. Если не указано, используется false. Обязательно должен быть выбран один и только один пул как основной.
    • С помощью формы

      longhorn cluster 6

      В форме не выведены поля apiVersion и kind, поскольку значения заполняются автоматически.

      Ниже представлена таблица с описанием полей формы и указано соответствие полям YAML-манифеста:

      Заголовок Имя Обязательно Описание Соответствие поля с YAML Пример заполнения

      Имя

      Имя

      Да

      Уникальное имя конфигурации кластера Longhorn. Имя может быть только longhorn-storage.

      metadata.name

      longhorn-storage

      Клиентские узлы

      Клиентские узлы

      Нет

      Список узлов, где будут запущены сервисы Longhorn для поддержки постоянного хранилища.

      spec.clientNodes

      nova-infra-1.nova.internal

      Пул хранения

      NodeVolumeConfig

      Да

      Идентификатор NodeVolumeConfig.

      spec.storagePool.nodeVolumeConfig.name

      worker-nodes

      Пул хранения

      Имя тома

      Да

      Имя тома для хранения данных на узлах.

      spec.storagePool.nodeVolumeConfig.volumeName

      lnghrn-lv-01

      Пул хранения

      По умолчанию

      Нет

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

      spec.storagePool.default

      true

2. Операции с NodeVolumeConfig

2.1. Добавление нового блочного устройства

Чтобы добавить новое блочное устройство в существующий NodeVolumeConfig, обновите конфигурацию:

apiVersion: storage.nova-platform.io/v1alpha1
kind: NodeVolumeConfig
metadata:
  name: demo
spec:
  volumeGroup: "my-vg"
  volumes:
    - name: demo-1
      mountPath: /mnt/longhorn-1
      fsType: "xfs"
      size: 27Gi
  nodes:
    - name: worker-135.local
      blockDevices:
        - path: /dev/vdb
        - path: /dev/vdc (1)
1 Добавлено новое блочное устройство

Описание: Добавление нового блочного устройства /dev/vdc на узле worker-135.local. В результате объем volumeGroup my-vg увеличится за счет добавления этого устройства.

2.2. Увеличение размера тома

Для увеличения размера существующего тома обновите параметр size в NodeVolumeConfig:

apiVersion: storage.nova-platform.io/v1alpha1
kind: NodeVolumeConfig
metadata:
  name: demo
spec:
  volumeGroup: "my-vg"
  volumes:
    - name: demo-1
      mountPath: /mnt/longhorn-1
      fsType: "xfs"
      size: 50Gi (1)
  nodes:
    - name: worker-135.local
      blockDevices:
        - path: /dev/vdb
        - path: /dev/vdc
1 Увеличение размера тома demo-1 с 27Gi до 50Gi

2.3. Добавление нового Volume

Чтобы добавить новый том в существующий NodeVolumeConfig, расширьте список томов:

apiVersion: storage.nova-platform.io/v1alpha1
kind: NodeVolumeConfig
metadata:
  name: demo
spec:
  volumeGroup: "my-vg"
  volumes:
    - name: demo-1
      mountPath: /mnt/longhorn-1
      fsType: "xfs"
      size: 27Gi
    - name: demo-2 (1)
      mountPath: /mnt/longhorn-2
      fsType: "ext4"
      size: 50Gi
  nodes:
    - name: worker-135.local
      blockDevices:
        - path: /dev/vdb
1 Новый том

Описание: Добавление нового тома demo-2, который монтируется в /mnt/longhorn-2 с файловой системой ext4.

2.4. Удаление тома

Для удаления тома из NodeVolumeConfig исключите его из списка:

apiVersion: storage.nova-platform.io/v1alpha1
kind: NodeVolumeConfig
metadata:
  name: demo
spec:
  volumeGroup: "my-vg"
  volumes:
    - name: demo-1
      mountPath: /mnt/longhorn-1
      fsType: "xfs"
      size: 27Gi
  nodes:
    - name: worker-135.local
      blockDevices:
        - path: /dev/vdb

Описание: Удаление тома demo-2, оставляя только том demo-1.

2.5. Создание диска на узле Longhorn

Вы можете управлять кластером с использованием стандартных средств Longhorn. При создании диска на узле Longhorn nova-apps-operator создаст ресурс NodeVolumeConfig с уникальным идентификатором, например longhorn-volume-f5bba6ab-48cf-4cc3-9c92-4bdde53d0d25, который будет содержать основную информацию о диске и будет отмечен аннотацией novaManaged: “false”.

Пример данного ресурса:

apiVersion: storage.nova-platform.io/v1alpha1
kind: NodeVolumeConfig
metadata:
  annotations:
    nova-platform.io/managed-by: "none"
  creationTimestamp: "2024-11-05T11:01:46Z"
  generation: 1
  name: longhorn-volume-f5bba6ab-48cf-4cc3-9c92-4bdde53d0d25
  resourceVersion: "209830"
  uid: 9bfdb382-8029-4d08-8456-eb4c6aac7f6b
spec:
  volumes:
  - mountPath: /mnt/test
    name: disk-1
    size: "0"

3. Операции с LonghornClusterConfig

3.1. Удаление LonghornClusterConfig

При удалении LonghornClusterConfig также будет удалена соответствующая kustomization, а вместе с ней и все созданные ресурсы.

3.2. Изменение LonghornClusterConfig

Можно добавлять или удалять клиентские узлы и StoragePool. Однако всегда должен существовать хотя бы один StoragePool со значением default: true.

apiVersion: storage.nova-platform.io/v1alpha1
kind: LonghornClusterConfig
metadata:
  name: longhorn-storage
spec:
  clientNodes:
    - infra-95.local
    - infra-96.local  (1)
  storagePool:
    - nodeVolumeConfig:
        name: demo
        volumeName: demo-1
      default: true
    - nodeVolumeConfig:
        name: new-storage
        volumeName: demo-2  (2)
      default: false
1 Добавлен новый клиентский узел infra-96.local
2 Добавлен новый StoragePool demo-2.