Originally published at aicloudstrategist.com/blog/eks-cost-audit-checklist-india.html. This is a cross-post for the dev.to community.
EKS Cost Audit for Series A-C India SaaS: The 12-Point Checklist
By Anushka B, Founder · 2026-04-22 · 10 min read
EKS bills for Indian Series A-C SaaS companies look clean in Cost Explorer — one line item for EC2, one for EKS control plane — and hide 40-55% waste underneath. This is the 12-point audit we run to surface it, with Mumbai INR numbers.
Why EKS hides waste better than any other AWS service
Cost Explorer groups EKS node costs under "EC2 - Other" or a flat m6i/c6i line. It doesn't know which namespace, team, or service used the capacity. A pod running idle at 2% CPU on an m6i.2xlarge looks identical to a fully-packed node on the bill. Without a Kubecost or OpenCost layer, nobody sees which workload is wasting what. That is why EKS stacks drift — the feedback loop is broken.
Our 12-point checklist forces the waste to the surface, whether or not you run Kubecost.
The 12-point EKS cost audit checklist
Control plane count — ₹6,060/month per cluster in Mumbai ($0.10/hour). We routinely see Series B startups with 7-12 clusters (per-env + per-team + per-region) when 3 would do. Consolidating to prod/staging/dev saves ₹36-54K/month on control-plane alone.
Cluster Autoscaler vs Karpenter — Karpenter bin-packs better, consolidates nodes aggressively, and picks the cheapest compatible instance family. A well-tuned Karpenter typically cuts node costs 15-25% versus Cluster Autoscaler on the same workload.
Node group Spot % — stateless workloads should be 70-90% Spot. Most Series A stacks we audit are at 0-30%. Gap = 18-30% savings on affected compute.
Instance family diversity — a Karpenter NodePool with only m6i is brittle on Spot. Add c6i, r6i, m5, c5, r5 to the diversification set; Spot interruption drops from 8% to under 3%.
Pod requests vs actual usage — the biggest win. Most Indian SaaS stacks we audit have requests set 3-5x higher than P95 usage because the default was copied from a Stack Overflow answer in 2021. VPA recommendations (off-policy) flag the gap.
Bin-packing efficiency — target > 70% node CPU utilisation post-packing. If you're below 50%, either requests are wrong, pod-antiaffinity is too strict, or topology spread constraints are over-specified.
Idle namespaces — dev-feature-123 namespace that a dev stood up six months ago, with a ₹40K/month footprint. Quota + TTL + weekly sweep.
Over-sized system add-ons — Prometheus scraping every 5s on a 200-pod cluster, stored on gp3. Istio control plane with 4 pilots and 3 ingress gateways for 200 rps. Right-size the platform before the apps.
Load Balancer sprawl — every Ingress creating its own ALB. Consolidate to a single ALB with path-based routing, or use AWS Load Balancer Controller with
ingress.classmerging. ALB in Mumbai costs ₹1,840/month per LB + LCU charges.EBS PVC orphans — PVCs bound to StatefulSets that were deleted but retained their volumes. Also: reclaim policy set to Retain on Helm-deleted releases. See orphaned EBS volumes.
CloudWatch Container Insights — ₹0.50/metric/month. Default full-fidelity on 500 pods = ₹40-60K/month you may not need. Consider Prometheus + Grafana with CloudWatch as a cold tier.
Cross-AZ pod communication — ₹0.83/GB. Topology-aware routing, service topology preferences, and istio
destinationRulewith localityLbSetting cut inter-AZ data transfer 40-70%. See Kubernetes cost questions.
The Karpenter math, in INR
| Scenario | Monthly cost (INR) | Notes |
|---|---|---|
| 60 pods, Cluster Autoscaler, m6i.2xlarge only, On-Demand | ₹4.8 lakh | ~55% bin-pack efficiency |
| Same, Karpenter, mixed m/c/r families, On-Demand | ₹3.6 lakh | ~72% bin-pack efficiency, 25% savings |
| Same, Karpenter, 70% Spot + 30% OD | ₹1.9 lakh | Additional ~47% savings on Spot portion |
| Same, Karpenter, Spot + 1y Compute Savings Plan on OD portion | ₹1.6 lakh | Final optimised steady state |
From ₹4.8 lakh to ₹1.6 lakh — 67% total reduction — on the same workload. The engineering investment is 2-3 dev-weeks and one platform-eng-week for Karpenter tuning.
What we see in EKS audits: 5 recurring patterns
Requests = limits on every pod. Kills bin-packing. Set requests to P95, limits to P99 or 2x request, and let the scheduler do its job.
Three-AZ HA for dev clusters. Dev doesn't need three AZs. One AZ cuts cross-AZ data transfer to zero and halves the ALB cost.
Horizontal Pod Autoscaler on CPU only for an IO-bound workload. The HPA never scales because CPU is at 20% while the pod is queue-blocked. Use custom metrics (queue depth, request latency).
Sidecar proliferation. Envoy + log-shipper + metric-shipper + secrets-injector + init-containers per pod, using 300-500m CPU per pod for platform concerns. Consolidate or move to DaemonSet.
EKS managed node groups pinned to a single instance type for "predictability." Eliminates Spot capacity diversification benefits.
EKS control plane and add-on cost in Mumbai
| Component | Cost | Notes |
|---|---|---|
| EKS control plane | ₹6,060/cluster/month | $0.10/hour, flat |
| EKS Auto Mode (2024+) | +12% on compute | Managed Karpenter + add-ons; only worth it below ~20 nodes |
| VPC CNI | Free | But ENI-per-pod on smaller instances caps pod density |
| AWS Load Balancer Controller | Free | Creates ALB/NLB which are charged separately |
| ALB per Ingress | ₹1,840/month + LCU | Consolidate with path routing |
| Fargate pod | ~3.5x EC2 cost | Good for tiny, bursty workloads only |
The Series A vs Series B vs Series C playbook differences
Series A (₹6-15 lakh/month EKS): focus on pod right-sizing + Spot + consolidating clusters. Skip Kubecost — use native cluster autoscaler metrics.
Series B (₹20-60 lakh/month EKS): add Karpenter, Kubecost or OpenCost, team-level chargeback via namespace tagging, multi-tenant cluster strategy.
Series C (₹80 lakh - 3 cr/month EKS): platform engineering team, custom Kubecost dashboards, automated policy enforcement via OPA/Gatekeeper, ResourceQuotas per team, governance KPIs to the CFO monthly.
Frequently asked questions
Q: Is EKS cheaper than self-managed Kubernetes or ECS?
ECS is cheaper for small, simple workloads (no control plane fee). Self-managed K8s is never cheaper once you cost engineer time. EKS wins at Series A+ once the complexity justifies managed control plane.
Q: Should we use Fargate or managed nodes?
Fargate is ~3.5x the cost of equivalent EC2 but removes node management. Use it for occasional jobs, cron tasks, or early-stage prototypes. For steady-state workloads over 10 pods, EC2 node groups with Karpenter win on cost.
Q: How much does Karpenter cost to run?
The Karpenter controller itself runs in a single pod using ~100m CPU and 128Mi memory. Effectively free. The saving comes from better instance selection and consolidation.
Q: Can you audit without Kubecost installed?
Yes. We pull namespace-level resource requests from the cluster, cross-reference with CloudWatch Container Insights metrics (if enabled) and the AWS CUR for instance-level cost. Not pod-perfect, but 85% accurate at the team/service level.
Q: Do Spot interruptions in Mumbai break production?
For stateful workloads yes. For stateless HTTP APIs with at least 2 replicas, a PodDisruptionBudget, and graceful shutdown handling, Spot interruptions cause zero user-visible impact. We've run Spot-heavy production for Indian SaaS for 3+ years without incident.
Q: What's the break-even for buying EC2 Savings Plans on an EKS stack?
Cover the bottom 70-80% of node steady-state with a 1-year Compute Savings Plan. Let Karpenter place the top 20-30% on Spot and uncommitted On-Demand. See our Savings Plans vs RI guide.
Q: Does your audit include Istio, Cilium, or service mesh tuning?
We flag obvious mesh-related waste (too many sidecars, non-local routing) but deep mesh tuning is a separate engagement. The free 24h audit covers the 80/20 of EKS cost, not mesh internals.
Related reading: Kubernetes cost questions · Orphaned EBS volumes · SaaS vertical · Cloud Cost service · AWS cost calculator
We run written 24-hour AWS cost audits. Founder-led. Free. No sales call. Send your last bill, get a PDF back. Request yours →
Top comments (0)