PodDisruptionBudget是否会阻止KEDA ScaledObject缩容至0?
问题分析与解决方案
确实是PodDisruptionBudget(PDB)导致的缩容受限问题。
你的PDB配置了minAvailable: 1,这意味着Kubernetes集群会强制保证该Deployment始终至少有1个可用Pod在运行。KEDA的Cron Scaler是通过Horizontal Pod Autoscaler(HPA)来调整副本数的,而HPA会严格遵守PDB的可用性约束——一旦缩容到0会直接违反minAvailable:1的规则,所以HPA会自动终止缩容操作,最终只保留1个Pod。
解决办法
- 临时调整PDB配置:在需要缩容到0的时间段,将PDB的
minAvailable修改为0,或者直接删除PDB。待缩容完成、需要恢复副本数时,再重新配置回原PDB规则。 - 结合CronJob动态管理PDB:创建Kubernetes CronJob,在Cron Scaler触发缩容前自动修改PDB的
minAvailable为0,在缩容窗口结束后再将PDB恢复为minAvailable:1,实现自动化的规则切换。 - 确认ScaledObject配置有效性:虽然你的ScaledObject已经设置了
idleReplicaCount:0和minReplicaCount:0,但这些配置会被PDB优先级更高的约束覆盖,所以核心还是要处理PDB的规则冲突。
内容的提问来源于stack exchange,提问作者RubenLaguna
相关产品推荐
相关产品推荐

