Если 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 svc/deckhouse-leader -c 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: 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-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
Дополнительная секция, определяющая классы балансировщика (LoadBalancer Class) (чтобы использовать класс, установите аннотацию
loadbalancer.vmware.io/class: <ИМЯ КЛАССА>
на SVC).Примеры:
loadBalancerClass: []
loadBalancerClass: name: LBC1 ipPoolName: pool2
loadBalancerClass: 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
Обязательный параметр
Публичный ключ для доступа на узлы.
- useNestedResourcePool
Создание вложенного пула (
true
) или использование основного пула (false
).По умолчанию:
true
- vmFolderExists
Установите значение в
true
, если путь заданный вvmFolderPath
существует. Установка более одного кластера в папку невозможна.По умолчанию:
false
- vmFolderPath
Обязательный параметр
Путь до VirtualMachine Folder, в котором будут создаваться склонированные виртуальные машины.
Пример:
vmFolderPath: dev/test
- zoneTagCategory
Обязательный параметр
Имя категории тегов, использующихся для идентификации зоны (vSphere Cluster).
По умолчанию:
"k8s-zone"
- zones
Обязательный параметр
Глобальное ограничение набора зон, с которыми работает данный cloud-провайдер.