Escalator is a batch or job optimized horizontal autoscaler for Kubernetes that scales clusters based on workload demands while respecting job completion requirements.
Escalator addresses the problem that Kubernetes' default autoscaler scales too slowly for large batch workloads and forcibly drains nodes before jobs complete. The tool calculates cluster requests and capacity to decide whether to scale up, down, or maintain current scale, and crucially, it waits until non-daemonset pods have finished executing before terminating nodes. It prioritizes rapid scale-up to prevent pods from remaining pending, and it terminates the oldest nodes first when scaling down. The tool supports slack space configuration to handle sudden spikes in scheduled pods and can operate on selected auto-scaling groups, allowing the default Kubernetes autoscaler to continue managing service-based workloads independently.
Teams running large batch or job-based workloads that cannot tolerate forced pod eviction should consider Escalator. It works alongside rather than replacing the default autoscaler, making it suitable for mixed clusters handling both batch jobs and traditional services. The tool currently supports AWS auto-scaling groups. Escalator includes leader election for high-availability deployments, respects cordoned nodes for debugging purposes, and provides scaling and utilization metrics. It supports multiple instance types within a node group and requires Kubernetes version 1.24 or later.
The project maintains a structured contribution process with requirements for tests on new features and bug fixes, enforced code style using goreturns, and a preference for discussing larger changes via issues before implementation. Contributors must sign a Contributor License Agreement before their work is accepted.