Scale-to-zero with wake-on-request for Kubernetes. Sleep idle services, wake them instantly when someone visits the URL.
Most clusters run dozens of services 24/7, but only a few are actively used at any time. The rest burn resources doing nothing.
Two parts: sleeping (scheduled scale-down) and waking (on-demand scale-up). The whole cycle is automatic.
Scaled to 0 replicas by kube-downscaler
Saving 100m CPU and 256Mi RAM
kube-downscaler reads the downscaler/uptime annotation. Outside the configured window, it scales replicas to 0. Pod terminates, resources freed.
Hours later, someone opens wiki.example.com in their browser. The request hits the ingress controller.
No endpoints exist (0 replicas). The custom-http-errors: "503" annotation tells NGINX to forward to kube-snorlax.
Reads the X-Service-Name header, patches deployment replicas to 1 via the K8s API, and sets a downscaler/last-wakeup timestamp.
A clean loading page with a live elapsed timer, estimated wake time based on that service's history, and a progress bar. No more wondering if something is broken — you see exactly how long it'll take.
Pod starts (~15–60s). Next refresh routes through ingress normally — user lands on the real app. Grace period prevents immediate re-sleep.
Single pod. ~25m CPU, ~64Mi RAM. Flask + gunicorn. No operator, no CRDs, no sidecars.
Only needs get + patch on deployments. No cluster-admin, no secrets access.
Install in one command. Published to GitHub Pages and GHCR as OCI artifact.
NGINX, Traefik, MetalLB, cloud LBs. EKS, GKE, AKS, k3s, kind, minikube.
Works with ArgoCD and FluxCD. ignoreDifferences pattern for replica conflicts.
Per-service uptime windows with timezone support. Grace period prevents re-sleep after wake.
Three ways to get started. Pick whichever suits your setup.
# Add the Helm repo helm repo add kube-snorlax https://vineethvijay.github.io/kube-snorlax helm repo update # Install helm install kube-snorlax kube-snorlax/kube-snorlax
# No repo add needed — pull directly from GHCR helm install kube-snorlax oci://ghcr.io/vineethvijay/charts/kube-snorlax --version 1.0.0
git clone https://github.com/vineethvijay/kube-snorlax.git helm install kube-snorlax ./kube-snorlax/helm/kube-snorlax
Native support via custom-http-errors
Error pages middleware
L2 and BGP modes
AWS ALB/NLB, GCP, Azure
Schedule-based scale-to-zero
Cron trigger for scaling
GitOps with ignoreDifferences
EKS, GKE, AKS, k3s, kind