This project is supported by:
Custom Pod Autoscaler
This is the Custom Pod Autoscaler (CPA) code and base images.
The CPA is part of the Custom Pod Autoscaler Framework.
What is it?
A Custom Pod Autoscaler is a Kubernetes autoscaler that is customised and user
created. Custom Pod Autoscalers are designed to be similar to the Kubernetes
Horizontal Pod Autoscaler. The Custom Pod Autoscaler framework allows easier and
faster development of Kubernetes autoscalers.
A Custom Pod Autoscaler can be created by using this project, extending the Docker base images provided and inserting your own logic; see the examples for more information.
- Supports any language, environment and framework; the only requirement is it must be startable by a shell command.
- Supports all configuration options of the Horizontal Pod Autoscaler (downscale stabilisation, sync period etc.)
- Allows fast and easy prototyping and development.
- Abstracts away all complicated Kubernetes API interactions.
- Exposes a HTTP REST API for integration with wider systems/manual intervention.
- Can write autoscalers with limited Kubernetes API or lifecycle knowledge.
- Configuration at build time or deploy time.
- Allows scaling to and from zero.
- Can be configured without master node access, can be configured on managed providers such as EKS or GKE.
How does it work?
A Custom Pod Autoscaler has a base program (defined in this repository) that
handles interacting with user logic, for example by using shell commands and
piping data into them.
When developing a Custom Pod Autoscaler you define logic for two stages:
- Metric gathering - collecting or generating metrics; can be calling metrics APIs, running calculations locally, making HTTP requests.
- Evaluating metrics - taking these gathered metrics and using them to decide how many replicas a resource should have.
These two pieces of logic are all the custom logic required to build a Custom Pod Autoscaler, the base program will handle all Kubernetes API interactions for scaling/retrieving resources.
Developing this project
Developing this project requires these dependencies:
To view docs locally, requires:
make- builds the CPA binary.
make docker- builds the CPA base images.
make lint- lints the code.
make unittest- runs the unit tests.
make vendor- generates a vendor folder.
make doc- hosts the documentation locally, at