autoscaler/cluster-autoscaler
Karol Gołąb 74b540fdab Remove DynamicAutoscaler since it's unused (#851)
* Remove DynamicAutoscaler since it's unused

* Remove configmap flag with its unused-elsewhere dependecies

* gofmt
2018-05-14 20:22:42 +02:00
..
Godeps Add containerservice from azure-sdk-go for AKS/ACS autoscaler. 2018-05-07 07:42:41 -07:00
_override/google.golang.org Add appropriate license to _override 2017-11-28 14:31:20 +01:00
cloudprovider Fix autoscaler yaml manitests for AKS 2018-05-09 16:14:46 +08:00
clusterstate Update types.go 2018-03-30 00:13:35 +08:00
config Remove DynamicAutoscaler since it's unused (#851) 2018-05-14 20:22:42 +02:00
context Refactor cluster autoscaler builder and add pod list processor. 2018-04-26 12:37:51 +02:00
core Remove DynamicAutoscaler since it's unused (#851) 2018-05-14 20:22:42 +02:00
deploy bump container image version to 0.6.0 2017-08-09 16:03:09 -07:00
estimator Use less verbose sort.Slice instead sort.Sort 2018-04-25 17:47:06 +02:00
expander Compilation fix 2018-03-20 20:11:36 +01:00
metrics Export unregistered node count metric 2018-01-16 16:56:40 +01:00
proposals "N1-standard"->"n1-standard" 2018-03-29 00:43:00 +08:00
simulator Add missing classifier 2018-05-08 16:25:06 +02:00
utils Merge pull request #830 from aleksandra-malinowska/stateful-set-drain 2018-05-11 13:47:53 +02:00
vendor Add containerservice from azure-sdk-go for AKS/ACS autoscaler. 2018-05-07 07:42:41 -07:00
.gitignore Cluster-Autoscaler - Kubernetes client deps 2016-04-20 11:49:38 +02:00
Dockerfile 2nd pass: k8s.gcr.io 2018-04-03 12:01:02 -07:00
FAQ.md Update FAQ with note on referring kubernetes.sync 2018-05-03 16:14:33 -07:00
Makefile Extra checks when pushing an image to gcr repository 2017-11-17 15:49:52 +01:00
OWNERS Add reviewers 2018-02-14 20:30:53 +08:00
README.md Add 1.2 as recommended version with Kubernetes 1.10 2018-03-26 13:11:53 +02:00
cloudbuild.yaml Add GCB config for cluster-autoscaler 2018-02-15 16:03:35 -08:00
fix_gopath.sh Fix the '_' for the fix gopath script name. 2018-04-19 00:35:24 +00:00
kubernetes.sync Update kubernetes.sync 2018-03-20 20:13:15 +01:00
main.go Remove DynamicAutoscaler since it's unused (#851) 2018-05-14 20:22:42 +02:00
push_image.sh Pushes go to staging-k8s.gcr.io 2018-01-17 14:16:38 -08:00
run.sh Cluster-Autoscaler: added wrapper script to pass signals 2017-02-28 17:39:29 +01:00
update_toc.py Fix update_toc.py script to stop appending empty lines 2017-06-30 14:18:18 +02:00
version.go Cluster Autoscaler 1.2.0 2018-03-23 12:02:18 +01:00

README.md

Cluster Autoscaler

Introduction

Cluster Autoscaler is a tool that automatically adjusts the size of the Kubernetes cluster when:

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

FAQ/Documentation

Is available HERE.

Releases

We strongly recommend using Cluster Autoscaler with version for which it was meant. We don't do ANY cross version testing so if you put the newest Cluster Autoscaler on an old cluster there is a big chance that it won't work as expected.

Kubernetes Version CA Version
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, CA internally simulates k8s scheduler and using different versions of scheduler code can lead to subtle issues.

Notable changes

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 runs on the Kubernetes master node (at least in the default setup on GCE and GKE). It is possible to run customized Cluster Autoscaler inside of the cluster but then extra care needs to be taken to ensure that Cluster Autoscaler is up and running. User can put it into kube-system namespace (Cluster Autoscaler doesn't scale down node with non-manifest based kube-system pods running on them) and mark with scheduler.alpha.kubernetes.io/critical-pod annotation (so that the rescheduler, if enabled, will kill other pods to make space for it to run).

Right now it is possible to run Cluster Autoscaler on: