Skip to content
Branch: master
Find file History

Files

Permalink
Type Name Latest commit message Commit time
..
Failed to load latest commit information.
cloudprovider Caches should be updated after async PUT succeeds Apr 6, 2020
clusterstate Fix passing convention for metav1.DeleteOptions Mar 10, 2020
config Add support for passing in custom ignore labels Mar 17, 2020
context Add ClusterSnapshot to AutoscalingContext Feb 4, 2020
core Placement hinting in filter_out_schedulable.go Mar 24, 2020
estimator Forget FakeNodeInfoForNodeName ever existed Feb 21, 2020
expander priority expander: Document skipping behavior for unmatched groups Oct 9, 2019
hack Make k8s fork configurable in update vendor Feb 13, 2020
metrics Fixes around metrics/ handler Nov 22, 2019
processors Add NodeInfoProcessor for proccesing nodeInfosForNodeGroups Mar 20, 2020
proposals repair url in balance_similar.md Dec 30, 2019
simulator fix typo in snapshot var name Mar 10, 2020
utils Merge pull request #2875 from vivekbagade/update-vendor Mar 2, 2020
vendor Properly propagate scale-up failures in scale sets. Mar 24, 2020
version Bump Cluster Autoscaler version to 1.18.0 Mar 12, 2020
.gitignore priority expander Mar 22, 2019
Dockerfile Drop run.sh and use distroless as base image for CA Jun 11, 2019
FAQ.md Document hack/update-vendor.sh Mar 26, 2020
Makefile Disable go.mod integration in Makefile (remainder) Jan 3, 2020
OWNERS Remove piosz and add vivekbagade to cluster-autoscaler OWNERS Jan 3, 2020
README.md Add DigitalOcean as supported cloudprovider Jan 22, 2020
cloudbuild.yaml Add GCB config for cluster-autoscaler Feb 16, 2018
fix_gopath.sh Bug with with globbing Apr 8, 2019
go.mod Properly propagate scale-up failures in scale sets. Mar 24, 2020
go.mod-extra Remove github.com/aws/aws-sdk-go v1.23.18 from go.mod-extra Feb 4, 2020
go.sum Properly propagate scale-up failures in scale sets. Mar 24, 2020
main.go Add support for passing in custom ignore labels Mar 17, 2020
main_test.go Fix error format strings according to best practices from CodeReviewC… Jan 10, 2019
push_image.sh Pushes go to staging-k8s.gcr.io Jan 17, 2018
update_toc.py Fix update_toc.py script to stop appending empty lines Jun 30, 2017

README.md

Cluster Autoscaler

Introduction

Cluster Autoscaler is a tool that automatically adjusts the size of the Kubernetes cluster when one of the following conditions is true:

  • there are pods that failed to run in the cluster due to insufficient resources,
  • there are nodes in the cluster that have been underutilized for an extended period of time and their pods can be placed on other existing nodes.

FAQ/Documentation

An FAQ is available HERE.

You should also take a look at the notes and "gotchas" for your specific cloud provider:

Releases

We recommend using Cluster Autoscaler with the Kubernetes master version for which it was meant. The below combinations have been tested on GCP. We don't do cross version testing or compatibility testing in other environments. Some user reports indicate successful use of a newer version of Cluster Autoscaler with older clusters, however, there is always a chance that it won't work as expected.

Starting from Kubernetes 1.12, versioning scheme was changed to match Kubernetes minor releases exactly.

Kubernetes Version CA Version
1.16.X 1.16.X
1.15.X 1.15.X
1.14.X 1.14.X
1.13.X 1.13.X
1.12.X 1.12.X
1.11.X 1.3.X
1.10.X 1.2.X
1.9.X 1.1.X
1.8.X 1.0.X
1.7.X 0.6.X
1.6.X 0.5.X, 0.6.X*
1.5.X 0.4.X
1.4.X 0.3.X

*Cluster Autoscaler 0.5.X is the official version shipped with k8s 1.6. We've done some basic tests using k8s 1.6 / CA 0.6 and we're not aware of any problems with this setup. However, Cluster Autoscaler internally simulates Kubernetes' scheduler and using different versions of scheduler code can lead to subtle issues.

Notable changes

For CA 1.1.2 and later, please check release notes.

CA version 1.1.1:

  • Fixes around metrics in the multi-master configuration.
  • Fixes for unready nodes issues when quota is overrun.

CA version 1.1.0:

CA version 1.0.3:

  • Adds support for safe-to-evict annotation on pod. Pods with this annotation can be evicted even if they don't meet other requirements for it.
  • Fixes an issue when too many nodes with GPUs could be added during scale-up (https://github.com/kubernetes/kubernetes/issues/54959).

CA Version 1.0.2:

CA Version 1.0.1:

CA Version 1.0:

With this release we graduated Cluster Autoscaler to GA.

  • Support for 1000 nodes running 30 pods each. See: Scalability testing report
  • Support for 10 min graceful termination.
  • Improved eventing and monitoring.
  • Node allocatable support.
  • Removed Azure support. See: PR removing support with reasoning behind this decision
  • cluster-autoscaler.kubernetes.io/scale-down-disabled annotation for marking nodes that should not be scaled down.
  • scale-down-delay-after-delete and scale-down-delay-after-failure flags replaced scale-down-trial-interval

CA Version 0.6:

CA Version 0.5.4:

  • Fixes problems with node drain when pods are ignoring SIGTERM.

CA Version 0.5.3:

CA Version 0.5.2:

CA Version 0.5.1:

CA Version 0.5:

  • CA continues to operate even if some nodes are unready and is able to scale-down them.
  • CA exports its status to kube-system/cluster-autoscaler-status config map.
  • CA respects PodDisruptionBudgets.
  • Azure support.
  • Alpha support for dynamic config changes.
  • Multiple expanders to decide which node group to scale up.

CA Version 0.4:

  • Bulk empty node deletions.
  • Better scale-up estimator based on binpacking.
  • Improved logging.

CA Version 0.3:

  • AWS support.
  • Performance improvements around scale down.

Deployment

Cluster Autoscaler is designed to run on Kubernetes master node. This is the default deployment strategy on GCP. It is possible to run a customized deployment of Cluster Autoscaler on worker nodes, but extra care needs to be taken to ensure that Cluster Autoscaler remains up and running. Users can put it into kube-system namespace (Cluster Autoscaler doesn't scale down node with non-mirrored kube-system pods running on them) and set a priorityClassName: system-cluster-critical property on your pod spec (to prevent your pod from being evicted).

Supported cloud providers:

You can’t perform that action at this time.