Экспериментальная версия. Функциональность может сильно измениться. Совместимость с будущими версиями не гарантируется.

DVPClusterConfiguration

Version: deckhouse.io/v1

Описывает конфигурацию облачного кластера в Deckhouse Virtualization Platform (DVP).

Используется облачным провайдером, если управляющий слой (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: DVPClusterConfiguration
layout: Standard
sshPublicKey: "<SSH_PUBLIC_KEY>"
zones:
- zone-a
- zone-b
- zone-c
region: r1
masterNodeGroup:
  replicas: 3
  zones:
  - zone-a
  - zone-b
  - zone-c
  instanceClass:
    virtualMachine:
      cpu:
        cores: 1
        coreFraction: 100%
      memory:
        size: 4Gi
      virtualMachineClassName: generic
      ipAddresses:
      - 10.66.30.100
      - 10.66.30.101
      - 10.66.30.102
      additionalLabels:
        additional-vm-label: label-value
      additionalAnnotations:
        additional-vm-annotation: annotation-value
      tolerations:
      - key: dedicated.deckhouse.io
        operator: Equal
        value: system
      nodeSelector:
        beta.kubernetes.io/os: linux
    rootDisk:
      size: 10Gi
      storageClass: linstor-thin-r1
      image:
        kind: ClusterVirtualImage
        name: ubuntu-2204
    etcdDisk:
      size: 10Gi
      storageClass: linstor-thin-r1
nodeGroups:
- name: worker
  zones:
  - zone-a
  - zone-b
  - zone-c
  replicas: 1
  instanceClass:
    virtualMachine:
      cpu:
        cores: 4
        coreFraction: 100%
      memory:
        size: 8Gi
      virtualMachineClassName: generic
    rootDisk:
      size: 10Gi
      image:
        kind: ClusterVirtualImage
        name: ubuntu-2204
provider:
  kubeconfigDataBase64: ZXhhbXBsZQo=
  namespace: default
  • apiVersion
    строка

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

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

  • kind
    строка

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

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

  • layout
    строка

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

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

  • masterNodeGroup
    объект

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

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

    Чтобы изменения вступили в силу, после изменения параметров секции masterNodeGroup выполните команду dhctl converge.

    • masterNodeGroup.instanceClass
      объект

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

      Параметры виртуальной машины и ее дисков для созданного master-узла.

      • masterNodeGroup.instanceClass.additionalLabels
        объект

        Дополнительные метки.

        Пример:

        project: cms-production
        severity: critical
        
      • masterNodeGroup.instanceClass.etcdDisk
        объект

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

        Указание настроек для диска данных etcd.

        • masterNodeGroup.instanceClass.etcdDisk.size
          строка

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

          Размер диска etcd.

          Шаблон: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$

          Пример:

          size: 10Gi
          
        • masterNodeGroup.instanceClass.etcdDisk.storageClass
          строка

          Имя существующего StorageClass будет использоваться для создания диска данных etcd.

      • masterNodeGroup.instanceClass.rootDisk
        объект

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

        Указывает настройки для корневого диска виртуальной машины.

        • masterNodeGroup.instanceClass.rootDisk.image
          объект

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

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

          • masterNodeGroup.instanceClass.rootDisk.image.kind
            строка

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

            Тип источника изображения.

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

          • masterNodeGroup.instanceClass.rootDisk.image.name
            строка

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

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

            Для установки требуются образы ОС Linux с предустановленным cloud-init.

        • masterNodeGroup.instanceClass.rootDisk.size
          строка

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

          Размер корневого диска.

          Шаблон: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$

          Пример:

          size: 10Gi
          
        • masterNodeGroup.instanceClass.rootDisk.storageClass
          строка

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

      • masterNodeGroup.instanceClass.virtualMachine
        объект

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

        Настройки виртуальной машины для созданного master-узла.

        • masterNodeGroup.instanceClass.virtualMachine.additionalAnnotations
          объект

          Дополнительные аннотации для ресурса виртуальной машины.

          Пример:

          cluster-owner: user
          
        • masterNodeGroup.instanceClass.virtualMachine.additionalLabels
          объект

          Дополнительные метки для ресурса виртуальной машины.

          Пример:

          cluster-owner: user
          
        • masterNodeGroup.instanceClass.virtualMachine.bootloader
          строка

          Определяет загрузчик для виртуальной машины.

          • BIOS — используется BIOS;
          • EFI — используется Unified Extensible Firmware (EFI/UEFI);
          • EFIWithSecureBoot — используется UEFI/EFI c поддержкой Secure Boot.

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

          Допустимые значения: BIOS, EFI, EFIWithSecureBoot

        • masterNodeGroup.instanceClass.virtualMachine.cpu
          объект

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

          Настройки процессора для виртуальной машины.

          • masterNodeGroup.instanceClass.virtualMachine.cpu.coreFraction
            строка

            Процент гарантированной доли CPU, которая будет выделена для виртуальной машины.

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

            Допустимые значения: 5%, 10%, 25%, 50%, 100%

            Пример:

            coreFraction: 100%
            
          • masterNodeGroup.instanceClass.virtualMachine.cpu.cores
            целочисленный

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

            Количество ядер процессора для виртуальной машины.

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

        • masterNodeGroup.instanceClass.virtualMachine.ipAddresses
          массив строк

          Статические IP-адреса, назначаемые сетевым интерфейсам виртуальных машин. Количество адресов должно соответствовать числу создаваемых реплик — каждый IP-адрес будет закреплён за конкретной репликой. Например, если задано 3 реплики и указаны IP-адреса: ip1, ip2, ip3, то ip1 будет назначен первой реплике, ip2 — второй, а ip3 — третьей.

          Эти адреса должны принадлежать диапазону адресов, указанному в конфигурации модуля виртуализации в параметре virtualMachineCIDRs.

          • Элемент массива
            строка

            Шаблон: ^([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})|(Auto)$

        • masterNodeGroup.instanceClass.virtualMachine.memory
          объект

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

          Определяет параметры памяти для виртуальной машины.

          • masterNodeGroup.instanceClass.virtualMachine.memory.size
            строка

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

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

            Шаблон: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$

            Пример:

            size: 4Gi
            
        • masterNodeGroup.instanceClass.virtualMachine.nodeSelector
          объект

          Позволяет назначить виртуальную машину на указанные узлы DVP. Подробнее — как в параметре spec.nodeSelector подов в Kubernetes.

        • masterNodeGroup.instanceClass.virtualMachine.priorityClassName
          строка

          Подробнее — как в параметре spec.priorityClassName подов в Kubernetes.

        • masterNodeGroup.instanceClass.virtualMachine.tolerations
          массив объектов

          Позволяет установить допуски для виртуальной машины для узла DVP. Подробнее — как в параметре spec.tolerations подов в Kubernetes;

          • masterNodeGroup.instanceClass.virtualMachine.tolerations.effect
            строка
          • masterNodeGroup.instanceClass.virtualMachine.tolerations.key
            строка
          • masterNodeGroup.instanceClass.virtualMachine.tolerations.operator
            строка
          • masterNodeGroup.instanceClass.virtualMachine.tolerations.tolerationSeconds
            целочисленный
          • masterNodeGroup.instanceClass.virtualMachine.tolerations.value
            строка
        • masterNodeGroup.instanceClass.virtualMachine.virtualMachineClassName
          строка

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

          Имя VirtualMachineClass.

          Предназначен для централизованной конфигурации предпочтительных параметров виртуальных машин. Ресурс позволяет задавать инструкции CPU, политики конфигурации ресурсов CPU и памяти для виртуальных машин, а также устанавливать соотношения этих ресурсов.

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

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

      Количество создаваемых master-узлов.

      Для обеспечения кворума важно, чтобы оно было нечетным.

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

    • masterNodeGroup.zones
      массив строк

      Набор зон, в которых могут быть созданы узлы.

      Чтобы использовать эту настройку, на узлах DVP должена быть установлена метка topology.kubernetes.io/zone. Подробнее о топологических метках.

      Чтобы установить требуемую метку для узла DVP, обратитесь к документации по NodeGroup.

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

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

    • nodeGroups.instanceClass
      объект

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

      Параметры виртуальной машины и диска для созданного статического узла.

      • nodeGroups.instanceClass.rootDisk
        объект

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

        Указывает настройки для корневого диска виртуальной машины.

        • nodeGroups.instanceClass.rootDisk.image
          объект

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

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

          • nodeGroups.instanceClass.rootDisk.image.kind
            строка

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

            Тип источника изображения.

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

          • nodeGroups.instanceClass.rootDisk.image.name
            строка

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

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

            Для установки требуются образы ОС Linux с предустановленным cloud-init.

        • nodeGroups.instanceClass.rootDisk.size
          строка

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

          Размер корневого диска.

          Шаблон: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$

          Пример:

          size: 10Gi
          
        • nodeGroups.instanceClass.rootDisk.storageClass
          строка

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

      • nodeGroups.instanceClass.virtualMachine
        объект

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

        Настройки виртуальной машины для созданного master-узла.

        • nodeGroups.instanceClass.virtualMachine.additionalAnnotations
          объект

          Дополнительные аннотации для ресурса виртуальной машины.

          Пример:

          cluster-owner: user
          
        • nodeGroups.instanceClass.virtualMachine.additionalLabels
          объект

          Дополнительные метки для ресурса виртуальной машины.

          Пример:

          cluster-owner: user
          
        • nodeGroups.instanceClass.virtualMachine.bootloader
          строка

          Определяет загрузчик для виртуальной машины.

          • BIOS — используется BIOS;
          • EFI — используется Unified Extensible Firmware (EFI/UEFI);
          • EFIWithSecureBoot — используется UEFI/EFI c поддержкой Secure Boot.

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

          Допустимые значения: BIOS, EFI, EFIWithSecureBoot

        • nodeGroups.instanceClass.virtualMachine.cpu
          объект

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

          Настройки процессора для виртуальной машины.

          • nodeGroups.instanceClass.virtualMachine.cpu.coreFraction
            строка

            Процент гарантированной доли CPU, которая будет выделена для виртуальной машины.

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

            Допустимые значения: 5%, 10%, 25%, 50%, 100%

            Пример:

            coreFraction: 100%
            
          • nodeGroups.instanceClass.virtualMachine.cpu.cores
            целочисленный

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

            Количество ядер процессора для виртуальной машины.

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

        • nodeGroups.instanceClass.virtualMachine.ipAddresses
          массив строк

          Статические IP-адреса, назначаемые сетевым интерфейсам виртуальных машин. Количество адресов должно соответствовать числу создаваемых реплик — каждый IP-адрес будет закреплён за конкретной репликой. Например, если задано 3 реплики и указаны IP-адреса: ip1, ip2, ip3, то ip1 будет назначен первой реплике, ip2 — второй, а ip3 — третьей.

          Эти адреса должны принадлежать диапазону адресов, указанному в конфигурации модуля виртуализации в параметре virtualMachineCIDRs.

          • Элемент массива
            строка

            Шаблон: ^([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})|(Auto)$

        • nodeGroups.instanceClass.virtualMachine.memory
          объект

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

          Определяет параметры памяти для виртуальной машины.

          • nodeGroups.instanceClass.virtualMachine.memory.size
            строка

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

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

            Шаблон: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$

            Пример:

            size: 4Gi
            
        • nodeGroups.instanceClass.virtualMachine.nodeSelector
          объект

          Позволяет назначить виртуальную машину на указанные узлы DVP. Подробнее — как в параметре spec.nodeSelector подов в Kubernetes.

        • nodeGroups.instanceClass.virtualMachine.priorityClassName
          строка

          Подробнее — как в параметре spec.priorityClassName подов в Kubernetes.

        • nodeGroups.instanceClass.virtualMachine.tolerations
          массив объектов

          Позволяет установить допуски для виртуальной машины для узла DVP. Подробнее — как в параметре spec.tolerations подов в Kubernetes;

          • nodeGroups.instanceClass.virtualMachine.tolerations.effect
            строка
          • nodeGroups.instanceClass.virtualMachine.tolerations.key
            строка
          • nodeGroups.instanceClass.virtualMachine.tolerations.operator
            строка
          • nodeGroups.instanceClass.virtualMachine.tolerations.tolerationSeconds
            целочисленный
          • nodeGroups.instanceClass.virtualMachine.tolerations.value
            строка
        • nodeGroups.instanceClass.virtualMachine.virtualMachineClassName
          строка

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

          Имя VirtualMachineClass.

          Предназначен для централизованной конфигурации предпочтительных параметров виртуальных машин. Ресурс позволяет задавать инструкции CPU, политики конфигурации ресурсов CPU и памяти для виртуальных машин, а также устанавливать соотношения этих ресурсов.

    • nodeGroups.name
      строка

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

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

    • nodeGroups.nodeTemplate

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

      • nodeGroups.nodeTemplate.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
      целочисленный

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

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

    • nodeGroups.zones
      массив строк

      Набор зон, в которых могут быть созданы узлы.

      Чтобы использовать эту настройку, на узлах DVP должна быть установлена метка topology.kubernetes.io/zone. Подробнее о топологических метках.

      Чтобы установить требуемую метку для узла DVP, обратитесь к документации по NodeGroup.

  • provider
    объект

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

    Содержит настройки для подключения к API Deckhouse Kubernetes Platform.

    • provider.kubeconfigDataBase64
      строка

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

      Kubeconfig для подключения к Deckhouse Kubernetes Platform API в кодировке Base64.

      Шаблон: ^[A-Za-z0-9+/]+[=]{0,2}$

    • provider.namespace
      строка

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

      Пространство имён, в котором будут созданы ресурсы кластера DKP.

      Если не указано явно, будет использоваться пространство имён по умолчанию для kubeconfig.

  • region
    строка

    Название региона.

    Чтобы использовать эту настройку, на узлах DVP должна быть установлена метка topology.kubernetes.io/region. Подробнее о топологических метках

    Чтобы установить требуемую метку для узла DVP, следуйте документации по NodeGroup.

  • sshPublicKey
    строка

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

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

  • zones
    массив строк

    Набор зон, в которых могут быть созданы узлы.

    Чтобы использовать эту настройку, на узлах DVP должна быть установлена метка topology.kubernetes.io/zone. Подробнее о топологических метках.

    Чтобы установить требуемую метку для узла DVP, обратитесь к документации по NodeGroup.