Если control plane кластера размещен на виртуальных машинах или bare-metal-серверах, cloud-провайдер использует настройки модуля cloud-provider-zvirt в конфигурации Deckhouse. Иначе, если control plane кластера размещен в облаке, cloud-провайдер использует структуру ZvirtClusterConfiguration для настройки.

ZvirtClusterConfiguration

Version: deckhouse.io/v1

Описывает конфигурацию облачного кластера в Zvirt.

Используется облачным провайдером, если управляющий слой (control plane) кластера размещен в облаке.

Выполните следующую команду, чтобы изменить конфигурацию в работающем кластере:

kubectl -n d8-system exec -ti svc/deckhouse-leader -c deckhouse -- deckhouse-controller edit provider-cluster-configuration

После изменения параметров узлов необходимо выполнить команду dhctl converge, чтобы изменения вступили в силу.

Пример:

apiVersion: deckhouse.io/v1
kind: ZvirtClusterConfiguration
layout: Standard
clusterID: b46372e7-0d52-40c7-9bbf-fda31e187088
masterNodeGroup:
  replicas: 1
  instanceClass:
    numCPUs: 4
    memory: 8192
    template: debian-bookworm
    vnicProfileID: 49bb4594-0cd4-4eb7-8288-8594eafd5a86
    storageDomainID: c4bf82a5-b803-40c3-9f6c-b9398378f424
nodeGroups:
- name: worker
  replicas: 1
  instanceClass:
    numCPUs: 4
    memory: 8192
    template: debian-bookworm
    vnicProfileID: 49bb4594-0cd4-4eb7-8288-8594eafd5a86
