Pod Priority for TSB Components
In Kubernetes, a PriorityClass defines the scheduling priority of pods. When cluster resources are under pressure, the scheduler evicts lower-priority pods first to free capacity for higher-priority ones.
Assigning a PriorityClass to TSB components ensures that mesh infrastructure is protected from eviction ahead of application workloads. TSB lets you set a priorityClassName once across all operator-managed component deployments, or override it per component.
The PriorityClass must already exist in the cluster before it is referenced. TSB does not create PriorityClass objects. For built-in classes, Kubernetes provides system-cluster-critical and system-node-critical; for custom priorities, create a PriorityClass object first. See the Kubernetes documentation for details.
Operator pod
The TSB operator pod itself can be given a priority class via the operator.deployment.priorityClassName field in the Helm values file. This applies to both the management plane and control plane operators.
operator:
deployment:
priorityClassName: system-cluster-critical
TSB component pods
To assign a priority class to all TSB component pods managed by the operator, set spec.components.defaultKubeSpec.deployment.priorityClassName in the ManagementPlane or ControlPlane CR, or equivalently in the Helm values file under spec:
spec:
components:
defaultKubeSpec:
deployment:
priorityClassName: system-cluster-critical
This applies the specified PriorityClass to every operator-managed component deployment for the management plane or control plane.
Per-component override
To assign a different PriorityClass to a specific component, set kubeSpec.deployment.priorityClassName on that component. This takes precedence over defaultKubeSpec:
spec:
components:
defaultKubeSpec:
deployment:
priorityClassName: system-cluster-critical
xcp:
kubeSpec:
deployment:
priorityClassName: system-node-critical
The same pattern applies to management plane components. For example, to give the API server a higher priority than other management plane components:
spec:
components:
defaultKubeSpec:
deployment:
priorityClassName: system-cluster-critical
apiServer:
kubeSpec:
deployment:
priorityClassName: system-node-critical
Coverage
defaultKubeSpec.deployment.priorityClassName applies to all TSB component deployments managed by the operator. cert-manager pods also honour the global priority class. The following embedded external charts are not covered:
- ECK (Elasticsearch / embedded telemetry store)
- kubegres (embedded PostgreSQL datastore)
If you use embedded Elasticsearch or Postgres and need priority classes on those pods, configure them using the relevant chart values independently.