Ein emptyDir ist in Kubernetes ein Volume-Typ für flüchtige Daten: Kubernetes legt beim Start eines Pods automatisch ein leeres Verzeichnis an, das alle Container des Pods einhängen können. Der Name bedeutet übersetzt „leeres Verzeichnis“. Sobald der Pod gelöscht oder auf einen anderen Knoten verschoben wird, verschwinden auch die Daten.
Lebenszyklus und Eigenschaften
- An Pod-Lebenszyklus gebunden: Das emptyDir entsteht mit dem Pod und wird mit ihm entfernt. Es überlebt dagegen Container-Neustarts: Stürzt ein Container ab und startet neu, bleiben die Daten erhalten.
- Gemeinsame Nutzung: Mehrere Container eines Pods können dasselbe emptyDir an verschiedenen Pfaden einhängen – typisch für das Sidecar-Muster, bei dem ein Helfer-Container Daten des Hauptcontainers liest oder schreibt.
- Standardmäßig auf der Platte: Ohne weitere Angabe liegt das Verzeichnis auf dem lokalen Datenträger des Knotens.
Typische Einsätze
- Zwischenspeicher (Scratch-Space), etwa für eine sortierende Verarbeitung großer Datenmengen.
- Checkpoint-Dateien einer langen Berechnung, damit nach einem Absturz der letzte Stand wiederherstellbar ist.
- Gemeinsamer Austauschordner zwischen Anwendungs-Container und Sidecar (etwa Log-Weiterleitung).
Größe begrenzen und Arbeitsspeicher nutzen
volumes:
- name: cache
emptyDir:
sizeLimit: 1Gi
medium: Memory
Mit sizeLimit lässt sich die Größe deckeln – überschreitet der Pod das Limit, wird das Volume ausgelastet und der Pod kann beendet werden. Mit medium: Memory legt Kubernetes das emptyDir als tmpfs im Arbeitsspeicher des Knotens an; das ist sehr schnell, verbraucht aber RAM und zählt gegen die Speicherlimits des Containers.
Wer Daten über den Pod hinaus behalten will, nutzt einen hostPath-Mount oder fordert über einen PersistentVolumeClaim dauerhaften Speicher an – das eigentliche Volume beschreibt der Artikel PersistentVolume.