Kubernetes PDB: Why we swapped to using maxUnavailable
Blog post from Statsig
Statsig experienced inefficiencies with their initial Pod Disruption Budget (PDB) setup in Kubernetes, especially for services with fewer than five pods, where the minAvailable setting effectively locked all pods from disruptions, leading to resource waste and blocked updates. This setup was problematic during low traffic periods and time-sensitive updates, such as security patches, because it caused outdated configurations to persist. To address these issues, Statsig switched from using minAvailable to maxUnavailable in their PDB configuration, allowing at least one pod to be disrupted even in smaller deployments. This change improved resource management and deployment velocity by preventing resource waste and facilitating smoother rolling updates. The updated configuration, which specifies maxUnavailable, enables controlled and flexible handling of disruptions and is recommended for teams managing Kubernetes service deployments with variable pod counts.