Если control plane кластера размещен на виртуальных машинах или bare-metal-серверах, cloud-провайдер использует настройки модуля
cloud-provider-vsphereв конфигурации Deckhouse. Иначе, если control plane кластера размещен в облаке, cloud-провайдер использует структуру VsphereClusterConfiguration для настройки.Дополнительная информация о Vsphere Cloud Load Balancers.
VsphereClusterConfiguration
Version: deckhouse.io/v1
Описывает конфигурацию облачного кластера в vSphere.
Используется облачным провайдером, если управляющий слой (control plane) кластера размещен в облаке.
Выполните следующую команду, чтобы изменить конфигурацию в работающем кластере:
d8 p edit provider-cluster-configuration
После изменения параметров узлов необходимо выполнить команду dhctl converge, чтобы изменения вступили в силу.
Пример:
apiVersion: deckhouse.io/v1
kind: VsphereClusterConfiguration
sshPublicKey: "<SSH_PUBLIC_KEY>"
layout: Standard
vmFolderPath: folder/prefix
regionTagCategory: k8s-region
zoneTagCategory: k8s-zone
region: region2
zones:
- region2-a
externalNetworkNames:
- net3-k8s
internalNetworkNames:
- K8S_3
internalNetworkCIDR: 172.16.2.0/24
baseResourcePool: kubernetes/cloud
masterNodeGroup:
replicas: 1
instanceClass:
numCPUs: 4
memory: 8192
template: Templates/ubuntu-focal-20.04
mainNetwork: net3-k8s
additionalNetworks:
- K8S_3
datastore: lun10
rootDiskSize: 50
runtimeOptions:
nestedHardwareVirtualization: false
nodeGroups:
- name: worker
replicas: 1
zones:
- ru-central1-a
instanceClass:
numCPUs: 4
memory: 8192
template: Templates/ubuntu-focal-20.04
datastore: lun10
mainNetwork: net3-k8s
provider:
server: "<SERVER>"
username: "<USERNAME>"
password: "<PASSWORD>"
insecure: true
- строкаapiVersion
Обязательный параметр
Допустимые значения:
deckhouse.io/v1,deckhouse.io/v1alpha1 - строкаbaseResourcePool
Относительный (от vSphere Cluster) путь до существующего родительского
resourcePoolдля всех создаваемых (в каждой зоне)resourcePool'ов. - булевыйdisableTimesync
Отключение синхронизации времени со стороны vSphere.
Внимание! Отключение этого параметра не отключает NTP-демоны в гостевой ОС, а лишь отключает корректировки времени со стороны ESXi.
По умолчанию:
true - массив строкexternalNetworkNames
Имена сетей (не полный путь, а просто имя), подключенных к виртуальным машинам и используемых
vsphere-cloud-controller-managerдля проставления ExternalIP в.status.addressesв Node API объект.Пример:
externalNetworkNames: - MAIN-1 - public - строкаinternalNetworkCIDR
Подсеть для master-узлов во внутренней сети.
Адреса выделяются с десятого адреса. Например, для подсети
192.168.199.0/24будут использованы адреса начиная с192.168.199.10.Будет использоваться при использовании
additionalNetworksвmasterInstanceClass.Шаблон:
^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))$ - массив строкinternalNetworkNames
Имена сетей (не полный путь, а просто имя), подключенных к виртуальным машинам и используемых
vsphere-cloud-controller-managerдля проставления InternalIP в.status.addressesв Node API объект.Пример:
internalNetworkNames: - KUBE-3 - devops-internal - строкаkind
Обязательный параметр
Допустимые значения:
VsphereClusterConfiguration - строкаlayout
Обязательный параметр
Название схемы размещения.
Подробнее о возможных схемах размещения провайдера.
- объектmasterNodeGroup
Обязательный параметр
Спецификация для описания NodeGroup master-узлов.
Чтобы изменения вступили в силу, после изменения параметров секции
masterNodeGroupвыполните командуdhctl converge.- объектmasterNodeGroup.instanceClass
Обязательный параметр
Частичное содержимое полей VsphereInstanceClass.
- массив строкmasterNodeGroup.instanceClass.additionalNetworks
Список путей до сетей, которые будут подключены к виртуальной машине.
Указывается относительно vSphere datacenter.
Пример:
additionalNetworks: - DEVOPS_32 - DEVOPS_50 - строкаmasterNodeGroup.instanceClass.datastore
Обязательный параметр
Путь до Datastore, на котором будут созданы склонированные виртуальные машины.
Указывается относительно vSphere datacenter.
Пример:
datastore: lun-1201 - строкаmasterNodeGroup.instanceClass.mainNetwork
Обязательный параметр
Путь до сети, которая будет подключена к виртуальной машине как основная (шлюз по умолчанию).
Указывается относительно vSphere datacenter.
Пример:
mainNetwork: k8s-msk-178 - массив объектовmasterNodeGroup.instanceClass.mainNetworkIPAddresses
Cписок статических IP-адресов (с CIDR-префиксом), назначаемых (по очереди) узлам в основной сети (параметр
mainNetwork).По умолчанию включен DHCP-клиент.
Пример:
mainNetworkIPAddresses: - address: 10.1.14.20/24 gateway: 10.1.14.254 nameservers: addresses: - 8.8.8.8 - 8.8.4.4- строкаmasterNodeGroup.instanceClass.mainNetworkIPAddresses.address
Обязательный параметр
IP-адрес с CIDR префиксом.
Шаблон:
^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))$ - строкаmasterNodeGroup.instanceClass.mainNetworkIPAddresses.gateway
Обязательный параметр
IP-адрес шлюза по умолчанию.
Должен находится в подсети, указанной в параметре
address.Шаблон:
^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$ - объектmasterNodeGroup.instanceClass.mainNetworkIPAddresses.nameservers
Обязательный параметр
- массив строкmasterNodeGroup.instanceClass.mainNetworkIPAddresses.nameservers.addresses
Список DNS-серверов.
Пример:
addresses: - 8.8.8.8 - 8.8.4.4- строкаЭлемент массива
Шаблон:
^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$
- массив строкmasterNodeGroup.instanceClass.mainNetworkIPAddresses.nameservers.search
Список доменов для поиска на указанных DNS-серверах.
Пример:
search: - tech.lan
- целочисленныйmasterNodeGroup.instanceClass.memory
Обязательный параметр
Количество памяти (в мегабайтах), выделенной виртуальной машине.
Пример:
memory: 8192 - целочисленныйmasterNodeGroup.instanceClass.numCPUs
Обязательный параметр
Количество виртуальных процессорных ядер, выделяемых виртуальной машине.
Пример:
numCPUs: 2 - строкаmasterNodeGroup.instanceClass.resourcePool
Путь до Resource Pool, в котором будут созданы склонированные виртуальные машины.
Указывается относительно зоны (vSphere Cluster).
Пример:
resourcePool: rp-2012 - целочисленныйmasterNodeGroup.instanceClass.rootDiskSize
Размер (в гигабайтах) корневого диска в виртуальной машине.
Если в template указан диск меньшего размера, автоматически произойдет его расширение.
Пример:
rootDiskSize: 50 - объектmasterNodeGroup.instanceClass.runtimeOptions
Дополнительные (опциональные) параметры виртуальных машин.
- целочисленныйmasterNodeGroup.instanceClass.runtimeOptions.cpuLimit
Верхний лимит (в MHz) потребляемой частоты процессоров для создаваемых виртуальных машин.
- целочисленныйmasterNodeGroup.instanceClass.runtimeOptions.cpuReservation
Величина зарезервированной для виртуальной машины частоты CPU (в MHz).
- целочисленный
Относительная величина CPU Shares для создаваемых виртуальных машин.
- целочисленныйmasterNodeGroup.instanceClass.runtimeOptions.memoryLimit
Верхний лимит (в мегабайтах) потребляемой памяти для создаваемых виртуальных машин.
- целочисленныйmasterNodeGroup.instanceClass.runtimeOptions.memoryReservation
Процент зарезервированной для виртуальной машины памяти в кластере. В процентах относительно
.spec.memory.Допустимые значения:
0 <= X <= 100 - целочисленный
Относительная величина Memory Shares для создаваемых виртуальных машин.
Допустимые значения:
0 <= X <= 100 - булевыйmasterNodeGroup.instanceClass.runtimeOptions.nestedHardwareVirtualization
Включение Hardware Assisted Virtualization на созданных виртуальных машинах.
- строкаmasterNodeGroup.instanceClass.template
Обязательный параметр
Путь до VirtualMachine Template, который будет склонирован для создания новой виртуальной машины.
Пример:
template: dev/golden_image
- целочисленныйmasterNodeGroup.replicas
Обязательный параметр
Количество создаваемых master-узлов. Для обеспечения кворума важно, чтобы оно было нечетным.
Допустимые значения:
1 <= X - массив строкmasterNodeGroup.zones
Список зон, в которых допустимо создавать узлы.
Порядок указания зон не влияет на порядок создания узлов. Узлы будут размещаться в зонах в алфавитном порядке: первый узел — в зоне, стоящей первой по алфавиту, второй — во второй зоне и так далее. Если количество зон меньше числа узлов, то после размещения узла в последней зоне по алфавиту распределение продолжится сначала списка.
- массив объектовnodeGroups
Массив дополнительных NodeGroup для создания статических узлов (например, для выделенных frontend-узлов или шлюзов).
- массив строкnodeGroups.instanceClass.additionalNetworks
Список путей до сетей, которые будут подключены к виртуальной машине.
Указывается относительно vSphere datacenter.
Пример:
additionalNetworks: - DEVOPS_32 - DEVOPS_50 - строкаnodeGroups.instanceClass.datastore
Обязательный параметр
Путь до Datastore, на котором будут созданы склонированные виртуальные машины.
Указывается относительно vSphere datacenter.
Пример:
datastore: lun-1201 - строкаnodeGroups.instanceClass.mainNetwork
Обязательный параметр
Путь до сети, которая будет подключена к виртуальной машине как основная (шлюз по умолчанию).
Указывается относительно vSphere datacenter.
Пример:
mainNetwork: k8s-msk-178 - массив объектовnodeGroups.instanceClass.mainNetworkIPAddresses
Cписок статических IP-адресов (с CIDR-префиксом), назначаемых (по очереди) узлам в основной сети (параметр
mainNetwork).По умолчанию включен DHCP-клиент.
Пример:
mainNetworkIPAddresses: - address: 10.1.14.20/24 gateway: 10.1.14.254 nameservers: addresses: - 8.8.8.8 - 8.8.4.4- строкаnodeGroups.instanceClass.mainNetworkIPAddresses.address
Обязательный параметр
IP-адрес с CIDR префиксом.
Шаблон:
^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))$ - строкаnodeGroups.instanceClass.mainNetworkIPAddresses.gateway
Обязательный параметр
IP-адрес шлюза по умолчанию.
Должен находится в подсети, указанной в параметре
address.Шаблон:
^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$ - объектnodeGroups.instanceClass.mainNetworkIPAddresses.nameservers
Обязательный параметр
- массив строкnodeGroups.instanceClass.mainNetworkIPAddresses.nameservers.addresses
Список DNS-серверов.
Пример:
addresses: - 8.8.8.8 - 8.8.4.4- строкаЭлемент массива
Шаблон:
^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$
- массив строкnodeGroups.instanceClass.mainNetworkIPAddresses.nameservers.search
Список доменов для поиска на указанных DNS-серверах.
Пример:
search: - tech.lan
- целочисленныйnodeGroups.instanceClass.memory
Обязательный параметр
Количество памяти (в мегабайтах), выделенной виртуальной машине.
Пример:
memory: 8192 - целочисленныйnodeGroups.instanceClass.numCPUs
Обязательный параметр
Количество виртуальных процессорных ядер, выделяемых виртуальной машине.
Пример:
numCPUs: 2 - строкаnodeGroups.instanceClass.resourcePool
Путь до Resource Pool, в котором будут созданы склонированные виртуальные машины.
Указывается относительно зоны (vSphere Cluster).
Пример:
resourcePool: rp-2012 - целочисленныйnodeGroups.instanceClass.rootDiskSize
Размер (в гигабайтах) корневого диска в виртуальной машине.
Если в template указан диск меньшего размера, автоматически произойдет его расширение.
Пример:
rootDiskSize: 50 - объектnodeGroups.instanceClass.runtimeOptions
Дополнительные (опциональные) параметры виртуальных машин.
- целочисленныйnodeGroups.instanceClass.runtimeOptions.cpuLimit
Верхний лимит (в MHz) потребляемой частоты процессоров для создаваемых виртуальных машин.
- целочисленныйnodeGroups.instanceClass.runtimeOptions.cpuReservation
Величина зарезервированной для виртуальной машины частоты CPU (в MHz).
- целочисленный
Относительная величина CPU Shares для создаваемых виртуальных машин.
- целочисленныйnodeGroups.instanceClass.runtimeOptions.memoryLimit
Верхний лимит (в мегабайтах) потребляемой памяти для создаваемых виртуальных машин.
- целочисленныйnodeGroups.instanceClass.runtimeOptions.memoryReservation
Процент зарезервированной для виртуальной машины памяти в кластере. В процентах относительно
.spec.memory.Допустимые значения:
0 <= X <= 100 - целочисленный
Относительная величина Memory Shares для создаваемых виртуальных машин.
Допустимые значения:
0 <= X <= 100 - булевыйnodeGroups.instanceClass.runtimeOptions.nestedHardwareVirtualization
Включение Hardware Assisted Virtualization на созданных виртуальных машинах.
- строкаnodeGroups.instanceClass.template
Обязательный параметр
Путь до VirtualMachine Template, который будет склонирован для создания новой виртуальной машины.
Пример:
template: dev/golden_image
- строка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
Обязательный параметр
Количество узлов.
- массив строкnodeGroups.zones
Список зон, в которых допустимо создавать узлы.
Порядок указания зон не влияет на порядок создания узлов. Узлы будут размещаться в зонах в алфавитном порядке: первый узел — в зоне, стоящей первой по алфавиту, второй — во второй зоне и так далее. Если количество зон меньше числа узлов, то после размещения узла в последней зоне по алфавиту распределение продолжится сначала списка.
- объектnsxt
Поддержка cloud controller manager’ом балансировщиков (LoadBalancer) в Vsphere через NSX-T.
- строкаnsxt.defaultIpPoolName
Обязательный параметр
Имя пула IP-адресов по умолчанию, который используется, если в SVC не установлена аннотация
loadbalancer.vmware.io/class.Пример:
defaultIpPoolName: pool1 - строкаnsxt.defaultTcpAppProfileName
Имя профиля по умолчанию, используемого для TCP-соединений в NSX-T.
По умолчанию:
default-tcp-lb-app-profileПримеры:
defaultTcpAppProfileName: default-tcp-lb-app-profiledefaultTcpAppProfileName: tcp-profile1 - строкаnsxt.defaultUdpAppProfileName
Имя профиля по умолчанию, используемого для UDP-соединений в NSX-T.
По умолчанию:
default-udp-lb-app-profileПримеры:
defaultUdpAppProfileName: default-udp-lb-app-profiledefaultUdpAppProfileName: udp-profile1 - строкаnsxt.host
Обязательный параметр
Адрес NSX-T.
Пример:
host: 1.2.3.4 - булевыйnsxt.insecureFlag
Должен быть установлен в
true, если NSX-T использует самоподписанный сертификат.Примеры:
insecureFlag: trueinsecureFlag: false - массивnsxt.loadBalancerClass
Дополнительная секция, определяющая классы балансировщика (LoadBalancer Class) (чтобы использовать класс, установите аннотацию
loadbalancer.vmware.io/class: <ИМЯ КЛАССА>на SVC).Примеры:
loadBalancerClass: []loadBalancerClass: name: LBC1 ipPoolName: pool2loadBalancerClass: name: LBC1 ipPoolName: pool2 tcpAppProfileName: profile2 udpAppProfileName: profile3- строкаnsxt.loadBalancerClass.ipPoolName
Обязательный параметр
Имя пула IP-адресов.
- строкаnsxt.loadBalancerClass.name
Обязательный параметр
Имя класса балансировщика (LoadBalancer Class) для установки аннотации
loadbalancer.vmware.io/class: <ИМЯ КЛАССА>в SVC. - строкаnsxt.loadBalancerClass.tcpAppProfileName
Имя профиля по умолчанию, используемого для TCP-соединений.
По умолчанию:
defaultTcpAppProfileName - строкаnsxt.loadBalancerClass.udpAppProfileName
Имя профиля по умолчанию, используемого для UDP-соединений.
По умолчанию:
defaultUdpAppProfileName
- строкаnsxt.password
Обязательный параметр
Пароль пользователя NSX-T.
Пример:
password: password - строкаnsxt.size
Размер сервиса балансировщика (LoadBalancer).
По умолчанию:
MEDIUMДопустимые значения:
SMALL,MEDIUM,LARGE,XLARGEПример:
size: SMALL - строкаnsxt.tier1GatewayPath
Обязательный параметр
Путь к политике NSX-T tier1 gateway.
Пример:
tier1GatewayPath: "/path/tier1" - строкаnsxt.user
Обязательный параметр
Имя пользователя NSX-T.
Пример:
user: user
- объектprovider
Обязательный параметр
Параметры подключения к vCenter.
- булевыйprovider.insecure
Установите
true, если vCenter использует самоподписанный сертификат.По умолчанию:
false - строкаprovider.password
Обязательный параметр
Пароль.
- строкаprovider.server
Обязательный параметр
Хост или IP-адрес vCenter сервера.
- строкаprovider.username
Обязательный параметр
Login ID.
- строкаregion
Обязательный параметр
Тег, прикрепленный к vSphere Datacenter, в котором будут происходить все операции: заказ виртуальных машин, размещение их дисков на datastore, подключение к network.
- строкаregionTagCategory
Обязательный параметр
Имя категории тегов, использующихся для идентификации региона (vSphere Datacenter).
По умолчанию:
k8s-region - строкаsshPublicKey
Обязательный параметр
Публичный ключ для доступа на узлы.
- строкаstoragePolicyID
ID политики хранилищ SPBM (Storage Policy Based Management).
- булевыйuseNestedResourcePool
Создание вложенного пула (
true) или использование основного пула (false).По умолчанию:
true - булевыйvmFolderExists
Установите значение в
true, если путь заданный вvmFolderPathсуществует. Установка более одного кластера в папку невозможна.По умолчанию:
false - строкаvmFolderPath
Обязательный параметр
Путь до VirtualMachine Folder, в котором будут создаваться склонированные виртуальные машины.
Пример:
vmFolderPath: dev/test - строкаzoneTagCategory
Обязательный параметр
Имя категории тегов, использующихся для идентификации зоны (vSphere Cluster).
По умолчанию:
k8s-zone - массив строкzones
Обязательный параметр
Глобальное ограничение набора зон, с которыми работает данный cloud-провайдер.