provider:
  server: "<SERVER>"
  username: "<USERNAME>"
  password: "<PASSWORD>"
  insecure: true
  • apiVersion
    строка

    Обязательный параметр

    Допустимые значения: deckhouse.io/v1

  • clusterID
    строка

    Обязательный параметр

    ID кластера с общими доменами хранения и ЦП одного типа для создания виртуальны машин.

    Шаблон: ^[\da-fA-F]{8}\-[\da-fA-F]{4}\-4[\da-fA-F]{3}\-[\da-fA-F]{4}\-[\da-fA-F]{12}$

    Пример:

    clusterID: 49bb4594-0cd4-4eb7-8288-8594eafd5a86
    
  • kind
    строка

    Обязательный параметр

    Допустимые значения: ZvirtClusterConfiguration

  • layout
    строка

    Обязательный параметр

    Название схемы размещения.

    Подробнее о возможных схемах размещения провайдера.

  • masterNodeGroup
    объект

    Обязательный параметр

    Спецификация для описания NodeGroup master-узлов.

    Внимание! После изменения параметров секции masterNodeGroup необходимо выполнить команду dhctl converge, чтобы изменения вступили в силу.

    • masterNodeGroup.instanceClass
      объект

      Обязательный параметр

      Частичное содержимое полей ZvirtInstanceClass.

      • masterNodeGroup.instanceClass.etcdDiskSizeGb
        целочисленный

        Etcd disk size in GiB.

        По умолчанию: 10

        Пример:

        etcdDiskSizeGb: 10
        
      • masterNodeGroup.instanceClass.memory
        целочисленный

        Обязательный параметр

        Память в MiB для выделения виртуальным машинам.

        Допустимые значения: 1 <= X

        Пример:

        memory: 8192
        
      • masterNodeGroup.instanceClass.numCPUs
        целочисленный

        Обязательный параметр

        Количество vCPU, выделяемых виртуальным машинам.

        Допустимые значения: 1 <= X

        Пример:

        numCPUs: 2
        
      • masterNodeGroup.instanceClass.rootDiskSizeGb
        целочисленный

        Root disk size in GiB to use in zVirt VirtualMachines.

        По умолчанию: 50

        Пример:

        rootDiskSizeGb: 50
        
      • masterNodeGroup.instanceClass.storageDomainID
        строка

        Обязательный параметр

        ID домена хранения.

        Шаблон: ^[\da-fA-F]{8}\-[\da-fA-F]{4}\-4[\da-fA-F]{3}\-[\da-fA-F]{4}\-[\da-fA-F]{12}$

        Пример:

        storageDomainID: 49bb4594-0cd4-4eb7-8288-8594eafd5a86
        
      • masterNodeGroup.instanceClass.template
        строка

        Обязательный параметр

        Имя шаблона, который будет использован при заказе виртуальных машин.

        Пример:

        template: debian-bookworm
        
      • masterNodeGroup.instanceClass.vnicProfileID
        строка

        Обязательный параметр

        ID профиля vNIC.

        Шаблон: ^[\da-fA-F]{8}\-[\da-fA-F]{4}\-4[\da-fA-F]{3}\-[\da-fA-F]{4}\-[\da-fA-F]{12}$

        Пример:

        vnicProfileID: 49bb4594-0cd4-4eb7-8288-8594eafd5a86
        
    • masterNodeGroup.replicas
      целочисленный

      Обязательный параметр

      Количество создаваемых master-узлов. Для обеспечения кворума важно, чтобы оно было нечетным.

      Допустимые значения: 1 <= X

  • nodeGroups
    массив объектов

    Массив дополнительных NodeGroup для создания статических узлов (например, для выделенных frontend-узлов или шлюзов).

    • nodeGroups.instanceClass
      объект

      Обязательный параметр

      Частичное содержимое полей ZvirtInstanceClass.

      • nodeGroups.instanceClass.etcdDiskSizeGb
        целочисленный

        Etcd disk size in GiB.

        По умолчанию: 10

        Пример:

        etcdDiskSizeGb: 10
        
      • nodeGroups.instanceClass.memory
        целочисленный

        Обязательный параметр

        Память в MiB для выделения виртуальным машинам.

        Допустимые значения: 1 <= X

        Пример:

        memory: 8192
        
      • nodeGroups.instanceClass.numCPUs
        целочисленный

        Обязательный параметр

        Количество vCPU, выделяемых виртуальным машинам.

        Допустимые значения: 1 <= X

        Пример:

        numCPUs: 2
        
      • nodeGroups.instanceClass.rootDiskSizeGb
        целочисленный

        Root disk size in GiB to use in zVirt VirtualMachines.

        По умолчанию: 50

        Пример:

        rootDiskSizeGb: 50
        
      • nodeGroups.instanceClass.storageDomainID
        строка

        ID домена хранения.

        Шаблон: ^[\da-fA-F]{8}\-[\da-fA-F]{4}\-4[\da-fA-F]{3}\-[\da-fA-F]{4}\-[\da-fA-F]{12}$

        Пример:

        storageDomainID: 49bb4594-0cd4-4eb7-8288-8594eafd5a86
        
      • nodeGroups.instanceClass.template
        строка

        Обязательный параметр

        Имя шаблона, который будет использован при заказе виртуальных машин.

        Пример:

        template: debian-bookworm
        
      • nodeGroups.instanceClass.vnicProfileID
        строка

        Обязательный параметр

        ID профиля vNIC.

        Шаблон: ^[\da-fA-F]{8}\-[\da-fA-F]{4}\-4[\da-fA-F]{3}\-[\da-fA-F]{4}\-[\da-fA-F]{12}$

        Пример:

        vnicProfileID: 49bb4594-0cd4-4eb7-8288-8594eafd5a86
        
    • nodeGroups.name
      строка

      Обязательный параметр

      Имя NodeGroup, которое будет использоваться для генерации имен узлов.

    • nodeGroups.nodeTemplate

      Настройки Node-объектов в Kubernetes, которые будут добавлены после регистрации узлов.

      • nodeGroups.nodeTemplate.annotations
        объект

        Аналогично стандартному полю metadata.annotations.

        Пример:

        annotations:
          ai.fleet.com/discombobulate: 'true'
        
      • nodeGroups.nodeTemplate.labels
        объект

        Список лейблов, которые будут прикреплены ко всем ресурсам кластера (если они это поддерживают).

        Аналогично стандартному полю metadata.labels.

        Если поменять лейблы в рабочем кластере, после применения изменений необходимо пересоздать все машины.

        Пример:

        labels:
          environment: production
          app: warp-drive-ai
        
      • nodeGroups.nodeTemplate.taints
        массив объектов

        Аналогично полю .spec.taints из объекта Node.

        Внимание! Доступны только поля effect, key, values.

        Пример:

        taints:
        - effect: NoExecute
          key: ship-class
          value: frigate
        
        • nodeGroups.nodeTemplate.taints.effect
          строка

          Допустимые значения: NoSchedule, PreferNoSchedule, NoExecute

        • nodeGroups.nodeTemplate.taints.key
          строка
        • nodeGroups.nodeTemplate.taints.value
          строка
    • nodeGroups.replicas
      целочисленный

      Обязательный параметр

      Количество узлов.

  • provider
    объект

    Обязательный параметр

    Параметры для подключения к Zvirt.

    • provider.caBundle
      строка

      CA сертификат закодированный base64.

      По умолчанию: ""

    • provider.insecure
      булевый

      Установите значение true, если Zvirt имеет самоподписанный сертификат.

      По умолчанию: false

    • provider.password
      строка

      Обязательный параметр

      Пароль.

    • provider.server
      строка

      Обязательный параметр

      Хост или IP-адрес zvirt сервера.

    • provider.username
      строка

      Обязательный параметр

      Логин.

  • sshPublicKey
    строка

    Обязательный параметр

    Публичный ключ для доступа на узлы.