Scaling the control plane
Intro
As the load on the control plane depends on the size of the cluster, it might be necessary to scale up the control plane during runtime.
Defaults
All control planes, managed by Kubermatic Kubernetes Platform (KKP), have the following defaults:
apiserver:
replicas: 1
resources:
limits:
cpu: 500m
memory: 1Gi
requests:
cpu: 100m
memory: 256Mi
controllerManager:
replicas: 1
resources:
limits:
cpu: 250m
memory: 512Mi
requests:
cpu: 100m
memory: 100Mi
scheduler:
replicas: 1
resources:
limits:
cpu: 100m
memory: 128Mi
requests:
cpu: 20m
memory: 64Mi
etcd:
# replicas cannot be configured - the etcd always runs with 3 members
resources:
limits:
cpu: 100m
memory: 1Gi
requests:
cpu: 50m
memory: 256Mi
Setting Custom Overrides
Custom settings can be applid by modifying the clusters cluster.spec.componentsOverride
property:
apiVersion: kubermatic.k8s.io/v1
kind: Cluster
metadata:
name: rwhxp9j5j
spec:
componentsOverride:
apiserver:
replicas: 3
resources:
limits:
cpu: 2
memory: 2Gi
requests:
cpu: 500m
memory: 1Gi
controllerManager: {}
etcd: {}
scheduler: {}
The above override will override the default settings for the API Server, but won’t affect the other components.
To note here is that, specifying the resources
override of a component will override all default resources
. For example:
apiVersion: kubermatic.k8s.io/v1
kind: Cluster
metadata:
name: rwhxp9j5j
spec:
componentsOverride:
apiserver:
replicas: 3
resources: {}
controllerManager: {}
etcd: {}
scheduler: {}
The above setting cluster.spec.componentsOverride.apiserver.resources: {}
will lead to no resource limits/requests set on the API Server.
It is not possible therefore to only override a single resource setting.