Show HN: GoKubeDownscaler – Off-Hours Kubernetes Scaling Cuts Costs by 70%

samuel_esp1 pts0 comments

GoKubeDownscaler: Reduce Kubernetes Costs Off-Hours

Skip to main content

⭐️ If you like GoKubeDownscaler, give it a star on GitHub! ⭐️⭐️ Give it a star on GitHub! ⭐️

Smart Kubernetes Autoscaling Powered By Schedules<br>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<br>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<br>install.sh<br>$ helm repo add caas-team https://caas-team.github.io/helm-charts/<br>✓ Repository added successfully

$ helm install go-kube-downscaler caas-team/go-kube-downscaler<br>✓ go-kube-downscaler installed

✓ go-kube-downscaler installed<br>🚀 You are now ready to save 70% of your Kubernetes bill

Monthly Cloud Cost $

Jan

Feb

Mar

Apr

May

Jun

Install<br>BeforeAfter−70% Of Kubernetes Costs<br>* This calculation is based on a 40-hour work week (scale-down during evenings, weekends)

How It Works<br>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.<br>configmap.yaml<br>apiVersion: v1<br>kind: ConfigMap<br>metadata:<br>name: kube-downscaler<br>namespace: kube-downscaler<br>data:<br>DEFAULT_UPTIME: Mon-Fri 09:00-17:00 America/Los_Angeles|<br>EXCLUDE_NAMESPACES: kube-system,cilium,kube-downscaler

Need Further Customization?<br>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<br>$ kubectl annotate namespace spanish-namespace downscaler/uptime="Mon-Fri 09:00-17:00 Europe/Madrid"<br>$ kubectl annotate deploy istiod -n istio-system downscaler/exclude="true"<br>$ kubectl annotate namespace webapp-hotfixbranch downscaler/exclude-until="2027-07-29T21:30:00Z"

Fine-Grained Scheduling<br>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<br>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<br>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<br>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<br>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<br>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.

Get Started<br>Star on GitHub

Supported Resources

Prometheus<br>Prometheuses

Argo<br>Rollouts

Kubernetes<br>Deployment, StatefulSet, DaemonSet, CronJob, HorizontalPodAutoscaler, PodDisruptionBudget, Job

Keda<br>ScaledObjects

Zalando<br>Stacks

GitHub Actions<br>AutoscalingRunnerSet

PrometheusesRolloutsDeploymentStatefulSetDaemonSetCronJobHorizontalPodAutoscalerPodDisruptionBudgetJobScaledObjectsStacksAutoscalingRunnerSet

kubernetes downscaler gokubedownscaler kube namespace scheduling

Related Articles