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

Установка

Данный раздел описывает все поддерживаемые сценарии использования и примеры конфигураций для управления 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.

  1. Создайте PV с помощью команды:

    pvcreate /dev/vdb
  2. Получите PV UUID.

    pvs -o name,uuid /dev/vdb
  3. Сохраните предоставленный манифест в файл, например, 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. В рамках кластера может быть создана только одна конфигурация

  1. Установите оператор 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
  2. Установите манифест в кластер Kubernetes, выполнив команду:

     kubectl apply -f LonghornOperator.yaml
  3. Проверьте состояние оператора после установки.

    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.

  4. Сохраните предоставленный манифест в файл, например, 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

  1. Создайте PV с помощью команды:

    pvcreate /dev/vdb
  2. Получите PV UUID.

    pvs -o name,uuid /dev/vdb
  3. В консоли в разделе Узлы кластера перейдите к подразделу NodeVolumeConfig.

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

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

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

      node volume config yaml

      Ниже представлен пример заполнения 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) - размер логического тома.
    • С помощью формы

      node volume config form

      Заполните поля формы:

      • Имя (тип: 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. Для этого выполните следующие шаги.

  1. Установите оператор Nova Storage Operator. В Nova Console в главном меню выберите OperatorsOperatorHUB. Выберите Nova Storage Operator. Нажмите кнопку Установить. Подтвердите установку, нажав Установить.

  2. Перейдите в раздел OperatorsУстановленные операторы. Выберите Nova Storage Operator или сразу после установки нажмите Открыть оператор.

  3. Перейдите ко вкладке LonghornClusterConfig и нажмите Создать Longhorn Cluster Config

  4. Заполнить настройки LonghornClusterConfig можно двумя способами:

    • С помощью формы

      longhorn 2

      Заполните поля формы:

      • Имя (тип: 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. Обязательно должен быть выбран один и только один пул как основной.
  5. Нажмите Создать. Отслеживайте статус на вкладке LonghornClusterConfig на странице оператора.

4. Рекомендуется к ознакомлению