Kubernetes删除Pod时PodDisruptionBudget未生效问题咨询
你观察到的现象符合Kubernetes的原生设计,是对PodDisruptionBudget(PDB)的适用场景认知存在偏差导致的。
- PDB的核心作用是限制Kubernetes自动发起的驱逐操作,仅对集群运维层面的自愿中断生效,你直接执行
kubectl delete pod属于用户主动向API Server提交的强制删除请求,不在PDB的防护范围内。 - 符合PDB防护范围的场景包括:节点排空(
kubectl drain)、集群自动缩容触发的节点下线、节点滚动升级时的Pod迁移等,你测试的cordon后节点驱逐Pod的行为属于这类场景,所以符合PDB的预期限制逻辑。 - 针对Deployment多副本的测试场景同理:主动删除Pod的操作会被API Server直接执行,不会触发PDB规则校验,因此可以同时删除多个副本,只有Pod被集群组件发起驱逐时,才会遵循PDB配置的
minAvailable/maxUnavailable规则逐个处理。 - 如果你需要限制用户主动删除Pod的行为,可通过配置RBAC权限、给Pod添加自定义finalizer的方式实现,PDB的设计目标本身是保障集群运维操作的服务可用性,不用于拦截用户主动的资源管理操作。
内容的提问来源于stack exchange,提问作者Ilya Chernomordik
相关产品推荐
相关产品推荐

