autoscaler/cluster-autoscaler
Kubernetes Prow Robot 1599bac534
Merge pull request #1679 from lsytj0413/random-expander
fix(expander): avoid panic when random expander
2019-02-13 01:58:50 -08:00
..
Godeps Update godeps 2018-11-26 17:30:31 +01:00
_override Upgrade AKS API for v19.1.1 to fix AAD bug 2018-11-19 16:51:03 +08:00
cloudprovider Update AWS documentation and CA version in examples 2019-02-11 22:26:39 -08:00
clusterstate Extend backoff interface with NodeInfo and error information 2019-01-09 11:25:34 +01:00
config Added a new method that uses pod packing to filter schedulable pods 2019-01-25 16:09:51 +05:30
context Use k8s.io/klog instead github.com/golang/glog 2018-11-26 17:30:31 +01:00
core Cache exemplar ready node for each node group 2019-02-11 17:40:58 +01:00
estimator Account for kernel reserved memory in capacity calculations 2019-02-08 17:04:07 +01:00
expander fix(expander): avoid panic when random expander 2019-02-13 11:44:54 +08:00
metrics Tainting unneeded nodes as PreferNoSchedule 2019-01-21 13:06:50 +01:00
processors Fix some typos 2018-12-03 15:59:16 +08:00
proposals Fix some spelling errors 2018-12-08 01:10:18 +08:00
simulator Fix error format strings according to best practices from CodeReviewComments 2019-01-11 09:10:31 +13:00
utils Account for kernel reserved memory in capacity calculations 2019-02-08 17:04:07 +01:00
vendor Update godeps 2018-11-26 17:30:31 +01:00
.gitignore
Dockerfile Update base debian image for Cluster Autoscaler 2018-12-05 16:20:49 +01:00
FAQ.md Correct apiVersion in dynamic provisionning 1.11 2019-02-07 15:30:51 +01:00
Makefile Keep one place where default base image for Cluster Austoscaler is defined 2018-12-07 12:45:35 +01:00
OWNERS Update OWNERS 2018-09-18 11:11:20 +02:00
README.md Remove mention of the rescheduler 2018-12-21 08:43:01 -08:00
cloudbuild.yaml Add GCB config for cluster-autoscaler 2018-02-15 16:03:35 -08:00
fix_gopath.sh Update fix_gopath.sh with new overrides 2018-07-26 20:34:47 +08:00
kubernetes.sync Update godeps 2018-11-26 17:30:31 +01:00
main.go Account for kernel reserved memory in capacity calculations 2019-02-08 17:04:07 +01:00
main_test.go Fix error format strings according to best practices from CodeReviewComments 2019-01-11 09:10:31 +13:00
push_image.sh Pushes go to staging-k8s.gcr.io 2018-01-17 14:16:38 -08:00
run.sh
update_toc.py
version.go Cluster Autoscaler 1.3.0-beta.1 2018-06-11 14:41:21 +02:00

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

Is available HERE.

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.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-deleteandscale-down-delay-after-failureflags replacedscale-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: