<p>I have kubernets cluster in gcp with docker container runtime. I am trying to change docker container runtime into containerd. Following steps shows what I did.</p>
<ol>
<li>New node pool added ( nodes with containerd )</li>
<li>drained old nodes</li>
</ol>
<p>Once I perform above steps I am getting &quot; Pod is blocking scale down because it has local storage &quot; warning message.</p>

<p>You need to add the once annotation to POD so that cluster autoscaler can remove that POD from POD safe to evict.</p>
<pre><code>cluster-autoscaler.kubernetes.io/safe-to-evict&quot;: &quot;true&quot;
</code></pre>
<p>above annotation, you have to add in into POD.</p>
<p>You can read more at : <a href="https://cloud.google.com/kubernetes-engine/docs/how-to/cluster-autoscaler-visibility#cluster-not-scalingdown" rel="nofollow noreferrer">https://cloud.google.com/kubernetes-engine/docs/how-to/cluster-autoscaler-visibility#cluster-not-scalingdown</a></p>
<blockquote>
<p>NoScaleDown example: You found a noScaleDown event that contains a
per-node reason for your node. The message ID is
&quot;no.scale.down.node.pod.has.local.storage&quot; and there is a single
parameter: &quot;test-single-pod&quot;. After consulting the list of error
messages, you discover this means that the &quot;Pod is blocking scale down
because it requests local storage&quot;. You consult the Kubernetes Cluster
Autoscaler FAQ and find out that the solution is to add a
&quot;cluster-autoscaler.kubernetes.io/safe-to-evict&quot;: &quot;true&quot; annotation to
the Pod. After applying the annotation, cluster autoscaler scales down
the cluster correctly.</p>
</blockquote>
