StatefulSet
The vCluster control plane typically runs as a StatefulSet
to ensure data persists across restarts. This setup uses a PersistentVolume
for state storage. However, if you set statefulSet.persistence.volumeClaim.enabled: false
or omit the statefulSet.persistence.volumeClaimTemplates
configuration, vCluster defaults to deploying the control plane as a Deployment
, which does not retain state across restarts.
Configure high availability​
Use the highAvailability
settings to run multiple replicas of the vCluster control plane. One pod acts as the leader, while the others remain on standby:
-
If the leader pod crashes, becomes unhealthy, or restarts, another pod automatically takes over leadership.
-
The number of available replicas determines how quickly a new leader can be elected.
-
You can fine-tune the leader election process using the following settings:
leaseDuration
: Maximum time a leader can hold leadership without renewal.renewDeadline
: Time a pod waits to renew its leadership before it gives up.retryPeriod
: Interval between retries when attempting to acquire or renew leadership.
Schedule virtual cluster pods​
You can configure how and where virtual cluster pods are scheduled within the Kubernetes cluster. Configure the scheduling field with the following options to control pod placement in the cluster:
-
nodeSelector
Match specific node labels to guide the scheduler toward preferred nodes. Examples include:- Targeting nodes in a specific region
- Selecting nodes with a specific architecture or machine class
-
affinity
Set rules to control how pods are scheduled in relation to other pods.- Use anti-affinity (repel the pod) to keep virtual cluster pods on separate nodes. A common technique is to make virtual cluster pods repel each other so that they are not scheduled on the same nodes.This increases resiliency if a node is scaled down or replaced.
- Use affinity (attract the pod) to group related pods together and reduce network latency for critical services.
-
tolerations
Allow pods to run on nodes with specific taints. Use this to schedule virtual cluster pods on nodes that would otherwise reject them. A common pattern is to taint nodes for non-virtual-cluster workloads and configure virtual cluster pods to tolerate the taint. This keeps virtual clusters separate from critical workloads. See Taints and Tolerations for more information. -
priorityClassName
Set the pod’s priority to control scheduling order and preemption. See the Pod Priority and Preemption documentation for details. -
podManagementPolicy
Control how StatefulSets create and delete pods. See Pod Management Policies for details. -
topologySpreadConstraints
Spread pods evenly across zones, nodes, or other topology domains. See Pod Topology Spread Constraints and the comparison withpodAffinity
andpodAntiAffinity
for more information.
Reuse an existing PersistenceVolumeClaim​
You can pre-provision a PersistenceVolumeClaim
, and then configure vCluster to use it.
To do this, set the existing claim name in the chart values controlPlane.statefulSet.persistence.dataVolume
under persistenceVolumeClaim.claimName
:
controlPlane:
statefulSet:
persistence:
dataVolume:
- name: data
persistentVolumeClaim:
claimName: my-existing-pvc
vCluster image options​
There are currently 3 vCluster image builds you can use in statefulSet.image.repository
:
loft-sh/vcluster-pro
: The default image for the Helm chart. This image works for all use cases.loft-sh/vcluster-oss
: An open source build of vClusterloft-sh/vcluster
: Deprecated. Useloft-sh/vcluster-oss
instead.
Config reference​
statefulSet
required object pro​
StatefulSet defines options for vCluster statefulSet deployed by Helm.
statefulSet
required object pro​highAvailability
required object pro​
HighAvailability holds options related to high availability.
highAvailability
required object pro​replicas
required integer 1 pro​
Replicas is the amount of replicas to use for the statefulSet.
replicas
required integer 1 pro​leaseDuration
required integer 60 pro​
LeaseDuration is the time to lease for the leader.
leaseDuration
required integer 60 pro​renewDeadline
required integer 40 pro​
RenewDeadline is the deadline to renew a lease for the leader.
renewDeadline
required integer 40 pro​retryPeriod
required integer 15 pro​
RetryPeriod is the time until a replica will retry to get a lease.
retryPeriod
required integer 15 pro​resources
required object pro​
Resources are the resource requests and limits for the statefulSet container.
resources
required object pro​scheduling
required object pro​
Scheduling holds options related to scheduling.
scheduling
required object pro​nodeSelector
required object {} pro​
NodeSelector is the node selector to apply to the pod.
nodeSelector
required object {} pro​affinity
required object {} pro​
Affinity is the affinity to apply to the pod.
affinity
required object {} pro​tolerations
required object[] [] pro​
Tolerations are the tolerations to apply to the pod.
tolerations
required object[] [] pro​priorityClassName
required string pro​
PriorityClassName is the priority class name for the the pod.
priorityClassName
required string pro​podManagementPolicy
required string Parallel pro​
PodManagementPolicy is the statefulSet pod management policy.
podManagementPolicy
required string Parallel pro​topologySpreadConstraints
required object[] [] pro​
TopologySpreadConstraints are the topology spread constraints for the pod.
topologySpreadConstraints
required object[] [] pro​security
required object pro​
Security defines pod or container security context.
security
required object pro​podSecurityContext
required object {} pro​
PodSecurityContext specifies security context options on the pod level.
podSecurityContext
required object {} pro​containerSecurityContext
required object map[allowPrivilegeEscalation:false runAsGroup:0 runAsUser:0] pro​
ContainerSecurityContext specifies security context options on the container level.
containerSecurityContext
required object map[allowPrivilegeEscalation:false runAsGroup:0 runAsUser:0] pro​probes
required object pro​
Probes enables or disables the main container probes.
probes
required object pro​