Примеры использования
Данный раздел описывает все поддерживаемые сценарии использования и примеры конфигураций для управления LonghornClusterConfig и NodeVolumeConfig.
|
Важно соблюдать правильный порядок! Перед созданием LonghornClusterConfig необходимо создать соответствующий NodeVolumeConfig. |
1. Инструкция по созданию ресурсов
1.1. NodeVolumeConfig
NodeVolumeConfig — это интерфейс для управления конфигурациями томов узлов, который позволяет настраивать и администрировать дисковое пространство, непосредственно привязанное к рабочим узлам кластера.
1.2. Создание NodeVolumeConfig
-
В консоли в разделе Узлы кластера перейдите к подразделу NodeVolumeConfig.
-
Нажмите на кнопку Создать NodeVolumeConfig в правом верхнем углу.
-
Настроить конфигурацию NodeVolumeConfig можно двумя способами:
-
С помощью 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) - путь к блочному устройству на узле. -
С помощью формы
В форме не выведены поля
apiVersionиkind, поскольку значения заполняются автоматически.Ниже представлена таблица с описанием полей формы и указано соответствие полям YAML-манифеста:
Заголовок Имя Обязательно Описание Соответствие поля с YAML Пример заполнения Имя
Имя
Да
Уникальное имя конфигурации в кластере.
metadata.nameworker-nodesГруппа тома
Группа тома
Да
Имя группы томов. Группа томов, которая будет создана на выбранном узле кластера. В данной группе томов будут созданы один или несколько логических томов.
spec.volumeGrouplnghrn-vg-01Узлы
Имя
Да
Имя узла.
spec.nodes.namenova-worker-1.nova.internalУзлы
Путь блочного устройства
Да
Путь к блочному устройству на узле. Возможно указать несколько значений.
spec.nodes.blockDevices.path/dev/vdb, /dev/sdcТома
Имя
Да
Уникальное имя логического тома.
spec.volumes.namelnghrn-lv-01Тома
Путь монтирования
Да
Путь для монтирования тома в файловой системе.
spec.volumes.mountPath/mnt/lnghrn-lv-01Тома
Тип ФС
Да
Тип файловой системы для форматирования.
spec.volumes.fsTypexfs,ext4Тома
Размер
Да
Размер логического тома.
spec.volumes.size10Тома
Ед. изм.
Да
Единицы измерения размера.
spec.volumes.sizeГиБ
-
1.3. LonghornClusterConfig
LonghornClusterConfig - это ресурс для настройки параметров кластера и хранилища Longhorn.
1.4. Расположение LonghornClusterConfig в консоли
-
Перейдите в раздел Администрирование → Настройки.
-
Перейдите на вкладку Конфигурация компонентов.
-
Перейдите в ресурс Longhorn:
-
Если конфигурация создана, то откроется общая страница LonghornClusterConfig.
-
Если конфигурация отсутствует, откроется форма создания LonghornClusterConfig.
-
1.5. Создание LonghornClusterConfig
|
Убедитесь, что у вас не создан LonghornClusterConfig. В рамках кластера может быть создана только одна конфигурация |
-
Для создания перейдите в ресурс конфигурации Longhorn.
-
Настроить конфигурацию можно двумя способами:
-
С помощью YAML-манифеста
Ниже представлен пример заполнения 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. Обязательно должен быть выбран один и только один пул как основной. -
С помощью формы
В форме не выведены поля
apiVersionиkind, поскольку значения заполняются автоматически.Ниже представлена таблица с описанием полей формы и указано соответствие полям YAML-манифеста:
Заголовок Имя Обязательно Описание Соответствие поля с YAML Пример заполнения Имя
Имя
Да
Уникальное имя конфигурации кластера Longhorn. Имя может быть только
longhorn-storage.metadata.namelonghorn-storageКлиентские узлы
Клиентские узлы
Нет
Список узлов, где будут запущены сервисы Longhorn для поддержки постоянного хранилища.
spec.clientNodesnova-infra-1.nova.internalПул хранения
NodeVolumeConfig
Да
Идентификатор NodeVolumeConfig.
spec.storagePool.nodeVolumeConfig.nameworker-nodesПул хранения
Имя тома
Да
Имя тома для хранения данных на узлах.
spec.storagePool.nodeVolumeConfig.volumeNamelnghrn-lv-01Пул хранения
По умолчанию
Нет
Пометка пула как основного. Если не указано, используется false. Обязательно должен быть выбран один и только один пул как основной.
spec.storagePool.defaulttrue
-
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. |