✦ For everyone, free.

Practical knowledge for real and everyday life

Home

Kubernetes StatefulSet Availability Management

Kubernetes StatefulSet Availability Management ensures reliable operation of stateful applications through persistent storage and ordered deployment strategies.

Kubernetes StatefulSet Availability Management is the practice of sizing PodDisruptionBudgets specifically around quorum and role-aware constraints unique to stateful workloads, ensuring voluntary disruption never drops a distributed system below the minimum viable membership its own consensus protocol requires, a materially different calculation than the general capacity-based PDB sizing used for stateless Deployments.


Quorum-Preserving PDB Sizing

Beyond Simple Capacity Percentages

For a quorum-based system, availability management cannot use a generic "keep 80% available" rule; it must ensure the number of simultaneously available instances never falls below what the underlying consensus protocol requires for majority agreement, a hard correctness boundary rather than a soft capacity preference.

apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
  name: availability-management-pdb
spec:
  minAvailable: 3
  selector:
    matchLabels:
      app: consensus-store

For a 5-member quorum system requiring 3 for majority, minAvailable: 3 is the strict floor; anything lower risks a voluntary disruption pushing the system below quorum and into unavailability or, worse, a split-brain condition.


Role-Aware Disruption Budgets

Different Constraints for Primary Versus Replica

Some stateful workloads warrant separate PodDisruptionBudgets targeting different roles distinctly, protecting a single primary instance from any voluntary disruption at all while allowing more permissive disruption of interchangeable replicas, achieved through label selectors that distinguish role rather than a single blanket budget across the whole StatefulSet.

apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
  name: primary-protection-pdb
spec:
  minAvailable: 1
  selector:
    matchLabels:
      app: consensus-store
      role: primary

Requiring Application-Level Role Labeling

This role-aware approach depends on the application or an external controller keeping the role label accurate in near-real-time as leadership changes occur, since a stale label misidentifying the current primary would misapply protection to the wrong instance.


The At-Most-One Guarantee Interaction With PDB

PDB Constrains Eviction, Not Replacement Timing

Because a StatefulSet's at-most-one guarantee already prevents two Pods from occupying the same ordinal simultaneously, a PodDisruptionBudget's role here is purely to constrain how many ordinals can be evicted concurrently, not to add any additional identity-safety guarantee; availability management must still account for the fact that a voluntarily evicted ordinal cannot be replaced until Kubernetes confirms full termination, extending the effective unavailability window beyond the eviction moment itself.

kubectl get pdb availability-management-pdb -o jsonpath='{.status.disruptionsAllowed}'

Sizing Total Replicas Around the Combined Constraint

Headroom Above the Quorum Floor

Availability management practice sizes total replica count with enough headroom above the bare quorum minimum to absorb both a voluntary disruption and a subsequent involuntary failure without dropping below quorum, since relying on exactly the quorum minimum as the steady-state replica count leaves zero tolerance for any disruption at all.

spec:
  replicas: 5

With a 3-vote quorum requirement, running 5 total replicas allows for one voluntary disruption event while still tolerating a subsequent single involuntary failure without losing quorum.


Availability Management Diagram

5 total replicas 3 strict quorum floor

Treating quorum preservation as the primary constraint availability management must satisfy, rather than a generic percentage-based capacity target, is what prevents a routine node drain or maintenance operation from inadvertently causing a genuine correctness failure in a consensus-dependent stateful workload.