kube-aws-autoscaler

Simple cluster autoscaler for AWS Auto Scaling Groups which sets the DesiredCapacity of one or more ASGs to the calculated number of nodes.

Goals:

  • support multiple Auto Scaling Groups
  • support resource buffer (overprovision fixed or percentage amount)
  • respect Availability Zones, i.e. make sure that all AZs provide enough capacity
  • be deterministic and predictable
    • i.e. the DesiredCapacity is only calculated based on the current cluster state
  • scale down slowly to mitigate service disruptions, i.e. at most one node at a time
  • support "elastic" workloads like daily up/down scaling
  • support AWS Spot Fleet (not yet implemented)
  • require a minimum amount of configuration (preferably none)
  • keep it simple

This autoscaler was initially created as a proof of concept and born out of frustration with the "official" cluster-autoscaler:

  • it only scales up when "it's too late" (pods are unschedulable)
  • it does not honor Availability Zones
  • it does not support multiple Auto Scaling Groups
  • it requires unnecessary configuration
  • the code is quite complex

Tell us about a new Kubernetes application

Newsletter

Never miss a thing! Sign up for our newsletter to stay updated.

About

Discover and share new Kubernetes applications

Navigation