<p>I have a pod that had a <code>Pod Disruption Budget</code> that says at least one has to be running. While it generally works very well it leads to a peculiar problem.</p>
<p>I have this pod sometimes in a failed state (due to some development) so I have two pods, scheduled for two different nodes, both in a <code>CrashLoopBackOff</code> state.</p>
<p>Now if I want to run a <code>drain</code> or k8s version upgrade, what happens is that pod cannot ever be evicted since it knows that there should be at least one running, which will never happen.</p>
<p>So k8s does not evict a pod due to <code>Pod Disruption Budget</code> even if the pod is not running. Is there a way to do something with this? I think ideally k8s should treat failed pods as candidates for eviction regardless of the budget (as deleting a failing pod cannot &quot;break&quot; anything anyway)</p>

Ilya Chernomordik
<blockquote>
<p>...if I want to run a drain or k8s version upgrade, what happens is that pod cannot ever be evicted since it knows that there should be at least one running...</p>
</blockquote>
<p><code>kubectl drain --disable-eviction &lt;node&gt;</code> will delete pod that is protected by PDB. Since you are fully aware of the downtime, you can first delete the PDB in question <em>before</em> draining the node.</p>
