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

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

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

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

1. Последовательность создания и управления

  1. Создание NodeVolumeConfig

    Для создания пула хранения необходимо сначала определить 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

    Описание: Данный NodeVolumeConfig создает том demo-1, который будет смонтирован в /mnt/longhorn-1 с файловой системой xfs и размером 27Gi. Блочное устройство /dev/vdb подключено на узле worker-135.local.

  2. Создание LonghornClusterConfig

    После определения NodeVolumeConfig можно создать LonghornClusterConfig, используя том из ранее созданного пула хранения:

    apiVersion: storage.nova-platform.io/v1alpha1
    kind: LonghornClusterConfig
    metadata:
      name: longhorn-storage
    spec:
      clientNodes:
        - infra-95.local
      storagePool:
        - nodeVolumeConfig:
            name: demo
            volumeName: demo-1
          default: true

    Описание: Конфигурация LonghornClusterConfig создает кластер Longhorn с клиентским узлом infra-95.local и использует пул хранения demo-1 из NodeVolumeConfig. Обязательно должен существовать один StoragePool с параметром default: true. Остальные StoragePool по умолчанию получат параметр default: false.

После создания ресурса LonghornClusterConfig в кластре буду созданы следующие kustomization, которые обеспечат установку всех необходимых компонентов для функционирования кластера Longhorn:

  • nova-release-storage-pre

  • nova-release-storage-main

  • nova-release-storage-post

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.