Ein PodDisruptionBudget (PDB) ist ein Kubernetes-Objekt, das begrenzt, wie viele Pods eines Workloads gleichzeitig durch freiwillige Störungen ausfallen dürfen. Es schützt Anwendungen vor unnötigen Ausfällen bei Wartungsarbeiten wie dem Entleeren eines Nodes (kubectl drain) oder bei Cluster-Upgrades.
Freiwillige und unfreiwillige Störungen
Kubernetes unterscheidet zwei Arten: freiwillige Störungen (Node-Drain, Cluster-Upgrade, Skalierung nach unten) kann ein PDB begrenzen – unfreiwillige (Hardware-Ausfall, Stromausfall) nicht.
Die Eviction-API respektiert das PDB: Fordert jemand eine Pod-Eviction an (etwa per kubectl drain), wird sie abgelehnt, solange dadurch das Budget verletzt würde. Der Vorgang wartet dann, bis wieder Platz im Budget ist.
Konfiguration
Ein PDB definiert über einen Selektor, welche Pods es schützt, und setzt entweder minAvailable oder maxUnavailable – jeweils als Zahl oder Prozentwert. Der Status zeigt disruptionsAllowed (aktuell erlaubte Evictions), currentHealthy und desiredHealthy.
Beispiel: Ein Deployment mit drei Replikaten und maxUnavailable: 1 erlaubt nie mehr als ein gleichzeitig fehlendes Replikat – beim Drain einzelner Nodes bleiben so immer mindestens zwei Instanzen erreichbar. Sinnvoll ist ein PDB vor allem bei Deployments und StatefulSets mit mehreren Replikaten; ein einzelner Pod ist nicht schützbar.
Verwandte Grundlagen: Kubernetes, Pod, Kubernetes Deployment, Kubernetes StatefulSet, Kubernetes Node, Kubernetes Taints, Kubernetes Tolerations. Zusammen mit einer Kubernetes NetworkPolicy und der Kubernetes Gateway API ergibt sich ein Zugriffs- und Verfügbarkeitskonzept für produktive Workloads.