Training Module
Kubernetes Failure-Domain-Scheduling — Topology Spread Constraints & Pod Anti-Affinity
Dieses 100-Minuten-Modul schließt eine Lücke, die zwei
Vorgängermodule dieses Repos jeweils ausdrücklich als Ausblick ohne
eigenen Kurs benannt haben: “Kubernetes Administration” und
“Kubernetes Hochverfügbarkeit — Multi-Master Control-Plane” nennen
beide die Verteilung von Worker-Nodes über Failure-Domains als
offenen Punkt, ohne ihn selbst zu vertiefen. Ihr startet mit der
Einordnung, die im Ernstfall den Unterschied macht:
Kubernetes plant Pods nicht automatisch
failure-domain-bewusst – ohne explizite Konfiguration kann
der Scheduler sechs Replicas einer Anwendung problemlos alle in
derselben Verfügbarkeitszone platzieren, und der Ausfall genau
dieser einen Zone reißt dann die komplette Anwendung mit. Im ersten
Hands-on vergebt ihr topology.kubernetes.io/zone
-Labels an die drei Nodes eures kind-Clusters – und wir
sagen von Anfang an ehrlich: Das sind
simulierte Zonen, keine physisch getrennten
Rechenzentren. Alle Nodes laufen als Docker-Container auf demselben
Host; die Labels lösen dasselbe Scheduling-Verhalten aus wie echte
Cloud-AZs, aber keine echte physische Redundanz. Im zweiten,
größten Hands-on konfiguriert ihr topologySpreadConstraints
mit maxSkew und vergleicht live, was der Unterschied
zwischen whenUnsatisfiable: DoNotSchedule (hart, neue
Pods bleiben Pending, bis der Skew wieder passt) und
ScheduleAnyway (weich, der Scheduler platziert trotzdem,
auch wenn der Skew dabei wächst) am eigenen Cluster tatsächlich
bedeutet – inklusive einer bewusst provozierten ungleichen
Verteilung, die ihr anschließend korrigiert. Im dritten Hands-on
stellt ihr Pod-Anti-Affinity daneben: den älteren,
binären Mechanismus (“niemals zwei Pods in derselben Zone”), der
keine Skew-Feinsteuerung kennt, dafür aber Fälle abdeckt, in denen
Topology Spread Constraints allein nicht reichen. Den Abschluss
bildet ein bewusster Ausblick ohne eigenes Hands-on: wie ein
Cluster-Autoscaler auf Pending-Pods durch
Skew-Verletzungen reagiert, und was sich an echten Cloud-AZs
gegenüber unseren simulierten Labels unterscheidet. Voraussetzung
sind beide Module “Kubernetes Administration” und
“Kubernetes Hochverfügbarkeit — Multi-Master Control-Plane”
gleichzeitig. Die Session läuft weiterhin vollständig lokal über
kind, ohne Cloud-Account und ohne Kostenwirkung.
Format
100 Minuten, live (remote oder vor Ort), Input & Hands-on
Teilnehmende
Ops/Admins, die Worker-Nodes bewusst über Failure-Domains verteilen wollen, statt sich auf Zufallsverteilung zu verlassen
Voraussetzungen
Abgeschlossene Module “Kubernetes Administration” UND “Kubernetes Hochverfügbarkeit — Multi-Master Control-Plane” (beide Pflicht), lauffähige lokale Docker-Umgebung für kind
Warum dieses Training für deine Organisation wirkt
Die Lücke, die zwei Module offen ließen
“Administration” und “Hochverfügbarkeit” nennen Failure-Domain-Scheduling beide ausdrücklich nur als Ausblick, ohne eigenen Kurs. Dieses Modul schließt genau diese benannte Lücke, statt sie ein drittes Mal zu wiederholen.
Simuliert, aber ehrlich benannt
Zone-Labels auf einem Docker-Host sind keine physische Redundanz – wir sagen das im Kick-off und in der Übung selbst so, statt eine Illusion echter Verfügbarkeitszonen zu erzeugen.
Skew ist kein Diagramm mehr, sondern ein Kommando
Wer nur gehört hat, dass DoNotSchedule härter ist
als ScheduleAnyway, glaubt es. Wer live sieht,
wie ein Pod bei Skew-Verletzung Pending bleibt,
während der andere trotzdem geplant wird, versteht den
Unterschied im Ernstfall sofort.
Was Teilnehmende mitnehmen
- Herleiten, warum Kubernetes Pods nicht von sich aus failure-domain-bewusst plant – und was das für die tatsächliche Ausfallsicherheit einer Anwendung bedeutet.
topology.kubernetes.io/zone-Labels auf echten Cluster-Nodes setzen – klar als simulierte, nicht physisch getrennte Zonen gekennzeichnet.topologySpreadConstraintsmitmaxSkew,topologyKeyundwhenUnsatisfiablekorrekt konfigurieren und den Unterschied zwischenDoNotScheduleundScheduleAnywaylive an provozierter Schieflage nachvollziehen.- Pod-Anti-Affinity als binären Verteilungsmechanismus gegen die feingranulare Skew-Steuerung von Topology Spread Constraints abgrenzen und begründet auswählen, wann welcher Mechanismus passt.
- Eine ungleiche Pod-Verteilung gezielt provozieren, mit
kubectl get pods -o widenachweisen und anschließend korrigieren. - Die Interaktion mit einem Cluster-Autoscaler sowie den Unterschied zu echten Cloud-Availability-Zones als Konzept einordnen – ohne eigenes Hands-on.
Für wen dieses Modul ideal ist
- • Ops/Admins mit abgeschlossenen Modulen “Kubernetes Administration” UND “Kubernetes Hochverfügbarkeit — Multi-Master Control-Plane”
- • Teams, die eine produktive Multi-Zone-Topologie planen oder betreiben und Worker-Pods bewusst statt zufällig verteilen wollen
- • Alle, die den Unterschied zwischen Topology Spread Constraints und Pod-Anti-Affinity bisher nur aus der Dokumentation kennen, nicht aus eigener Übung
Rahmendaten
- • Dauer: 100 Minuten live (remote oder vor Ort)
- • Format: Input, Live-Demo, drei aufeinander aufbauende Hands-on-Übungen (Zone-Labels, Topology Spread Constraints, Pod-Anti-Affinity), Cluster-Autoscaler-/Cloud-AZ-Ausblick als reiner Konzeptteil
- • Voraussetzungen: beide Module “Kubernetes Administration” und “Kubernetes Hochverfügbarkeit — Multi-Master Control-Plane”, lauffähige lokale Docker-Umgebung für
kind, keine Cloud-Kostenwirkung
Modulaufbau & Agenda
Einordnung & Abgrenzung zu Control-Plane-HA (10 min): warum Kubernetes Pods nicht automatisch failure-domain-bewusst plant, und wie sich Worker-Verteilung von der Control-Plane-Hochverfügbarkeit des Vorgängermoduls unterscheidet.
Hands-on 1: Zonen-Labels auf dem Drei-Node-kind-Cluster (20 min, Hands-on):
topology.kubernetes.io/zone-Labels an drei Nodes vergeben – ausdrücklich als simulierte, nicht physisch getrennte Zonen angesagt.Hands-on 2: topologySpreadConstraints konfigurieren, Skew live vergleichen (30 min, Hands-on):
maxSkewundwhenUnsatisfiablesetzen, eine ungleiche Verteilung provozieren,DoNotSchedulegegenScheduleAnywayam selben Szenario gegenüberstellen und die Schieflage korrigieren.Hands-on 3: Pod-Anti-Affinity als Alternative/Ergänzung (25 min, Hands-on): dieselbe Verteilungsaufgabe mit
podAntiAffinitylösen und den binären Charakter gegen die Skew-Feinsteuerung von Topology Spread Constraints abgrenzen.Ausblick, ohne eigenes Hands-on (15 min): Interaktion mit einem Cluster-Autoscaler bei
Pending-Pods durch Skew-Verletzungen, und was sich an echten Cloud-Availability-Zones gegenüber unseren simulierten Labels unterscheidet.
Dieses Modul setzt beide Vorgängermodule
gleichzeitig voraus:
Kubernetes Administration — RBAC, Node-Betrieb und Cluster-Netzwerk
(Node-Administration und die erste Nennung von
Failure-Domain-Scheduling als Ausblick) und
Kubernetes Hochverfügbarkeit — Multi-Master Control-Plane
(ein echter Multi-Node-kind-Cluster, auf dem dieses
Modul direkt aufbaut). Beide Module benennen an ihrem jeweiligen
Ende wörtlich dieselbe offene Lücke, die dieses Modul schließt.
Wer eines der beiden Module noch nicht hat, sollte es zuerst
buchen – keines der beiden reicht hier allein.
Bewusst nicht Teil dieses Moduls: kein
produktiver Cluster-Autoscaler-Aufbau (der Block 5 bleibt
Konzept, weil ein lokaler kind-Cluster keinen
echten Node-Autoscaler betreiben kann – dieselbe Grenze, die
auch
Kubernetes Ressourcenmanagement & Autoscaling
für Cluster-/Node-Autoscaling zieht), keine echte
Multi-AZ-Cloud-Konfiguration und kein nodeSelector
-Grundlagenteil (kennt ihr bereits aus
Kubernetes Anwendungsdesign).
Hands-on Inhalte (Auszug)
Simulierte Zonen anlegen
- Mit
kubectl label node … topology.kubernetes.io/zone=zone-a(bzw.zone-b/zone-c) jedem Worker-Node eine eigene Zone zuweisen - Mit
kubectl get nodes -L topology.kubernetes.io/zonedie Zuordnung verifizieren – und ausdrücklich ansagen, dass das Docker-Containern auf demselben Host entspricht, nicht getrennten Rechenzentren
Schieflage provozieren und korrigieren
- Zwei Zonen-Nodes mit
kubectl cordonsperren, ein Deployment ohne Constraint skalieren und die einseitige Verteilung mitkubectl get pods -o widenachweisen - Nach dem Uncordon mit gesetztem
topologySpreadConstraintsbeobachten, wie neue Pods die Schieflage ausgleichen, ohne dass bereits laufende Pods verschoben werden
DoNotSchedule vs. ScheduleAnyway
- Mit
maxSkew: 1undwhenUnsatisfiable: DoNotSchedulelive zeigen, dass ein zusätzlicher Pod bei Skew-VerletzungPendingbleibt - Dieselbe Situation mit
ScheduleAnywaywiederholen und beobachten, dass der Pod trotzdem geplant wird, obwohl der Skew wächst
Pod-Anti-Affinity im Vergleich
- Eine
podAntiAffinity-Regel mittopologyKey: topology.kubernetes.io/zoneschreiben, die zwei Pods derselben Anwendung strikt in unterschiedliche Zonen zwingt - Einen vierten Replica-Pod bei nur drei Zonen bewusst in
Pendinglaufen lassen und den binären Unterschied zur Skew-Toleranz von Topology Spread Constraints benennen
Dieses Modul ist Teil unserer Pilotphase. Gemeinsam mit euch definieren wir passende Metriken (z. B. Zeit von der provozierten Schieflage bis zur verifizierten Korrektur) 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