Если control plane кластера размещен на виртуальных машинах или серверах bare-metal, то cloud-провайдер использует настройки модуля
cloud-provider-vsphere
в конфигурации Deckhouse. Иначе, если control plane кластера размещен в облаке, то cloud-провайдер использует структуру VsphereClusterConfiguration для настройки.Дополнительная информация о Vsphere Cloud Load Balancers.
VsphereClusterConfiguration
Version: deckhouse.io/v1
Описывает конфигурацию облачного кластера в vSphere.
Используется cloud-провайдером если control plane кластера размещен в облаке.
Выполните следующую команду, чтобы изменить конфигурацию в работающем кластере:
kubectl -n d8-system exec -ti deploy/deckhouse -- deckhouse-controller edit provider-cluster-configuration
Пример:
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: 20
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массив строк
Имена сетей (не полный путь, а просто имя), подключённые к VirtualMachines и используемые 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массив строк
Имена сетей (не полный путь, а просто имя), подключённые к VirtualMachines, и используемые 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 префиксом), назначаемых (по-очереди) master-узлам в основной сети (параметр
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.mainNetworkIPAddresses.nameservers.addressesмассив строк
- masterNodeGroup.instanceClass.mainNetworkIPAddresses.addressстрока
- masterNodeGroup.instanceClass.memoryцелочисленный
Обязательный параметр
Количество памяти (в мегабайтах), выделенных VirtualMachine.
Пример:
memory: 8192
- masterNodeGroup.instanceClass.numCPUsцелочисленный
Обязательный параметр
Количество виртуальных процессорных ядер, выделяемых VirtualMachine.
Пример:
numCPUs: 2
- masterNodeGroup.instanceClass.resourcePoolстрока
Путь до Resource Pool, в котором будут созданные склонированные виртуальные машины.
Указывается относительно зоны (vSphere Cluster).
Пример:
resourcePool: rp-2012
- masterNodeGroup.instanceClass.rootDiskSizeцелочисленный
Размер (в гигабайтах) корневого диска в VirtualMachine.
Если в template указан диск меньшего размера, то автоматически произойдёт его расширение.
Пример:
rootDiskSize: 20
- 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.runtimeOptions.cpuLimitцелочисленный
- masterNodeGroup.instanceClass.templateстрока
Обязательный параметр
Путь до VirtualMachine Template, который будет склонирован для создания новой VirtualMachine.
Пример:
template: dev/golden_image
- masterNodeGroup.instanceClass.additionalNetworksмассив строк
- masterNodeGroup.replicasцелочисленный
Обязательный параметр
Количество создаваемых master-узлов. Важно иметь нечётное количество мастеров для обеспечения кворума.
Допустимые значения:
1 <= X
- masterNodeGroup.zonesмассив строк
Список зон, в которых допустимо создавать узлы.
- masterNodeGroup.instanceClassобъект
- nodeGroupsмассив объектов
Массив дополнительных NodeGroup для создания статичных узлов (например, для выделенных frontend-узлов или шлюзов).
- nodeGroups.instanceClassобъект
Обязательный параметр
Частичное содержимое полей VsphereInstanceClass.
- 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 префиксом), назначаемых (по-очереди) master-узлам в основной сети (параметр
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.mainNetworkIPAddresses.nameservers.addressesмассив строк
- nodeGroups.instanceClass.mainNetworkIPAddresses.addressстрока
- nodeGroups.instanceClass.memoryцелочисленный
Обязательный параметр
Количество памяти (в мегабайтах), выделенных VirtualMachine.
Пример:
memory: 8192
- nodeGroups.instanceClass.numCPUsцелочисленный
Обязательный параметр
Количество виртуальных процессорных ядер, выделяемых VirtualMachine.
Пример:
numCPUs: 2
- nodeGroups.instanceClass.resourcePoolстрока
Путь до Resource Pool, в котором будут созданные склонированные виртуальные машины.
Указывается относительно зоны (vSphere Cluster).
Пример:
resourcePool: rp-2012
- nodeGroups.instanceClass.rootDiskSizeцелочисленный
Размер (в гигабайтах) корневого диска в VirtualMachine.
Если в template указан диск меньшего размера, то автоматически произойдёт его расширение.
Пример:
rootDiskSize: 20
- 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.runtimeOptions.cpuLimitцелочисленный
- nodeGroups.instanceClass.templateстрока
Обязательный параметр
Путь до VirtualMachine Template, который будет склонирован для создания новой VirtualMachine.
Пример:
template: dev/golden_image
- nodeGroups.instanceClass.additionalNetworksмассив строк
- 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.nodeTemplate.taints.effectстрока
- nodeGroups.nodeTemplate.annotationsобъект
- nodeGroups.replicasцелочисленный
Обязательный параметр
Количество узлов.
- nodeGroups.zonesмассив строк
Список зон, в которых допустимо создавать узлы.
- nodeGroups.instanceClassобъект
- nsxtобъект
Поддержка cloud controller manager’ом Load Balancer’ов в 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-profile
defaultTcpAppProfileName: tcp-profile1
- nsxt.defaultUdpAppProfileNameстрока
Имя профиля по умолчанию, используемого для UDP соединений в NSX-T.
По умолчанию:
"default-udp-lb-app-profile"
Примеры:
defaultUdpAppProfileName: default-udp-lb-app-profile
defaultUdpAppProfileName: udp-profile1
- nsxt.hostстрока
Обязательный параметр
Адрес NSX-T.
Пример:
host: 1.2.3.4
- nsxt.insecureFlagбулевый
Должен быть установлен в
true
если NSX-T использует самоподписанный сертификат.Примеры:
insecureFlag: true
insecureFlag: false
- nsxt.loadBalancerClassмассив
Дополнительная секция, определяющая Load Balancer Classes (чтобы использовать Class, установите аннотацию
loadbalancer.vmware.io/class: <class name>
на SVC).Примеры:
loadBalancerClass: []
loadBalancerClass: name: LBC1 ipPoolName: pool2
loadBalancerClass: name: LBC1 ipPoolName: pool2 tcpAppProfileName: profile2 udpAppProfileName: profile3
- nsxt.loadBalancerClass.ipPoolNameстрока
Обязательный параметр
Имя пула IP-адресов.
- nsxt.loadBalancerClass.nameстрока
Обязательный параметр
Имя Load Balancer Class для установки аннотации
loadbalancer.vmware.io/class: <class name>
в SVC. - nsxt.loadBalancerClass.tcpAppProfileNameстрока
Имя профиля по умолчанию, используемого для TCP соединений.
По умолчанию:
"defaultTcpAppProfileName"
- nsxt.loadBalancerClass.udpAppProfileNameстрока
Имя профиля по умолчанию, используемого для UDP соединений.
По умолчанию:
"defaultUdpAppProfileName"
- nsxt.loadBalancerClass.ipPoolNameстрока
- 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
- nsxt.defaultIpPoolNameстрока
- providerобъект
Обязательный параметр
Параметры подключения к vCenter.
- provider.insecureбулевый
Установите
true
, если vCenter использует самоподписанный сертификат.По умолчанию:
false
- provider.passwordстрока
Обязательный параметр
Пароль.
- provider.serverстрока
Обязательный параметр
Хост или IP-адрес vCenter сервера.
- provider.usernameстрока
Обязательный параметр
Login ID.
- provider.insecureбулевый
- regionстрока
Обязательный параметр
Тег, прикреплённый к vSphere Datacenter, в котором будут происходить все операции: заказ VirtualMachines, размещение их дисков на datastore, подключение к network.
- regionTagCategoryстрока
Обязательный параметр
Имя категории тегов, использующихся для идентификации региона (vSphere Datacenter).
По умолчанию:
"k8s-region"
- sshPublicKeyстрока
Обязательный параметр
Публичный ключ для доступа на узлы.
- useNestedResourcePoolбулевый
Создание вложенного пула (
true
) или использование основного пула (false
).По умолчанию:
true
- vmFolderPathстрока
Обязательный параметр
Путь до VirtualMachine Folder, в котором будут создаваться склонированные виртуальные машины.
Пример:
vmFolderPath: dev/test
- zoneTagCategoryстрока
Обязательный параметр
Имя категории тегов, использующихся для идентификации зоны (vSphere Cluster).
По умолчанию:
"k8s-zone"
- zonesмассив строк
Обязательный параметр
Глобальное ограничение набора зон, с которыми работает данный cloud-провайдер.