Training Module
Kubernetes StatefulSets — Stabile Identität für zustandsbehaftete Workloads
In diesem 100-Minuten-Modul schließt ihr die Lücke zwischen
zustandslosen und zustandsbehafteten Workloads. Der Einstieg ist die
zentrale Abgrenzung: Ein ReplicaSet/
Deployment behandelt seine Pods als austauschbar –
generierte Namen wie web-7d9f8c9-x2k4p, keine garantierte
Start-Reihenfolge, kein stabiler Speicher-Zuordnungspunkt. Ein
StatefulSet gibt genau das auf, was Deployments
schnell macht, und tauscht es gegen stabile, geordnete
Identität: Pods heißen <name>-0,
<name>-1, … und behalten diesen Namen über jeden
Neustart hinweg. Im ersten Hands-on setzt ihr
volumeClaimTemplates ein: Statt eine gemeinsame
PersistentVolumeClaim für alle Replicas zu teilen – aus dem Modul
Storage bereits als Engpass bekannt, ReadWriteOnce erlaubt
ohnehin meist nur einem Pod gleichzeitig Schreibzugriff –
provisioniert Kubernetes für jede Replica automatisch eine eigene PVC
nach dem Muster
<template>-<statefulset>-<ordinal>.
Danach ordnet ihr podManagementPolicy ein –
OrderedReady (Default, strikt sequentiell, jeder Pod muss
erst bereit sein, bevor der nächste startet) gegen
Parallel (alle Replicas gleichzeitig) – und seht, wie
dieselbe Reihenfolge beim Scale-down rückwärts gilt. Im zweiten
Hands-on koppelt ihr das StatefulSet an einen
Headless Service (clusterIP: None, aus
dem Modul Networking Vertiefung als Konzept bereits bekannt) und löst
live einen stabilen Pro-Pod-DNS-Namen auf wie
pod-0.<service>.<namespace>.svc.cluster.local
– der Baustein, den verteilte Systeme für Peer-Discovery brauchen.
Voraussetzung sind die Module “Kubernetes Storage” (PersistentVolume/
PersistentVolumeClaim/StorageClass) und “Kubernetes Networking
Vertiefung” (Headless Services, SRV-Records) – beide werden hier
vorausgesetzt und nicht wiederholt. Die Session läuft weiterhin
vollständig lokal über Minikube oder kind, ohne Cloud-Account und ohne
Kostenwirkung.
Format
100 Minuten, live (remote oder vor Ort), Input & zwei Hands-on-Übungen
Teilnehmende
Entwickler:innen und Ops, die zustandsbehaftete Workloads wie Datenbank-Cluster stabil betreiben wollen
Voraussetzungen
Abgeschlossene Module “Kubernetes Storage” und “Kubernetes Networking Vertiefung” oder gleichwertige Vorkenntnisse, lauffähige lokale Docker-Umgebung für Minikube oder kind
Warum dieses Training für deine Organisation wirkt
Austauschbar ist der Normalfall — bis er es nicht mehr ist
Deployment/ReplicaSet setzen bewusst auf Austauschbarkeit: jeder Pod ist gleich, jeder ersetzbar, egal wer zuerst startet. Ein Datenbank-Cluster mit Primary/Replica-Rollen oder ein verteiltes System mit Peer-Wahl braucht das Gegenteil – eine Identität, die über einen Neustart hinweg erhalten bleibt.
Eine geteilte PVC ist für Replicas ohnehin meist keine Option
ReadWriteOnce, aus dem Modul Storage bekannt,
erlaubt in der Regel nur einem Pod gleichzeitig Schreibzugriff.
volumeClaimTemplates löst das nicht über einen
komplizierteren AccessMode, sondern über eine eigene PVC pro
Replica – jeder Pod bekommt seinen eigenen, stabil zugeordneten
Speicher.
Reihenfolge und Name sind kein Zufall mehr
OrderedReady erzwingt, dass Pod-1 erst startet, wenn
Pod-0 bereit ist – und beim Scale-down läuft es rückwärts.
Kombiniert mit dem stabilen DNS-Namen aus dem Headless Service
weiß jeder Pod jederzeit, wer er ist und wie er seine Nachbarn
erreicht.
Was Teilnehmende mitnehmen
- StatefulSet gegen Deployment/ReplicaSet abgrenzen: stabile, geordnete Identität statt austauschbarer Pods, und benennen, wann dieser Mechanismus tatsächlich gebraucht wird (Datenbank-Cluster, verteilte Systeme mit Peer-Discovery).
volumeClaimTemplatesin einem StatefulSet-Manifest definieren und live nachweisen, dass Kubernetes für jede Replica automatisch eine eigene PVC nach dem Muster<template>-<statefulset>-<ordinal>anlegt.- Die Standard-StorageClass des eigenen Clusters (bei Minikube i. d. R.
standardmit hostpath-Provisioner) vor dem Hands-on gezielt prüfen, statt sie stillschweigend vorauszusetzen. podManagementPolicyOrderedReady(Default) undParallelunterscheiden und begründen, wann welches Verhalten beim Scaling und beim Rolling Update sinnvoll ist.- Stabile Pod-Namen (
<name>-0,<name>-1, …) über einen Pod-Neustart hinweg live nachvollziehen – die Identität bleibt erhalten, obwohl der Scheduler den Pod ggf. neu platziert. - Einen Headless Service (
clusterIP: None) über dasserviceName-Feld an ein StatefulSet koppeln und live einen stabilen Pro-Pod-DNS-Namen wiepod-0.<service>.<namespace>.svc.cluster.localauflösen.
Für wen dieses Modul ideal ist
- • Entwickler:innen und Ops mit abgeschlossenen Modulen “Kubernetes Storage” und “Kubernetes Networking Vertiefung” oder gleichwertigen Vorkenntnissen
- • Alle, die demnächst einen Datenbank-Cluster, ein Message-Queue-Cluster oder ein anderes zustandsbehaftetes verteiltes System auf Kubernetes betreiben sollen
- • Teams, die bisher ein Deployment mit geteilter PVC “irgendwie zum Laufen” gebracht haben und verstehen wollen, warum das strukturell an Grenzen stößt
Rahmendaten
- • Dauer: 100 Minuten live (remote oder vor Ort)
- • Format: Input, Live-Demo, zwei Hands-on-Übungen (volumeClaimTemplates, Headless Service & Pro-Pod-DNS)
- • Voraussetzungen: abgeschlossene Module “Kubernetes Storage” und “Kubernetes Networking Vertiefung”, lauffähige lokale Docker-Umgebung für Minikube oder kind, keine Cloud-Kostenwirkung
Modulaufbau & Agenda
StatefulSet vs. Deployment/ReplicaSet: stabile Identität als Konzept (20 min): austauschbare Pods vs. geordnete, stabile Identität, und wann der Mechanismus tatsächlich gebraucht wird.
Hands-on 1: volumeClaimTemplates (25 min, Hands-on): StatefulSet mit
volumeClaimTemplatesanwenden, automatisch provisionierte PVCs pro Replica live prüfen, Default-StorageClass vorab bestätigen.Geordnetes Scaling & Rolling Update (20 min):
podManagementPolicyOrderedReadyvs.Parallel,RollingUpdatemitpartition, stabile Pod-Namen über Neustarts hinweg.Hands-on 2: Headless Service & Pro-Pod-DNS (25 min, Hands-on): Headless Service anlegen, StatefulSet über
serviceNamekoppeln, stabilen DNS-Namen je Pod per Debug-Pod auflösen.Puffer/Q&A (10 min): offene Fragen, individuelle Vertiefung je nach Ziel-Workload der Teilnehmenden.
Dieses Modul setzt zwei Vertiefungsmodule voraus: Kubernetes Storage — Volumes, PersistentVolumes & Claims für PersistentVolume, PersistentVolumeClaim und StorageClass, die hier als bekannt gelten und nicht wiederholt werden, sowie Kubernetes Networking Vertiefung — Service Discovery, DNS und Ingress-Pfadregeln für Headless Services und SRV-Records, die ebenfalls vorausgesetzt und nicht erneut eingeführt werden. Wer einen der beiden Kurse noch nicht abgeschlossen hat, sollte ihn zuerst buchen.
Dieses Modul vertieft damit konkret zwei Vorgängerkurse gleichzeitig, wie zuvor bereits “Kubernetes Security Vertiefung” (dort Administration und Anwendungsdesign) – anders als die übrigen Vertiefungsmodule auf “Kubernetes Workloads & Konfiguration”, die jeweils nur das gemeinsame Workloads-Fundament voraussetzen.
Hands-on Inhalte (Auszug)
StatefulSet mit volumeClaimTemplates anwenden
- Ein StatefulSet-Manifest mit drei Replicas und einem
volumeClaimTemplates-Block (accessModes: [ReadWriteOnce], angeforderte Größe) anwenden - Vorab mit
kubectl get storageclassdie als(default)markierte StorageClass bestätigen (bei Minikube i. d. R.standardmit hostpath-Provisioner)
PVCs pro Replica live prüfen
kubectl get pvcausführen und die drei automatisch angelegten PVCs nach dem Muster<template>-<statefulset>-<ordinal>live sehen- In jeden Pod schreiben und bestätigen, dass jeder Pod ausschließlich seine eigene PVC sieht
Headless Service koppeln
- Einen Headless Service (
clusterIP: None) mit passendem Selector anlegen - Das
serviceName-Feld im StatefulSet auf den Headless Service setzen und das StatefulSet erneut anwenden
Pro-Pod-DNS live auflösen
- Über einen kurzlebigen Debug-Pod (
kubectl run … –rm -it) den DNS-Namen jedes einzelnen Pods auflösen, z. B.nslookup pod-0.<service>.<namespace>.svc.cluster.local - Einen Pod gezielt löschen, die automatische Neuerstellung durch das StatefulSet beobachten und bestätigen, dass derselbe DNS-Name wieder auflöst
Dieses Modul ist Teil unserer Pilotphase. Gemeinsam mit euch definieren wir passende Metriken (z. B. Zeit von der Manifest-Anwendung bis zur bestätigten Pro-Pod-DNS-Auflösung) 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