If the cluster control plane is hosted on a virtual machines or bare-metal servers, the cloud provider uses the settings from the
cloud-provider-vsphere
module in the Deckhouse configuration. Otherwise, if the cluster control plane is hosted in a cloud, the cloud provider uses the VsphereClusterConfiguration structure for configuration.Additional info about Vsphere Cloud Load Balancers.
VsphereClusterConfiguration
Version: deckhouse.io/v1
Describes the configuration of a cloud cluster in vSphere.
Used by the cloud provider if a cluster’s control plane is hosted in the cloud.
Run the following command to change the configuration in a running cluster:
kubectl -n d8-system exec -ti svc/deckhouse-leader -c deckhouse -- deckhouse-controller edit provider-cluster-configuration
After updating the node parameters, you need to run the dhctl converge command to apply the changes.
Example:
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
- string
Subnet for master nodes in the internal network.
Addresses are allocated starting with the tenth address. E.g., if you have the
192.168.199.0/24
subnet, addresses will be allocated starting with192.168.199.10
.The
internalNetworkCIDR
is used ifadditionalNetworks
are defined inmasterInstanceClass
.Pattern:
^(([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]))$
- array of strings
Names of networks (just the name and not the full path) connected to
VirtualMachines
and used byvsphere-cloud-controller-manager
to insert InternalIP into the.status.addresses
field in the Node API object.Example:
internalNetworkNames: - KUBE-3 - devops-internal
- string
Required value
The way resources are located in the cloud.
Read more about possible provider layouts.
- object
Required value
The definition of the master’s NodeGroup.
For the changes to take effect, run
dhctl converge
after modifying the parameters of themasterNodeGroup
section.- array of objects
A list of static IP addresses (with a CIDR prefix) sequentially allocated to nodes in the
mainNetwork
.By default, the DHCP client is enabled.
Example:
mainNetworkIPAddresses: - address: 10.1.14.20/24 gateway: 10.1.14.254 nameservers: addresses: - 8.8.8.8 - 8.8.4.4
- string
Required value
The IP address of the default gateway.
It must be located in the subnet specified in the
address
parameterPattern:
^(([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])$
- array of strings
A list of DNS servers.
Example:
addresses: - 8.8.8.8 - 8.8.4.4
- integer
The relative amount of CPU Shares for VMs to be created.
- integer
The relative amount of Memory Shares for VMs to be created.
Allowed values:
0 <= X <= 100
- boolean
Whether to enable or disable nested hardware virtualization.
- array of strings
A limited set of zones in which master nodes can be created.
The order in which zones are specified does not influence the sequence of node creation. Nodes are assigned to zones in alphabetical order: the first node is placed in the alphabetically first zone, the second node in the second zone, and so forth. If there are more nodes than zones, the assignment process restarts from the beginning of the zone list after placing a node in the last alphabetical zone.
- array of objects
An array of additional NodeGroups for creating static nodes (e.g., for dedicated front nodes or gateways).
- array of objects
A list of static IP addresses (with a CIDR prefix) sequentially allocated to nodes in the
mainNetwork
.By default, the DHCP client is enabled.
Example:
mainNetworkIPAddresses: - address: 10.1.14.20/24 gateway: 10.1.14.254 nameservers: addresses: - 8.8.8.8 - 8.8.4.4
- array of strings
A list of DNS servers.
Example:
addresses: - 8.8.8.8 - 8.8.4.4
- integer
The relative amount of CPU Shares for VMs to be created.
- integer
The relative amount of Memory Shares for VMs to be created.
Allowed values:
0 <= X <= 100
- boolean
Whether to enable or disable nested hardware virtualization.
- object
The same as the
metadata.annotations
standard field.Example:
annotations: ai.fleet.com/discombobulate: 'true'
- object
A list of labels to attach to cluster resources.
The same as the
metadata.labels
standard field.Example:
labels: environment: production app: warp-drive-ai
- array of objects
The same as the
.spec.taints
field of the Node object.Available fields:
effect
,key
, andvalues
.Example:
taints: - effect: NoExecute key: ship-class value: frigate
- array
Additional section to define Load Balancer Classes (set annotation
loadbalancer.vmware.io/class: <CLASS NAME>
to SVC to use the class).Examples:
loadBalancerClass: []
loadBalancerClass: name: LBC1 ipPoolName: pool2
loadBalancerClass: name: LBC1 ipPoolName: pool2 tcpAppProfileName: profile2 udpAppProfileName: profile3