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
We’ll review your cluster configuration and tell you honestly what’s costing you money.