Speak to an Expert

Engineering

How We Keep Kubernetes Costs Under ₹50K/Month for Early-Stage SaaS

Kubernetes doesn't have to be expensive. Here's the stack and practices we use to keep production K8s costs under ₹50K monthly for early-stage Indian SaaS.

Niranjana
Jun 19, 2026 · 8 min read
How We Keep Kubernetes Costs Under ₹50K/Month for Early-Stage SaaS

How We Keep Kubernetes Costs Under ₹50K/Month for Early-Stage SaaS

Kubernetes is famous for being expensive. It doesn't have to be. With sensible choices, an early-stage SaaS can run production K8s under ₹50,000 per month while still getting all the operational benefits. Here's how.

Key takeaways

  • Use a managed control plane (EKS, GKE, AKS), your control plane should be ~$70/mo, not $700.
  • Node pool: 2-4 small (4 vCPU) Spot instances + 1 small on-demand for stateful workloads.
  • Cluster autoscaler + HPA configured properly.
  • Aggressive cost monitoring from day one.
  • Don't over-architect, most early-stage SaaS doesn't need service mesh, custom ingress, or complex multi-region.

Why this matters

A poorly-sized K8s cluster easily costs ₹3-5 lakh/month. A well-sized one costs ₹30-50K. The difference isn't expertise level, it's a few specific choices.

The stack

Managed control plane

EKS, GKE, or AKS, pick whichever matches your cloud. They cost about $70-80/month for the control plane itself. Don't self-host the control plane in early-stage.

Node pool

For most early-stage SaaS:

  • 3 × Spot instances (4 vCPU, 16GB RAM each), main workloads
  • 1 × on-demand instance (4 vCPU, 16GB RAM), stateful workloads that can't tolerate Spot interruption

This is enough to run a typical mid-complexity SaaS. Total node cost on AWS Spot in Mumbai region: ~₹18-25K/month.

Storage

EBS volumes for stateful pods. Provision storage thoughtfully, under-provisioned storage kills you with IOPS bills.

Networking

Stick with the cloud's default load balancer + NodePort/Ingress patterns. Skip service mesh until you have a reason.

Autoscaling

  • Cluster Autoscaler to add/remove nodes based on pod scheduling pressure
  • HPA to scale pod replicas based on CPU/memory
  • VPA in recommend-only mode (so you size correctly)

Configure thoughtfully, bad HPA = thrashing replicas = bad UX.

Spot strategy

Spot instances can disappear with 2-minute notice. Mitigate via:

  • Multiple instance types in the pool (better availability)
  • Graceful pod termination
  • StatefulSets stay on on-demand
  • Sentinel/observability stays on on-demand

Cost monitoring

  • AWS Cost Explorer with tagging (every K8s namespace tagged for cost attribution)
  • Kubecost (free tier) for per-namespace cost visibility
  • Weekly review of biggest line items

What we recommend

Don't pre-build for scale you don't have. Start with this stack; resize when load forces you. Many SaaS at 50K-500K monthly visitors fit comfortably in this footprint.

Common pitfalls

Over-provisioning "to be safe." Costs 2-3× actual need.

Skipping observability. When something breaks, you'll wish you had it.

Service mesh too early. Istio/Linkerd are great but add complexity.

Multi-region too early. Single-region with good backups serves most early-stage just fine.

FAQs

What about Cloud Run / Fargate? Lower ops burden, sometimes more expensive at scale, sometimes less. Worth considering if you don't need K8s-specific features.

Karpenter vs Cluster Autoscaler? Karpenter is faster and more flexible, worth the switch once familiar.

ARM nodes? Yes, Graviton2/3 saves ~20% at near-equivalent performance.


Talk to Techpuvi about cloud and DevOps work.

#Kubernetes#Cost Optimization#DevOps#Cloud#FinOps
Niranjana

Niranjana serves as a Senior Architect at Techpuvi. She brings more than 15 years of experience in software development, having built several products from the ground up. Choosing to specialize as a full-stack engineer, she maintains a strong commitment to continuous learning.