Training Module
Kubernetes Anwendungsdesign — Multi-Container-Patterns, Jobs & Security Context
In diesem Modul (90 Minuten Input, 30 Minuten Hands-on) wechselt ihr die
Perspektive vom lauffähigen Manifest zum durchdachten Anwendungsdesign.
Los geht es mit den drei etablierten Multi-Container-Pod-Patterns
Sidecar, Ambassador und
Adapter – und, mindestens genauso wichtig, mit der
Abgrenzung, wann ein zweiter Container tatsächlich in denselben Pod
gehört und wann er stattdessen ein eigenes Deployment mit eigenem
Service braucht. Danach geht es um Pod-Placement und Batch-Workloads:
nodeSelector erzwingt Hardware-Constraints wie ein
GPU-Node, Job mit completions,
parallelism und backoffLimit ersetzt das
Deployment für einmalige Durchläufe bis zum Erfolg, und
CronJob mit schedule und
concurrencyPolicy kapselt wiederkehrende Läufe, ohne dass
sich überlappende Jobs gegenseitig stören. Der dritte Block widmet sich
der Runtime-Absicherung: securityContext auf Pod- und
Container-Ebene mit runAsNonRoot,
readOnlyRootFilesystem und dem Muster
capabilities.drop: [ALL] plus gezieltem
add nur der tatsächlich benötigten Capability, dazu
ServiceAccount und automountServiceAccountToken: false als
Default für Anwendungen, die gar nicht mit der Kubernetes-API sprechen.
Im Hands-on wendet ihr ein Sidecar-Manifest mit geteiltem
emptyDir an, verschärft es um einen restriktiven
securityContext und beobachtet live, wie ein
schreibender Prozess ohne passendes Volume daran scheitert – und
schließt mit einem CronJob, dessen
concurrencyPolicy: Forbid ihr live gegen sich
überlappende Läufe verifiziert. Voraussetzung ist das Modul
“Kubernetes Workloads & Konfiguration” – die Session läuft weiterhin
vollständig lokal über Minikube, ohne Cloud-Account und ohne
Kostenwirkung.
Format
90 Minuten Input plus 30 Minuten Hands-on, live (remote oder vor Ort)
Teilnehmende
Entwickler:innen, die Multi-Container-Patterns, Batch-Workloads und Security Context aus Anwendungssicht durchdenken wollen
Voraussetzungen
Abgeschlossenes Modul “Kubernetes Workloads & Konfiguration” oder gleichwertige Vorkenntnisse, lauffähige lokale Docker-Umgebung für Minikube
Warum dieses Training für deine Organisation wirkt
Ein Pod ist keine Modelliereinheit für alles
Sidecar, Ambassador und Adapter zeigen, wann ein Hilfscontainer untrennbar zum Hauptcontainer gehört – und die Abgrenzung danach zeigt, wann genau das nicht mehr gilt und ein eigenes Deployment die richtige Antwort ist.
Batch-Workloads ohne Deployment-Krücke
Ein Migrations- oder Cleanup-Job, der als Deployment
nachgebaut wird, läuft nach Erfolg einfach weiter oder wird
beim Absturz endlos neu gestartet. Job und
CronJob modellieren “einmalig bis zum Erfolg” und
“wiederkehrend ohne Überlappung” als das, was sie sind.
Geringste Rechte als Standard, nicht als Ausnahme
runAsNonRoot, readOnlyRootFilesystem und
capabilities.drop: [ALL] sind kein
Security-Nachtrag, sondern gehören ins erste Manifest – live
demonstriert am Fall, in dem ein zu restriktiver Container
genau deshalb scheitert, weil ihm ein Schreibpfad fehlt.
Was Teilnehmende mitnehmen
- Sidecar, Ambassador und Adapter als Multi-Container-Pod-Patterns unterscheiden und benennen, wann ein Hilfscontainer dauerhaft neben dem Hauptcontainer läuft.
- Begründen, wann ein zweiter Container in denselben Pod gehört (geteilter Lebenszyklus, gemeinsames Volume/Netzwerk-Namespace) und wann er stattdessen ein eigenes Deployment mit eigenem Service braucht.
- Mit
nodeSelectorHardware-Constraints wie GPU-Nodes im Pod-Spec erzwingen. - Einen
Jobmitcompletions,parallelismundbackoffLimitfür einmalige Batch-Workloads statt eines Deployments einsetzen. - Einen
CronJobmitscheduleundconcurrencyPolicyfür wiederkehrende Läufe konfigurieren und nicht-überlappende Ausführung sicherstellen. securityContextauf Pod- und Container-Ebene setzen:runAsNonRoot,readOnlyRootFilesystem,capabilities.drop: [ALL]plus gezieltesadd.- Einen dedizierten
ServiceAccountreferenzieren undautomountServiceAccountToken: falsesetzen, sobald die eigene Anwendung nicht mit der Kubernetes-API spricht.
Für wen dieses Modul ideal ist
- • Entwickler:innen mit abgeschlossenem Modul “Kubernetes Workloads & Konfiguration” oder gleichwertigen Vorkenntnissen
- • Alle, die demnächst einen Logging-, Proxy- oder Normalisierungs-Hilfsprozess neben ihrer Anwendung einplanen und dafür die richtige Pod-Grenze ziehen wollen
- • Teams, die einen Migrations- oder Cleanup-Batch-Job bislang als Dauer-Deployment notdürftig nachgebaut haben
Rahmendaten
- • Dauer: 90 Minuten Input live (remote oder vor Ort), plus 30 Minuten Hands-on
- • Format: Input, Live-Demo, abschließendes Hands-on zu Sidecar, Security Context und CronJob
- • Voraussetzungen: abgeschlossenes Modul “Kubernetes Workloads & Konfiguration”, lauffähige lokale Docker-Umgebung, keine Cloud-Kostenwirkung
Modulaufbau & Agenda
Multi-Container-Pod-Patterns (25 min): Sidecar, Ambassador und Adapter im Vergleich, dazu die Abgrenzung, wann ein Hilfscontainer in denselben Pod gehört und wann er ein eigenes Deployment braucht.
Pod-Placement & Batch-Workloads (25 min):
nodeSelectorfür Hardware-Constraints,Jobmitcompletions/parallelism/backoffLimit,CronJobmitschedule/concurrencyPolicy.Runtime-Absicherung (25 min):
securityContextmitrunAsNonRoot/readOnlyRootFilesystem/capabilities, ServiceAccount undautomountServiceAccountToken: false.Puffer/Q&A zum Input-Teil (15 min): offene Fragen aus den ersten drei Blöcken, bevor es ins Hands-on geht.
Hands-on (30 min): Sidecar-Manifest mit geteiltem
emptyDiranwenden und die Logs des Log-Shippers prüfen, das Manifest um einen restriktivensecurityContextergänzen und den scheiternden Schreibzugriff beobachten, einenCronJobmitconcurrencyPolicy: Forbidanwenden und nicht-überlappende Läufe live verifizieren.
Dieses Modul setzt das Aufbaumodul Kubernetes Workloads & Konfiguration — die Objekte für den Alltag voraus. Probes, Rolling Update und der Unterschied zwischen ConfigMap-Volume und ConfigMap-Environment-Variable werden dort erklärt und hier nicht erneut eingeführt.
Wer stattdessen die Betreiber-Perspektive einnehmen will –
Namespace/ResourceQuota, RBAC, Cluster-Netzwerk-Grundmodell,
Node-Administration und High Availability als Konzept – findet
das im gleichrangigen, unabhängigen Vertiefungsmodul
Kubernetes Administration — RBAC, Node-Betrieb und Cluster-Netzwerk.
Wer Service Discovery, DNS-Verhalten und Ingress-Pfadregeln
vertiefen will, findet das im Schwestermodul
Kubernetes Networking Vertiefung — Service Discovery, DNS und Ingress-Pfadregeln.
Wer stattdessen die Storage-Perspektive einnehmen will – emptyDir
und hostPath im Vergleich zu PersistentVolume, PersistentVolumeClaim
mit Binding-Regel, AccessModes und StorageClass – findet das im
weiteren Schwestermodul
Kubernetes Storage — Volumes, PersistentVolumes & Claims.
Wer stattdessen wissen will, wie sich eine bereits laufende
Anwendung diagnostizieren lässt – Prometheus-Scrape-Annotationen,
kubectl top pods, Ephemeral Containers per
kubectl debug und die dreistufige
Service-Troubleshooting-Kette Port-Forward → Endpoints →
DNS-Test-Pod – findet das im weiteren Schwestermodul
Kubernetes: Monitoring & Troubleshooting.
Wer stattdessen wissen will, wie viel ein Container verbrauchen
darf – requests/limits, die drei
QoS-Klassen sowie der HorizontalPodAutoscaler – findet das im
weiteren Schwestermodul
Kubernetes Ressourcenmanagement & Autoscaling — Requests, Limits und HorizontalPodAutoscaler.
Wer stattdessen wissen will, wie sich diese Objekte als
wiederverwendbares Paket versionieren und verteilen lassen –
Chart-Struktur, values.yaml und Release-Verwaltung –
findet das im weiteren Schwestermodul
Helm — Paketmanagement für Kubernetes.
Alle sieben Vertiefungsmodule setzen nur das Workloads-Modul voraus,
nicht sich gegenseitig, und lassen sich in beliebiger Reihenfolge
buchen.
Wer den hier gelernten securityContext mit RBAC/
ServiceAccounts aus “Kubernetes Administration” zusammenführen
und Namespace-weit statt nur pro Workload durchsetzen will –
Pod Security Standards und Pod Security Admission mit dem
Namespace-Label
pod-security.kubernetes.io/enforce=restricted,
dazu Secrets-Encryption-at-Rest über eine
EncryptionConfiguration jenseits von Base64 –
findet das im Aufbaumodul
Kubernetes Security Vertiefung — Pod Security Admission & Secrets-Härtung.
Anders als die sieben gleichrangigen Vertiefungsmodule oben
setzt dieses Aufbaumodul konkret den securityContext dieses
Kurses und RBAC/ServiceAccounts aus
“Kubernetes Administration” gleichzeitig voraus, nicht nur das
gemeinsame Workloads-Fundament.
Hands-on Inhalte (Auszug)
Sidecar mit geteiltem emptyDir
- Einen Pod mit Hauptcontainer und einem Log-Shipper-Sidecar-Container anwenden, beide über ein gemeinsames
emptyDir-Volume verbunden - Mit
kubectl logs <pod> -c log-shipperlive bestätigen, dass der Sidecar die vom Hauptcontainer geschriebenen Log-Zeilen tatsächlich sieht
securityContext live einschränken
- Dasselbe Manifest um
runAsNonRoot,readOnlyRootFilesystemundcapabilities.drop: [ALL]ergänzen und neu anwenden - Beobachten, dass ein Prozess ohne passendes beschreibbares Volume jetzt scheitert – und einordnen, warum das kein Fehler, sondern die gewollte Absicherung ist
CronJob ohne Überlappung
- Einen
CronJobmitschedule: “*/2 * * * *”undconcurrencyPolicy: Forbidanwenden - Mit
kubectl get cronjob,jobs –watchlive verfolgen, dass kein neuer Job startet, solange der vorherige Lauf noch aktiv ist
Musterlösung als Ausgangspunkt
- Alle drei Manifeste (Sidecar, abgesicherter Sidecar, CronJob) stehen als vollständige Musterlösung bereit – zum Nachvollziehen, nicht zum reinen Abtippen
- Läuft komplett auf einem lokalen Single-Node-Minikube mit dem
docker-Treiber, ohne Ingress oder Tunnel
Mehr zu emptyDir selbst – im Vergleich mit
hostPath, PersistentVolume und PersistentVolumeClaim –
findet ihr im Vertiefungsmodul
Kubernetes Storage — Volumes, PersistentVolumes & Claims.
Hier diente emptyDir nur als geteiltes Volume für das
Sidecar-Pattern, nicht als eigenständiges Thema.
Dieses Modul ist Teil unserer Pilotphase. Gemeinsam mit euch definieren wir passende Metriken (z. B. Zeit bis zum sauber abgesicherten Sidecar-Manifest) und werten sie im Anschluss transparent aus. Ergebnisse veröffentlichen wir, sobald sie belastbar sind.
Bereit, das Modul zu buchen?
Wir passen die Hands-on-Übung auf euren Erfahrungsstand und eure Zielumgebung an.
Academy Briefing anfragen