Eviction-Signale sind die Ressourcen-Messwerte eines Kubernetes-Knotens, die das Kubelet überwacht, um bei Engpässen Pods proaktiv zu beenden (Eviction). Ein Signal verletzt seinen Schwellwert, wenn die verfügbare Ressource darunter fällt – zum Beispiel weniger als 100 MiB freier Arbeitsspeicher.

Die wichtigsten Signale

  • memory.available – verfügbarer Arbeitsspeicher des Knotens (Linux)
  • nodefs.available / nodefs.inodesFree – Speicher und Inodes des Knoten-Dateisystems
  • imagefs.available / imagefs.inodesFree – Speicher für Container-Images (falls getrennt gemountet)
  • containerfs.available / containerfs.inodesFree – falls als eigene Partition vorhanden
  • pid.available – freie Prozess-IDs (Linux)

Die Messwerte stammen aus den cgroup-Statistiken, die der Knoten über cAdvisor erfasst.

Default-Schwellwerte und Node Conditions

Ohne eigene Konfiguration gelten als harte Schwellwerte: memory.available < 100Mi, nodefs.available < 10%, imagefs.available < 15% und nodefs.inodesFree < 5%. Wird ein Signal dauerhaft verletzt, setzt das Kubelet eine Node Condition wie MemoryPressure, DiskPressure oder PIDPressure – der Kubernetes Node nimmt dann keine neuen Pods mehr auf.

Hard und Soft

Jedes Signal kann zwei Schwellen haben: hart (Eviction sofort) und weich (erst nach einer Gnadenfrist). Welche Regeln dabei greifen, beschreibt die Kubernetes Eviction-Policy. Die eigentliche Beendigung übernimmt die Eviction-API; bei hartem Überschreiten beendet das Kubelet auch ohne API-Aufruf.

Verwandte Grundlagen: eviction-max-pod-grace-period und Kubernetes Pod-QoS-Klassen.