# \`kube-dns-autoscaler\` preventing GKE standard cluster to scale down

**URL:** <https://discuss.kubernetes.io/t/kube-dns-autoscaler-preventing-gke-standard-cluster-to-scale-down/24219>\
**Category:** General Discussions\
**Created:** [May 16, 2023, 1:35pm UTC](https://discuss.kubernetes.io/t/kube-dns-autoscaler-preventing-gke-standard-cluster-to-scale-down/24219 "2023-05-16T13:35:51Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![paolo.filippelli](https://sea2.discourse-cdn.com/flex016/user_avatar/discuss.kubernetes.io/paolo.filippelli/32/12543_2.png) [@paolo.filippelli](https://discuss.kubernetes.io/u/paolo.filippelli)\
**Post date:** [May 16, 2023, 1:35pm UTC](https://discuss.kubernetes.io/t/kube-dns-autoscaler-preventing-gke-standard-cluster-to-scale-down/24219/1 "2023-05-16T13:35:51Z")

</div>

Asking for help? Comment out what you need so we can get more information to help you!

### Cluster information:

Kubernetes version: _1.23.17-gke.1700_  
Cloud being used: _gke_  
Installation method: _standard GKE cluster, not autopilot_  
Host OS: _Container-Optimized OS_ by Google

### The question

Hi everyone, I need advice on GKE autoscaler not scalingDown a nodepool.

I’ve got a bunch of `noScaleDown` events with their details and I was thinking about the better way to handle them.  
Specifically I can see that among “problematic” pods there is the `kube-dns-autoscaler` that prevents `scaleDown` with this reason: `no.scale.down.node.pod.kube.system.unmovable`

How I am supposed to handle this one? It’s running in single replica and I don’t think that I can’t run it multi-replica because there could be race conditions between multiple dns-scalers.  
Is that pod “vital” or can I define a _PodDisruptionBudget_ with `minAvailable: 0` and thus “suffer” a reschedule on another node in case of node scale down?

I think that the answer is yes, I can do it, but any advice is welcome 🙂

---

<div class="post-metadata">

**Author:** ![MrWetsnow](https://sea2.discourse-cdn.com/flex016/user_avatar/discuss.kubernetes.io/mrwetsnow/32/13496_2.png) [@MrWetsnow](https://discuss.kubernetes.io/u/MrWetsnow)\
**Post date:** [October 17, 2023, 10:19pm UTC](https://discuss.kubernetes.io/t/kube-dns-autoscaler-preventing-gke-standard-cluster-to-scale-down/24219/2 "2023-10-17T22:19:07Z")

</div>

If you add a PDB for it, that should help:

```auto
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
  name: kube-dns-autoscaler-pdb
  namespace: kube-system
  labels:
    app: kube-dns-autoscaler
spec:
  maxUnavailable: 1
  selector:
    matchLabels:
      k8s-app: kube-dns-autoscaler

```

(You might do the same thing for `kube-dns` for the same reason.)

Dan

---

<div class="post-metadata">

**Author:** ![paolo.filippelli](https://sea2.discourse-cdn.com/flex016/user_avatar/discuss.kubernetes.io/paolo.filippelli/32/12543_2.png) [@paolo.filippelli](https://discuss.kubernetes.io/u/paolo.filippelli)\
**Post date:** [October 18, 2023, 8:34am UTC](https://discuss.kubernetes.io/t/kube-dns-autoscaler-preventing-gke-standard-cluster-to-scale-down/24219/3 "2023-10-18T08:34:55Z")

</div>

Yes, that’s exactly that I’ve done, and it works indeed 🙂  
Is well explained here, also, like you pointed out @MrWetsnow → [https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/FAQ.md#how-to-set-pdbs-to-enable-ca-to-move-kube-system-pods](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/FAQ.md#how-to-set-pdbs-to-enable-ca-to-move-kube-system-pods)
