50 Pods in Podman

Pods sind in Podman kein Zusatzfeature, sondern ein Kernkonzept – ein strukturelles Element, das direkt aus dem Kubernetes-Modell übernommen wurde. Während Docker traditionell ausschließlich Container verwaltet, erlaubt Podman, mehrere Container als kooperierende Einheit zu betreiben. Ein Pod ist dabei eine Prozess-, Netzwerk- und Port-Isolationseinheit, in der mehrere Container gemeinsame Infrastruktur teilen, aber unterschiedliche Aufgaben erfüllen. Dieses Modell eignet sich hervorragend für Architekturen, in denen Dienste eng gekoppelt sind, aber dennoch voneinander getrennte Laufzeitumgebungen benötigen.

50.1 Der Pod als Isolationsdomäne

Ein Pod ist eine gemeinsame Ausführungsumgebung. Technisch bedeutet das:

Container in einem Pod kommunizieren, als befänden sie sich in einem gemeinsamen Prozessraum. Das ist kein Convenience-Feature, sondern ein bewusstes Architekturpattern.

Diese Architektur erlaubt es, mehrere Container zusammenzufassen, ohne ihre Prozesse miteinander zu vermischen.

50.2 Warum Pods? Ein struktureller Vorteil

Pods adressieren eine Reihe realer Probleme:

Der Pod ist damit ein logisches Äquivalent eines „Multi-Prozess-Services“.

50.3 Der Infrastrukturcontainer als Fundament

Podman implementiert Pods über einen Infrastrukturcontainer. Das ist ein kleiner Hilfscontainer, der:

Er selbst tut nichts – aber er hält das Pod-Ökosystem stabil. Wird er beendet, endet der gesamte Pod.

Ein häufiges Missverständnis ist die Annahme, ein Pod sei ein virtueller Host. Tatsächlich ist der Infrastrukturcontainer das, was dem am nächsten kommt.

50.4 Netzwerkmodell innerhalb eines Pods

Container innerhalb eines Pods teilen sich ein Netzwerkinterface. Das bedeutet:

Beispiel:

Die Kommunikation ist extrem schnell, da sie reine Namespace-Kommunikation ist.

50.5 Sidecar-Muster: ein naheliegender Pod-Einsatz

Pods eignen sich besonders für Sidecar Patterns – Architekturen, bei denen ein Hauptprozess von ergänzenden Prozessen unterstützt wird:

Da alle Container denselben Netzwerkstack nutzen, entfällt das übliche Cross-Container-Netzwerkgerangel.

Beispiel-Pod:

podman pod create --name webapp -p 8080:80
podman run --pod webapp --name nginx nginx
podman run --pod webapp --name app myapp

Nginx erreicht die App über localhost. Kein Routing, kein DNS, kein Portmapping nötig.

50.6 Gemeinsame Namespaces: wann sie nützlich sind

Pods können optional auch PID-Namespaces teilen:

In produktionsnahen Architekturen ist das ein Muster, das sich bewährt hat – man erhält Transparenz, ohne einen zentralen Supervisor zu benötigen.

50.7 Storage in Pods

Pods teilen sich das Netzwerk – nicht jedoch automatisch Speicher. Jeder Pod-Container besitzt weiter seine eigenen Layers. Für gemeinsame Daten müssen Volumes genutzt werden:

podman run --pod webapp -v config:/etc/config app
podman run --pod webapp -v config:/etc/config sidecar

Diese Trennung verhindert unbeabsichtigte Datenkorruption zwischen Containern.

50.8 Lebenszyklus: der Pod ist der Taktgeber

Podman synchronisiert Container innerhalb eines Pods:

Dies macht Pods ideal für integrierte Dienste.

Der Infrastrukturcontainer bestimmt den Lebenszyklus. Schlägt er fehl, endet der gesamte Pod. Das ist ein bewusstes Design: der Pod ist eine atomare Ausführungseinheit.

50.9 Pods in Rootless-Umgebungen

Rootless-Pods funktionieren fast identisch wie Root-Pods – mit Einschränkungen:

Für Entwicklungsumgebungen oder Multi-User-Systeme sind Pods unter Rootless jedoch ein erheblicher Vorteil:

50.10 Pod-Troubleshooting: typische Fehler

50.10.1 Portkollisionen im Pod

Da alle Container denselben Netzwerknamespace nutzen, können sie nicht denselben Port gleichzeitig öffnen.

Lösung: Ports koordinieren, Sidecars nutzen.

50.10.2 Infrastrukturcontainer beendet

Wenn der Pod „verschwunden“ ist, liegt es meistens am Infrastrukturcontainer:

podman ps -a | grep infra

Reparatur: Pod neu starten oder Infrastrukturcontainer neu erzeugen.

50.10.3 Container sieht den anderen nicht

Ursache: Container nicht mit --pod gestartet. Pods sind kein nachträgliches Netzwerk-Feature – die Container starten im Pod, nicht danach.

50.10.4 Volumekonflikte

Volume-Collisions entstehen, wenn mehrere Container innerhalb eines Pods nicht abgestimmte Pfade erwarten.

50.11 Pods als Mini-Kubernetes

Das Pod-Konzept in Podman ist eine verkleinerte, lokal nutzbare Form des Kubernetes-Pods:

Damit bildet Podman eine Art „Kubernetes light“, das ohne Cluster, ohne Control Plane, aber mit denselben Plattformmustern arbeitet. Genau das macht Pods zu einem idealen Werkzeug für Architekten und Entwickler, die lokal oder in CI mit echten Kubernetes-Mustern arbeiten wollen – ohne Kubernetes.