Smart Kubernetes Autoscaling Powered By Schedules
GoKubeDownscaler acts as a horizontal autoscaler that reduces cloud costs by keeping workloads running only when needed. It scales workloads down during low-usage periods (like nights, weekends, and holidays) using user-defined schedules.
Kubernetes non-production environments and internal tools do not need to stay up and running 24/7!
Install In 1 Minute, Save All Year Round
Install GoKubeDownscaler with Helm in under a minute and start saving on your cloud bill from day one. Teams using GoKubeDownscaler achieve 70% savings after adopting it. No code changes required.
✓ Free And Open Source
$ helm repo add caas-team https://caas-team.github.io/helm-charts/
✓ Repository added successfully
$ helm install go-kube-downscaler caas-team/go-kube-downscaler
✓ go-kube-downscaler installed
✓ go-kube-downscaler installed
🚀 You are now ready to save 70% of your Kubernetes billMonthly Cloud Cost $
* This calculation is based on a 40-hour work week (scale-down during evenings, weekends)
How It Works
The most common way to use GoKubeDownscaler is to set a global schedule. The controller continuously reads the desired configuration and scales down workloads when needed. Once the downscaling window ends, the controller brings the workload back to its original state.
apiVersion: v1
kind: ConfigMap
metadata:
name: kube-downscaler
namespace: kube-downscaler
data:
DEFAULT_UPTIME: Mon-Fri 09:00-17:00 America/Los_Angeles|
EXCLUDE_NAMESPACES: kube-system,cilium,kube-downscalerNeed Further Customization?
GoKubeDownscaler can be tuned far beyond a simple schedule. Use annotations at namespace or workload level to override global scheduling. For example, define per-timezone schedules for teams in other countries, or set up permanent or temporary exclusions. Discover all options in our documentation
$ kubectl annotate namespace spanish-namespace downscaler/uptime="Mon-Fri 09:00-17:00 Europe/Madrid"
$
$ kubectl annotate deploy istiod -n istio-system downscaler/exclude="true"
$
$ kubectl annotate namespace webapp-hotfixbranch downscaler/exclude-until="2027-07-29T21:30:00Z"Fine-Grained Scheduling
Configure scheduling globally or via annotations at namespace or workload level. Supports flexible scheduling for multi-tenant clusters and teams across timezones.
Flexible Time Formats
Define scaling windows as recurring schedules (like Mon–Fri), RFC3339 timespans, or always/never rules. Treat time as a scaling dimension that best fits your infrastructure usage
Cloud Agnostic
Built for any Kubernetes distribution across AWS, GCP, Azure, and on-premises environments. Fully supports all Kubernetes resources and popular CRDs like KEDA, Prometheus, and Argo.
Fine-Grained Scheduling
Configure scheduling globally or via annotations at namespace or workload level. Supports flexible scheduling for multi-tenant clusters and teams across timezones.
Supported Resources
Kubernetes
Deployment, StatefulSet, DaemonSet, CronJob, HorizontalPodAutoscaler, PodDisruptionBudget, Job