Kubelet-Konfiguration

Die Kubelet-Konfiguration wird im Shoot-Manifest unter spec.kubernetes.kubelet definiert und gilt für alle Worker Nodes des Clusters. Änderungen an diesem Abschnitt lösen einen rollenden Node-Neustart aus.

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

Ressourcenreservierung

FeldTypBeschreibung
kubeReserved.cpustringCPU, die für Kubernetes-Systemkomponenten reserviert wird (z.B. 80m)
kubeReserved.memorystringArbeitsspeicher für Kubernetes-Systemkomponenten (z.B. 1Gi)
kubeReserved.pidstringProzess-IDs für Kubernetes-Systemkomponenten (z.B. 20k)
systemReserved.cpustringFür das Betriebssystem reservierte VCPUs
systemReserved.memorystringFür das Betriebssystem reservierter Arbeitsspeicher
systemReserved.pidstringFür das Betriebssystem reservierte Prozess-IDs

Ressourcenreservierungen reduzieren die für Workloads verfügbare Kapazität auf einer Node. Der effektiv verfügbare Speicher berechnet sich aus: Node-RAM − kubeReserved − systemReserved − evictionThreshold.

Eviction

FeldTypBeschreibung
evictionHardmapSchwellenwerte, bei deren Unterschreitung Pods sofort evicted werden (z.B. memory.available: "100Mi")
evictionSoftmapSchwellenwerte, bei deren Unterschreitung eine Grace Period gilt
evictionSoftGracePeriodmapGrace Period pro Eviction-Signal (z.B. memory.available: "1m30s")
evictionMinimumReclaimmapMindestmenge, die nach einer Eviction freigegeben werden soll
evictionPressureTransitionPerioddurationWartezeit, bevor die Node einen Eviction-Pressure-Zustand verlässt

Image Garbage Collection

FeldTypStandardBeschreibung
imageGCHighThresholdPercentinteger50Disk-Auslastung in Prozent, ab der Image-GC ausgelöst wird
imageGCLowThresholdPercentinteger40Ziel-Disk-Auslastung nach Image-GC

Image Pulls

FeldTypStandardBeschreibung
serializeImagePullsbooleantrueImage-Pulls sequenziell ausführen. Bei false werden Pulls parallelisiert — empfohlen für Nodes mit vielen Pods

CPU Management

FeldTypStandardBeschreibung
cpuManagerPolicystringnoneCPU-Manager-Richtlinie: none (Standard-CFS-Scheduling) oder static (exklusive CPUs für Pods mit Guaranteed QoS und ganzzahligen CPU-Requests). Seit PSKE 1.35 wird der Wert validiert.

Log-Rotation

FeldTypStandardBeschreibung
containerLogMaxSizestring100MiMaximale Größe einer Container-Log-Datei vor der Rotation
containerLogMaxFilesinteger5Maximale Anzahl rotierter Log-Dateien pro Container

Sonstiges

FeldTypStandardBeschreibung
failSwapOnbooleantrueKubelet startet nicht, wenn Swap auf der Node aktiv ist
podPidsLimitintegerMaximale Anzahl PIDs pro Pod
protectKernelDefaultsbooleanfalseKubelet prüft, ob Kernel-Tuning-Parameter mit den erwarteten Werten übereinstimmen
streamingConnectionIdleTimeoutduration4hTimeout für inaktive Streaming-Verbindungen (z.B. kubectl exec)

Hinweise

  • Änderungen unter spec.kubernetes.kubelet lösen seit PSKE 1.34 immer einen rollenden Node-Neustart aus.
  • cpuManagerPolicy: static erfordert, dass betroffene Pods Guaranteed QoS haben und ganzzahlige CPU-Requests setzen — andernfalls werden sie nicht auf exklusive CPUs geschedult.
  • Zu niedrige kubeReserved-Werte können dazu führen, dass Systemkomponenten durch den OOM-Killer beendet werden.
Zuletzt geändert 29.04.2026: Correntcions (d9f3dab)