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
| Feld | Typ | Beschreibung |
|---|
kubeReserved.cpu | string | CPU, die für Kubernetes-Systemkomponenten reserviert wird (z.B. 80m) |
kubeReserved.memory | string | Arbeitsspeicher für Kubernetes-Systemkomponenten (z.B. 1Gi) |
kubeReserved.pid | string | Prozess-IDs für Kubernetes-Systemkomponenten (z.B. 20k) |
systemReserved.cpu | string | Für das Betriebssystem reservierte VCPUs |
systemReserved.memory | string | Für das Betriebssystem reservierter Arbeitsspeicher |
systemReserved.pid | string | Fü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
| Feld | Typ | Beschreibung |
|---|
evictionHard | map | Schwellenwerte, bei deren Unterschreitung Pods sofort evicted werden (z.B. memory.available: "100Mi") |
evictionSoft | map | Schwellenwerte, bei deren Unterschreitung eine Grace Period gilt |
evictionSoftGracePeriod | map | Grace Period pro Eviction-Signal (z.B. memory.available: "1m30s") |
evictionMinimumReclaim | map | Mindestmenge, die nach einer Eviction freigegeben werden soll |
evictionPressureTransitionPeriod | duration | Wartezeit, bevor die Node einen Eviction-Pressure-Zustand verlässt |
Image Garbage Collection
| Feld | Typ | Standard | Beschreibung |
|---|
imageGCHighThresholdPercent | integer | 50 | Disk-Auslastung in Prozent, ab der Image-GC ausgelöst wird |
imageGCLowThresholdPercent | integer | 40 | Ziel-Disk-Auslastung nach Image-GC |
Image Pulls
| Feld | Typ | Standard | Beschreibung |
|---|
serializeImagePulls | boolean | true | Image-Pulls sequenziell ausführen. Bei false werden Pulls parallelisiert — empfohlen für Nodes mit vielen Pods |
CPU Management
| Feld | Typ | Standard | Beschreibung |
|---|
cpuManagerPolicy | string | none | CPU-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
| Feld | Typ | Standard | Beschreibung |
|---|
containerLogMaxSize | string | 100Mi | Maximale Größe einer Container-Log-Datei vor der Rotation |
containerLogMaxFiles | integer | 5 | Maximale Anzahl rotierter Log-Dateien pro Container |
Sonstiges
| Feld | Typ | Standard | Beschreibung |
|---|
failSwapOn | boolean | true | Kubelet startet nicht, wenn Swap auf der Node aktiv ist |
podPidsLimit | integer | — | Maximale Anzahl PIDs pro Pod |
protectKernelDefaults | boolean | false | Kubelet prüft, ob Kernel-Tuning-Parameter mit den erwarteten Werten übereinstimmen |
streamingConnectionIdleTimeout | duration | 4h | Timeout 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.