Kubernetes Cluster Autoscaler Support (Experimental)

By default, Longhorn blocks Kubernetes Cluster Autoscaler from scaling down nodes because:

  • Longhorn creates PodDisruptionBudgets for all engine and replica instance-manager pods.

  • Longhorn instance manager pods have strict PodDisruptionBudgets.

  • Longhorn instance manager pods are not backed by a Kubernetes built-in workload controller .

  • Longhorn pods are using local storage volume mounts.

If you want to unblock the Kubernetes Cluster Autoscaler scaling, you can set the setting Kubernetes Cluster Autoscaler Enabled.

When this setting is enabled, Longhorn will retain the least instance-manager PodDisruptionBudget as possible. Each volume will have at least one replica under the protection of an instance-manager PodDisruptionBudget while no redundant PodDisruptionBudget blocking the Cluster Autoscaler from from scaling down.

When this setting is enabled, Longhorn will also add cluster-autoscaler.kubernetes.io/safe-to-evict annotation to Longhorn workloads that are not backed by a Kubernetes built-in workload controller or are using local storage mounts.

Replica rebuilding could be expensive because nodes with reusable replicas could get removed by the Kubernetes Cluster Autoscaler.