DEV Community

Citadel Cloud Management
Citadel Cloud Management

Posted on

Why Your Kubernetes Cluster is Costing 3x Too Much (And How to Fix It)

After auditing Kubernetes costs at 12 companies last year, I found the same 5 problems everywhere. The average cluster was spending 3x what it should.

Problem 1: Missing Resource Requests (saves 30-40%)

Most pods run without resource requests. Kubernetes can't bin-pack efficiently:

# BAD: No limits = every pod gets a whole node's worth of resources reserved
containers:
  - name: api
    image: myapp:latest

# GOOD: Right-sized limits
containers:
  - name: api
    image: myapp:latest
    resources:
      requests:
        cpu: 250m
        memory: 256Mi
      limits:
        cpu: 500m
        memory: 512Mi
Enter fullscreen mode Exit fullscreen mode

How to find right-size values:

kubectl top pods --all-namespaces --sort-by=memory | head -20
Enter fullscreen mode Exit fullscreen mode

Problem 2: Wrong Instance Types (saves 20-30%)

Everyone defaults to m5.xlarge. But most workloads are memory-bound, not CPU-bound:

  • API servers: r6i (memory optimized) — 15% cheaper for same workload
  • Batch jobs: Spot instances — 60-70% cheaper
  • Dev/staging: t3 burstable — 40% cheaper

Problem 3: No Pod Disruption Budgets (causes overspend)

Without PDBs, autoscaler can't safely remove nodes:

apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
  name: api-pdb
spec:
  minAvailable: 2
  selector:
    matchLabels:
      app: api
Enter fullscreen mode Exit fullscreen mode

Problem 4: Orphaned PVCs (hidden cost)

# Find PVCs not bound to any pod
kubectl get pvc --all-namespaces -o json | jq '.items[] | select(.status.phase=="Bound") | select(.metadata.deletionTimestamp==null) | .metadata.name'
Enter fullscreen mode Exit fullscreen mode

At $0.10/GB/month for gp3, a forgotten 100GB PVC costs $10/month doing nothing.

Problem 5: No Cost Allocation Tags

Without tags, you can't track which team/service is spending what:

# Tag all namespaces with cost center
kubectl label namespace production cost-center=engineering
kubectl label namespace staging cost-center=engineering-dev
Enter fullscreen mode Exit fullscreen mode

Full K8s Cost Optimization Guide

I maintain production-ready DevOps resources including K8s cost optimization playbooks at Citadel Cloud Management.

17 free cloud courses including Kubernetes: Free Courses

What's your biggest K8s cost challenge?

Top comments (0)