假设我有一个 Deployment
的特定值设置为 .spec.strategy.rollingUpdate.maxUnavailable
字段。
然后我部署一个 PodDisruptionBudget
附加到上面的部署,将其 spec.maxUnavailable
字段设置为与上述不同的值。
哪一个会占上风?
最佳答案
通过解释文档,似乎这取决于事件。
对于滚动更新,即使 PodDisruptionBudget 指定了较小的值,Deployment 的 maxUnavailable
也会生效。
但是对于驱逐,PodDisruptionBudget 的 maxUnavailable
将占上风,即使 Deployment 指定了较小的值。
文档没有明确比较这两个设置,但是从文档的编写方式可以推断,这些是针对不相互交互的不同事件的单独设置。
例如:
kubectl explain deploy.spec.strategy.rollingUpdate.maxUnavailable
kubectl explain pdb.spec.maxUnavailable
此外,这更符合 Kubernetes 工作原理的精神。部署 Controller 不会读取 PodDisruptionBudget 的字段,反之亦然。
但要真正确定,您只需要尝试一下即可。
关于kubernetes:在 Deployment 和 PDB 中指定 maxUnavailable,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58064904/