Deployment滚动更新时如何选择待销毁的旧Pod?
Deployment滚动更新时如何选择待销毁的旧Pod?
嘿,这个问题问到点子上了!很多人用Deployment做滚动更新时都没留意过这个细节,我给你唠明白~
就拿你说的 replicas: 2、maxUnavailable: 1 的场景来说,Kubernetes不会随机瞎删旧Pod,而是按一套优先级逻辑来挑选要销毁的对象:
- 第一步:优先找**未就绪(Not Ready)**的旧Pod,如果有的话直接删它——毕竟这个Pod本来就没法提供服务,删了也不影响业务可用性
- 第二步:如果所有旧Pod都是正常就绪状态,接下来会看它们所在的节点分布:
- 优先删除所在节点上运行的同旧ReplicaSet的Pod数量更多的那个,目的是尽量让节点间的Pod负载更均衡。比如两个旧Pod分别在不同节点,那节点上的同RS Pod数量都是1,这时候就随机选一个;要是俩Pod都在同一个节点,那删其中一个后,后续新Pod大概率会调度到其他节点,平衡负载
- 额外注意:如果你配置了
PodDisruptionBudget(PDB),Kubernetes会先确保删除Pod后仍满足PDB规定的最小可用Pod数量要求,再按上面的逻辑选择目标Pod
备注:内容来源于stack exchange,提问作者zerkms
相关产品推荐
相关产品推荐

