Kubelet Configuration

The kubelet configuration is defined in the Shoot manifest under spec.kubernetes.kubelet and applies to all worker nodes in the cluster. Any change to this section triggers a rolling node restart.

spec:
  kubernetes:
    kubelet:
      # example configuration
      kubeReserved:
        cpu: 80m
        memory: 1Gi
        pid: 20k
      imageGCHighThresholdPercent: 50
      imageGCLowThresholdPercent: 40
      serializeImagePulls: false
      cpuManagerPolicy: none

Resource Reservations

FieldTypeDescription
kubeReserved.cpustringCPU reserved for Kubernetes system components (e.g. 80m)
kubeReserved.memorystringMemory reserved for Kubernetes system components (e.g. 1Gi)
kubeReserved.pidstringProcess IDs reserved for Kubernetes system components (e.g. 20k)
systemReserved.cpustringCPU reserved for the operating system
systemReserved.memorystringMemory reserved for the operating system
systemReserved.pidstringProcess IDs reserved for the operating system

Resource reservations reduce the capacity available to workloads on a node. The effective allocatable memory is: Node RAM − kubeReserved − systemReserved − evictionThreshold.

Eviction

FieldTypeDescription
evictionHardmapThresholds below which pods are evicted immediately (e.g. memory.available: "100Mi")
evictionSoftmapThresholds below which a grace period applies before eviction
evictionSoftGracePeriodmapGrace period per eviction signal (e.g. memory.available: "1m30s")
evictionMinimumReclaimmapMinimum amount to reclaim after an eviction event
evictionPressureTransitionPerioddurationTime the node must wait before transitioning out of an eviction pressure condition

Image Garbage Collection

FieldTypeDefaultDescription
imageGCHighThresholdPercentinteger50Disk usage percentage at which image garbage collection is triggered
imageGCLowThresholdPercentinteger40Target disk usage after image garbage collection

Image Pulls

FieldTypeDefaultDescription
serializeImagePullsbooleantruePull images sequentially. Set to false to parallelize pulls — recommended for nodes running many pods

CPU Management

FieldTypeDefaultDescription
cpuManagerPolicystringnoneCPU manager policy: none (default CFS scheduling) or static (exclusive CPUs for pods with Guaranteed QoS and integer CPU requests). Validated since PSKE 1.35.

Log Rotation

FieldTypeDefaultDescription
containerLogMaxSizestring100MiMaximum size of a container log file before rotation
containerLogMaxFilesinteger5Maximum number of rotated log files per container

Miscellaneous

FieldTypeDefaultDescription
failSwapOnbooleantrueKubelet will not start if swap is enabled on the node
podPidsLimitintegerMaximum number of PIDs per pod
protectKernelDefaultsbooleanfalseKubelet checks whether kernel tuning parameters match expected values
streamingConnectionIdleTimeoutduration4hTimeout for idle streaming connections (e.g. kubectl exec)

Notes

  • Changes to spec.kubernetes.kubelet always trigger a rolling node restart since PSKE 1.34.
  • cpuManagerPolicy: static requires affected pods to have Guaranteed QoS with integer CPU requests — otherwise they will not be scheduled onto exclusive CPUs.
  • Setting kubeReserved values too low can cause system components to be killed by the OOM killer.