<p>Assuming I have a <code>Deployment</code> with a specific value set to the <code>.spec.strategy.rollingUpdate.maxUnavailable</code> field.</p>

<p>Then I deploy a <code>PodDisruptionBudget</code> attached to the deployment above, setting its <code>spec.maxUnavailable</code> field to a value different to the above.</p>

<p>Which one will prevail?</p>

pkaramol
<p>By interpreting the documentation, it seems that it depends on the event.</p>

<p>For a rolling update, the Deployment's <code>maxUnavailable</code> will be in effect, even if the PodDisruptionBudget specifies a smaller value.</p>

<p>But for an eviction, the PodDisruptionBudget's <code>maxUnavailable</code> will prevail, even if the Deployment specifies a smaller value.</p>

<hr>

<p>The documentation does not explicitly compare these two settings, but from the way the documentation is written, it can be deduced that these are separate settings for different events that don't interact with each other.</p>

<p>For example:</p>

<ul>
<li><a href="https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#updating-a-deployment" rel="noreferrer">Updating a Deployment</a></li>
<li>Output of <code>kubectl explain deploy.spec.strategy.rollingUpdate.maxUnavailable</code></li>
<li><a href="https://kubernetes.io/docs/tasks/run-application/configure-pdb/" rel="noreferrer">Specifying a PodDisruptionBudget</a></li>
<li>Output of <code>kubectl explain pdb.spec.maxUnavailable</code></li>
</ul>

<p>Also, this is more in the spirit of how Kubernetes works. The Deployment Controller is not going to read a field of a PodDisruptionBudget, and vice versa.</p>

<p>But to be really sure, you would just need to try it out.</p>
