假设我有一个 Deployment 的特定值设置为 .spec.strategy.rollingUpdate.maxUnavailable 字段。

然后我部署一个 PodDisruptionBudget 附加到上面的部署,将其 spec.maxUnavailable 字段设置为与上述不同的值。

哪一个会占上风?

最佳答案

通过解释文档,似乎这取决于事件。

对于滚动更新,即使 PodDisruptionBudget 指定了较小的值,Deployment 的 maxUnavailable 也会生效。

但是对于驱逐,PodDisruptionBudget 的 maxUnavailable 将占上风,即使 Deployment 指定了较小的值。

文档没有明确比较这两个设置,但是从文档的编写方式可以推断,这些是针对不相互交互的不同事件的单独设置。

例如:

  • Updating a Deployment
  • kubectl explain deploy.spec.strategy.rollingUpdate.maxUnavailable
  • 的输出
  • Specifying a PodDisruptionBudget
  • kubectl explain pdb.spec.maxUnavailable
  • 的输出

    此外,这更符合 Kubernetes 工作原理的精神。部署 Controller 不会读取 PodDisruptionBudget 的字段,反之亦然。

    但要真正确定,您只需要尝试一下即可。

    关于kubernetes:在 Deployment 和 PDB 中指定 maxUnavailable,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58064904/

    10-15 20:53