Примеры использования
Этот раздел описывает все поддерживаемые сценарии использования и примеры конфигураций для управления LonghornClusterConfig и NodeVolumeConfig.
Важно соблюдать правильный порядок: перед созданием LonghornClusterConfig необходимо создать соответствующий NodeVolumeConfig.
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. -
Создание 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. |