痛点
集群升级节点、内核补丁滚动更新、节点缩容时,kubectl drain 一把梭直接驱逐 Pod,结果核心服务瞬间副本数归零,告警群炸了——这是很多运维团队踩过的坑。
根本原因:Kubernetes 默认不关心你的业务可用性,drain 操作会无差别驱逐节点上所有 Pod。如果多个副本恰好调度在同一节点,或者驱逐速度快于新 Pod 就绪速度,服务就会出现中断窗口。
PodDisruptionBudget(PDB) 正是解决这个问题的原生机制——它告诉集群:"在任何自愿中断(voluntary disruption)期间,我的服务至少要保持 N 个副本可用"。
方案
PDB 的核心逻辑...