Kube Downscaler — screenshot of codeberg.org

Kube Downscaler

Kube Downscaler is a pragmatic tool for automatically scaling down Kubernetes deployments and other workloads during off-peak hours, like weekends or nights, to optimize resource usage and costs. I find it useful for non-production environments.

Visit codeberg.org →

Questions & Answers

What is Kube Downscaler?
Kube Downscaler is a Python-based tool that automatically scales down Kubernetes workloads such as Deployments, StatefulSets, HorizontalPodAutoscalers, and CronJobs during specified non-work hours to save resources and costs.
Who would benefit from using Kube Downscaler?
It is designed for Kubernetes administrators and developers managing clusters, especially test or internal tooling clusters, where workloads don't need to run 24/7. It helps reduce cloud costs by suspending unnecessary services.
How does Kube Downscaler manage scaling compared to other Kubernetes scaling tools?
Kube Downscaler focuses on time-based scaling down, using configurable uptime/downtime schedules defined by annotations on workloads or namespaces, or via CLI arguments. This allows for fine-grained, automated 'pausing' of services during specific periods rather than just reactive scaling based on metrics.
When is the best time to deploy Kube Downscaler?
It's best used in environments like development, staging, or internal tool clusters where services are primarily active during business hours. It's particularly effective when combined with an elastic cluster autoscaler to realize actual cost savings from scaled-down pods.
Can Kube Downscaler scale to a minimum number of replicas instead of zero?
Yes, by default Kube Downscaler scales workloads down to zero replicas. However, you can specify a minimum number of replicas, such as one, using the "downscaler/downtime-replicas" annotation on the deployment or its namespace, or via a CLI argument.