Die PodSpec (Pod-Spezifikation) ist das Herzstück eines jeden Pod in Kubernetes: Sie beschreibt im spec-Feld des Pod-Objekts den gewünschten Zustand — welche Container laufen sollen, mit welchen Images, Ressourcen, Volumes und Sicherheitseinstellungen. Kubernetes vergleicht diesen Soll-Zustand laufend mit der Realität und arbeitet darauf hin.
Pflichtfelder
Das einzige Pflichtfeld der PodSpec ist containers: eine Liste mit mindestens einem Eintrag, der Name und Image des Containers festlegt. Alles Weitere ist optional und erhält Standardwerte.
Wichtige optionale Felder
- initContainers – Hilfscontainer, die vor den Anwendungscontainern vollständig durchlaufen (etwa Datenbank-Migrationen oder Warteschleifen).
- restartPolicy – Always (Standard), OnFailure oder Never; bestimmt, wann Kubernetes Container im Pod neu startet.
- volumes – Speicher, den die Container einhängen können, etwa Persistent Volumes (dauerhaft) oder emptyDir (flüchtig).
- securityContext – Berechtigungen des Pods; Details im Artikel SecurityContext.
- runtimeClassName – wählt die RuntimeClass und damit die Container-Runtime für diesen Pod.
- nodeSelector / affinity / tolerations – steuern, auf welchen Knoten der Pod landet.
- serviceAccountName – Identität des Pods gegenüber der Kubernetes-API.
Container-Sicherheit lässt sich pro Pod weiter verschärfen: AppArmor-Profile begrenzen etwa, auf welche Dateien und Ressourcen die Prozesse zugreifen dürfen.
Pods sind flüchtig
Pods selbst sind kurzlebig: Wird ein Pod gelöscht oder fällt sein Knoten aus, ersetzt der zuständige Controller — etwa ein Deployment — ihn durch einen neuen Pod mit derselben PodSpec. Viele Felder der Spezifikation sind nach der Erstellung unveränderlich; Änderungen erfordern dann ein neues Pod-Objekt.
Wann das Kubelet ein Container-Image von einer Registry zieht, legt das Feld imagePullPolicy im PodSpec fest — Details im Artikel Kubernetes Image Pull Policy.
Verwandte Grundlagen: Kubernetes Namespace, kubectl-Befehle.