Установка
Данный раздел описывает все поддерживаемые сценарии использования и примеры конфигураций для управления LonghornClusterConfig и NodeVolumeConfig.
|
Важно соблюдать правильный порядок! Перед созданием LonghornClusterConfig необходимо создать соответствующий NodeVolumeConfig. |
1. Предварительные условия
-
У вас есть доступ к кластеру с учетной записью, имеющей роль cluster-admin в Kubernetes.
-
Вы установили утилиту kubectl для работы с Kubernetes.
2. Установка с помощью kubectl
2.1. NodeVolumeConfig
NodeVolumeConfig — это интерфейс для управления конфигурациями томов узлов, который позволяет настраивать и администрировать дисковое пространство, непосредственно привязанное к рабочим узлам кластера.
При обновлении с версии v7.6.0 до версии v7.6.0 версия CRD NodeVolumeConfig будет обновлена с v1alpha1 до v1alpha2.
Для создания новых CR будет использоваться версия v1alpha2. Поле path заменено на pvUUID — UUID, получаемый после создания PV на блочном устройстве. Для использования NodeVolumeConfig версии v1alpha2 необходимо предварительно создать PV на блочном устройстве на всех узлах, указанных в NodeVolumeConfig, и получить их UUID.
-
Создайте PV с помощью команды:
pvcreate /dev/vdb -
Получите PV UUID.
pvs -o name,uuid /dev/vdb -
Сохраните предоставленный манифест в файл, например,
NodeVolumeConfig.yaml.Пример манифеста
apiVersion: storage.nova-platform.io/v1alpha2 (1) kind: NodeVolumeConfig (2) metadata: name: worker-nodes (3) spec: nodes: (4) - blockDevices: - pvUUID: rYMnRW-seuT-rKV0-zLG0-CUs3-dT5t-m9bjrR name: worker01.sandbox.nova.internal (5) - blockDevices: (6) - pvUUID: Tal4tJ-uvNh-nm98-L1vg-BGqU-mAqc-FvKnMj (7) name: worker02.sandbox.nova.internal - blockDevices: - pvUUID: K16uLS-X01X-Zgvf-rvro-HtOE-Q33z-6fbYHn (7) name: worker03.sandbox.nova.internal volumeGroup: lnghrn-vg-01 (8) volumes: (9) - name: lnghrn-lv-01 (10) mountPath: /mnt/lnghrn-lv-01 (11) fsType: xfs (12) size: 9Gi (13)1 apiVersion(тип:string) - версия API для ресурса NodeVolumeConfig.2 kind(тип:string) - тип Kubernetes ресурса.3 metadata.name(тип:string) - уникальное имя конфигурации в кластере.4 spec.nodes(тип:array) - список узлов для применения конфигурации.5 spec.nodes.name(тип:string) - имя узла.6 spec.nodes.blockDevices(тип:array) - список блочных устройств.7 spec.nodes.blockDevices.pvUUID(тип:string) - список блочных устройств.8 spec.volumeGroup(тип:string) - имя группы томов. Группа томов, которая будет создана на выбранном узле кластера. В данной группе томов будут созданы один или несколько логических томов.9 spec.volumes(тип:array) - список логических томов для создания.10 spec.volumes.name(тип:string) - уникальное имя логического тома.11 spec.volumes.mountPath(тип:string) - путь для монтирования тома в файловой системе.12 spec.volumes.fsType(тип:string) - тип файловой системы для форматирования.13 spec.volumes.size(тип:string) - размер логического тома.
Установите манифест в кластер Kubernetes, выполнив команду:
kubectl apply -f NodeVolumeConfig.yaml
2.2. LonghornClusterConfig
LonghornClusterConfig - это ресурс для настройки параметров кластера и хранилища Longhorn.
|
Убедитесь, что у вас не создан LonghornClusterConfig. В рамках кластера может быть создана только одна конфигурация |
-
Установите оператор longhorn-operator. Для этого сохраните представленный ниже манифест в файл, например
LonghornOperator.yaml.Пример манифеста для установки longhorn-operator
apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: nova-longhorn-operator namespace: nova-operators spec: channel: stable installPlanApproval: Automatic name: nova-longhorn-operator source: nova-catalog sourceNamespace: nova-operatorhub startingCSV: nova-longhorn-operator.v1.0.0 -
Установите манифест в кластер Kubernetes, выполнив команду:
kubectl apply -f LonghornOperator.yaml -
Проверьте состояние оператора после установки.
kubectl get pods -n nova-operatorsПример вывода:NAME READY STATUS RESTARTS AGE nova-longhorn-operator-6f4fd9d5d4-69nvf 1/1 Running 1 (44h ago) 5dУбедитесь, что оператор находится в статусе
Running. В столбцеREADYдолжно быть1/1. -
Сохраните предоставленный манифест в файл, например,
LonghornClusterConfig.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. Обязательно должен быть выбран один и только один пул как основной.
Установите манифест в кластер Kubernetes, выполнив команду:
kubectl apply -f LonghornClusterConfig.yaml
3. Установка с помощью Nova Console
3.1. NodeVolumeConfig
-
Создайте PV с помощью команды:
pvcreate /dev/vdb -
Получите PV UUID.
pvs -o name,uuid /dev/vdb -
В консоли в разделе Узлы кластера перейдите к подразделу NodeVolumeConfig.
-
Нажмите на кнопку Создать NodeVolumeConfig в правом верхнем углу.
-
Настроить конфигурацию NodeVolumeConfig можно двумя способами:
-
С помощью манифеста
Ниже представлен пример заполнения YAML-манифеста с пояснениями:
Пример манифеста
apiVersion: storage.nova-platform.io/v1alpha2 (1) kind: NodeVolumeConfig (2) metadata: name: worker-nodes (3) spec: nodes: (4) - blockDevices: - pvUUID: rYMnRW-seuT-rKV0-zLG0-CUs3-dT5t-m9bjrR name: worker01.sandbox.nova.internal (5) - blockDevices: (6) - pvUUID: Tal4tJ-uvNh-nm98-L1vg-BGqU-mAqc-FvKnMj (7) name: worker02.sandbox.nova.internal - blockDevices: - pvUUID: K16uLS-X01X-Zgvf-rvro-HtOE-Q33z-6fbYHn (7) name: worker03.sandbox.nova.internal volumeGroup: lnghrn-vg-01 (8) volumes: (9) - name: lnghrn-lv-01 (10) mountPath: /mnt/lnghrn-lv-01 (11) fsType: xfs (12) size: 9Gi (13)1 apiVersion(тип:string) - версия API для ресурса NodeVolumeConfig.2 kind(тип:string) - тип Kubernetes ресурса.3 metadata.name(тип:string) - уникальное имя конфигурации в кластере.4 spec.nodes(тип:array) - список узлов для применения конфигурации.5 spec.nodes.name(тип:string) - имя узла.6 spec.nodes.blockDevices(тип:array) - список блочных устройств.7 spec.nodes.blockDevices.pvUUID(тип:string) - список блочных устройств.8 spec.volumeGroup(тип:string) - имя группы томов. Группа томов, которая будет создана на выбранном узле кластера. В данной группе томов будут созданы один или несколько логических томов.9 spec.volumes(тип:array) - список логических томов для создания.10 spec.volumes.name(тип:string) - уникальное имя логического тома.11 spec.volumes.mountPath(тип:string) - путь для монтирования тома в файловой системе.12 spec.volumes.fsType(тип:string) - тип файловой системы для форматирования.13 spec.volumes.size(тип:string) - размер логического тома. -
С помощью формы
Заполните поля формы:
-
Имя (тип: string) - уникальное имя конфигурации в кластере. Пример:
worker-nodes -
Volumes - список логических томов для создания.
-
mountPath (тип:
string) - путь для монтирования тома в файловой системе. -
name (тип:
string) - уникальное имя логического тома. -
fsType (тип:
string) - тип файловой системы для форматирования. Необязателен к заполнению. -
size (тип:
string) - размер логического тома. Необязателен к заполнению.
-
-
Nodes - список узлов для применения конфигурации.
-
blockDevices - список блочных устройств.
-
pvUUID (тип:
string) - заполняются значениями UUID полученными после создания PV.
-
-
name (тип:
string) - уникальное имя логического тома. -
volumeGroup (тип:
string) - имя группы томов. Группа томов, которая будет создана на выбранном узле кластера. В данной группе томов будут созданы один или несколько логических томов.
-
-
-
3.2. LonghornClusterConfig
|
Убедитесь, что у вас не создан LonghornClusterConfig. В рамках кластера может быть создана только одна конфигурация |
Установите ресурс через Nova Console OperatorHUB. Для этого выполните следующие шаги.
-
Установите оператор Nova Storage Operator. В Nova Console в главном меню выберите Operators → OperatorHUB. Выберите Nova Storage Operator. Нажмите кнопку Установить. Подтвердите установку, нажав Установить.
-
Перейдите в раздел Operators → Установленные операторы. Выберите Nova Storage Operator или сразу после установки нажмите Открыть оператор.
-
Перейдите ко вкладке LonghornClusterConfig и нажмите Создать Longhorn Cluster Config
-
Заполнить настройки LonghornClusterConfig можно двумя способами:
-
С помощью формы
Заполните поля формы:
-
Имя (тип:
string) - уникальное имя конфигурации кластера Longhorn. Имя может быть только longhorn-storage. -
storagePool - массив конфигураций пулов хранения данных.
-
nodeVolumeConfig
-
name (тип:
string) - идентификатор NodeVolumeConfig. -
volumeName (тип:
string) - имя тома для хранения данных на узлах.
-
-
Чекбокс default - пометка пула как основного. Если не указано, используется false. Обязательно должен быть выбран один и только один пул как основной.
-
-
clientNodes - список узлов, где будут запущены сервисы Longhorn для поддержки постоянного хранилища.
-
значение - имя узла. Ниже по кнопке Добавить clientNodes можно добавить узел.
-
-
-
С помощью манифеста
Пример манифеста
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. Обязательно должен быть выбран один и только один пул как основной.
-
-
Нажмите Создать. Отслеживайте статус на вкладке LonghornClusterConfig на странице оператора.