5 Kubernetes Mistakes That Cost You £3,000+/Month

5 Kubernetes Mistakes That Cost You £3,000+/Month

Kubernetes is powerful. It’s also expensive when configured badly.

After auditing 20+ K8s clusters, we see the same 5 mistakes costing teams £3,000-£10,000/month in unnecessary cloud spend.

Mistake 1: Running Everything in the Same Node Pool

What we see: One large node pool with identical instance types running all workloads.

Why it’s expensive: Your background jobs don’t need the same expensive compute-optimized instances as your API servers. But if they’re all in the same node pool, they get the same hardware.

Real example: SaaS company running background jobs on c5.2xlarge instances (£0.34/hour). Jobs needed 1 CPU and 2GB RAM. Actual requirement: t3.medium (£0.042/hour).

Cost: Running 10 background workers 24/7 = £890/month wasted.

Fix:

  • Create separate node pools for different workload types
  • API servers: compute-optimized (c5 family)
  • Background jobs: burstable (t3 family)
  • Data processing: memory-optimized (r5 family)
  • Use node selectors and taints/tolerations to schedule pods correctly

Mistake 2: No Resource Limits = Overprovisioned Nodes

What we see: Pods deployed without CPU/memory requests and limits.

Why it’s expensive: Kubernetes can’t pack pods efficiently. You end up with 10 nodes at 30% utilization when you could run on 4 nodes at 75% utilization.

Real example: E-commerce platform running 40 pods across 12 nodes. Average node utilization: 32%.

After setting proper resource requests/limits: 40 pods across 5 nodes. Average utilization: 78%.

Savings: 7 fewer m5.xlarge nodes = £1,260/month.

Fix:

resources:
  requests:
    memory: "256Mi"
    cpu: "100m"
  limits:
    memory: "512Mi"
    cpu: "500m"

Use Vertical Pod Autoscaler (VPA) to right-size these values based on actual usage.

Mistake 3: Always-On Development/Staging Clusters

What we see: Separate K8s clusters for dev, staging, and production – all running 24/7.

Why it’s expensive: Your dev cluster gets used 40 hours/week. You’re paying for 168 hours/week.

Real example: Startup running 3 identical clusters (production, staging, dev):

  • Production: 8 nodes (essential, must run 24/7)
  • Staging: 6 nodes (used 9am-6pm, Mon-Fri)
  • Dev: 4 nodes (used sporadically)

Cost: Staging cluster running 24/7 = £2,880/month. Actually needed ~40 hours/week.

Fix: Automate cluster shutdown for non-production environments:

  • Staging: Auto-scale to 0 nodes outside working hours = save 75%
  • Dev: Use ephemeral clusters that spin up on-demand
  • Or consolidate dev/staging into production cluster with namespace isolation

Savings: £2,160/month (staging) + £1,800/month (dev) = £3,960/month.

Mistake 4: Persistent Volumes That Never Get Deleted

What we see: Hundreds of EBS volumes attached to deleted pods, still incurring charges.

Why it’s expensive: When pods get deleted, PersistentVolumes often stick around due to `Retain` reclaim policies.

Real example: Found 120 orphaned EBS volumes (100GB each) from old staging deployments.

Cost: 120 × 100GB × £0.08/GB = £960/month for storage nobody was using.

Fix:

  • Set `reclaimPolicy: Delete` for non-production PVCs
  • Audit volumes monthly: kubectl get pv | grep Released
  • Automate cleanup with a CronJob that deletes Released PVs older than 7 days

Mistake 5: No Cluster Autoscaler (or Bad Configuration)

What we see: Either no autoscaling at all, or Cluster Autoscaler configured with overly conservative settings.

Why it’s expensive: Manual node management means you overprovision to handle peak load, then pay for idle capacity 90% of the time.

Real example: API that sees 10x traffic during business hours (9am-5pm). Team manually provisioned for peak load = 24/7 overprovisioning.

Cost: Running 15 nodes 24/7 when they only needed 15 nodes for 8 hours/day.

Wasted capacity: 15 nodes × 16 hours/day × 30 days = £3,600/month in idle compute.

Fix: Enable Cluster Autoscaler with aggressive scale-down:

--scale-down-delay-after-add=5m
--scale-down-unneeded-time=5m
--scale-down-utilization-threshold=0.5

Pair with Horizontal Pod Autoscaler (HPA) for pod-level scaling:

kubectl autoscale deployment api-server 
  --cpu-percent=70 
  --min=2 
  --max=20

The Compounding Effect

Here’s the scary part: most teams have 3-4 of these mistakes running simultaneously.

Total monthly waste: £890 + £1,260 + £3,960 + £960 + £3,600 = £10,670/month

That’s £128,040/year in pure infrastructure waste.

What To Do About It

If you’re running Kubernetes in production and haven’t done a cost audit in the last 6 months, you’re almost certainly overspending.

Our 2-week Infrastructure Audit includes:

  • Complete K8s cluster cost analysis
  • Node pool optimization recommendations
  • Resource request/limit right-sizing
  • Autoscaling configuration review
  • We implement the top 5 quick wins

Fixed price: £3,000
Delivery: 2 weeks
Typical ROI: 10-15x in first year

Book a Free Discovery Call

We’ll review your cluster configuration and tell you honestly what’s costing you money.