← Back to Blog
ChecklistDecember 22, 2024·10 min read

Your End-of-Year Kubernetes Cost Audit Checklist for 2025

Don't carry 2024's waste into 2025. Use this checklist to audit your clusters, clean up orphaned resources, and start the new year with optimized infrastructure.

The week between Christmas and New Year is the perfect time to audit your Kubernetes costs. Traffic is low, deployments are frozen, and you finally have time to look at what's actually running in your clusters.

This checklist covers everything from quick wins (delete that staging cluster nobody uses) to strategic improvements (implement proper resource requests across all workloads).

⏱️
Time Required
2-4 hours for a thorough audit
💰
Expected Savings
20-40% of monthly Kubernetes spend

Quick Wins (30 minutes)

Low-effort, high-impact items you can fix today.

Delete unused namespaces

Find namespaces with no running pods. These often have orphaned ConfigMaps, Secrets, and PVCs.

kubectl get ns --no-headers | while read ns _; do
  pods=$(kubectl get pods -n $ns --no-headers 2>/dev/null | wc -l)
  [ "$pods" -eq 0 ] && echo "$ns: empty"
done
high

Find orphaned LoadBalancers

Each orphaned LB costs $15-20/month. Check for services with no endpoints.

kubectl get svc -A -o wide | grep LoadBalancer
high

Clean up old PersistentVolumeClaims

Unbound PVCs and Released PVs still incur storage costs.

kubectl get pvc -A | grep -v Bound
kubectl get pv | grep Released
medium

Delete completed/failed Jobs

Old Jobs can accumulate and clutter your cluster.

kubectl delete jobs -A --field-selector status.successful=1
medium

Resource Right-Sizing (1 hour)

The biggest source of waste in most clusters.

Audit memory requests vs actual usage

Compare requested memory to actual usage. Target: actual usage should be 60-80% of requests.

kubectl top pods -A --sort-by=memory
high

Audit CPU requests vs actual usage

CPU is often over-requested by 3-5x. Check actual utilization.

kubectl top pods -A --sort-by=cpu
high

Identify pods without resource requests

Pods without requests hurt scheduling efficiency and make cost attribution impossible.

kubectl get pods -A -o json | jq -r '.items[] |
  select(.spec.containers[].resources.requests == null) |
  "\(.metadata.namespace)/\(.metadata.name)"'
medium

Review HPA configurations

Check if HPAs are actually scaling. Many are configured but never trigger.

kubectl get hpa -A
low

Infrastructure Review (1 hour)

Node pools, instance types, and cluster-level optimizations.

Check node utilization

If nodes are less than 50% utilized, you're paying for empty capacity.

kubectl top nodes
high

Review node pool sizing

Are you using the right instance types? Smaller, more numerous nodes often provide better bin-packing than fewer large nodes.

medium

Evaluate spot/preemptible instances

For fault-tolerant workloads, spot instances offer 50-70% savings. Check which workloads could tolerate interruptions.

medium

Review reserved instance coverage

For stable baseline capacity, reserved instances (AWS) or committed use discounts (GCP) save 30-50%.

low

Environment Cleanup (30 minutes)

Dev, staging, and test environments often have the worst waste ratios.

Shut down idle dev clusters

Does that dev cluster need to run 24/7? Consider scaling to zero on nights/weekends.

high

Review staging environment sizing

Staging shouldn't mirror production resources. Use 25-50% of prod capacity.

high

Delete abandoned feature branch deployments

PR preview environments that were never cleaned up. Check for old release names.

medium

Audit CI/CD runner resources

Are your GitLab runners or Jenkins agents over-provisioned? They often have generous defaults.

low

2025 Governance Setup (30 minutes)

Set yourself up for success in the new year.

Implement LimitRanges

Prevent developers from requesting excessive resources by setting namespace-level defaults and maximums.

medium

Set up ResourceQuotas

Cap total resources per namespace to prevent runaway costs.

medium

Configure cost allocation labels

Add team, project, and environment labels to all workloads for better cost attribution.

low

Schedule monthly audits

Put a recurring calendar event to run this checklist monthly. Waste creeps back.

low

Skip the Manual Work

This checklist takes 2-4 hours manually. Or run our free audit tool and get a complete waste report in 60 seconds:

curl -sL wozz.io/audit.sh | bash

Runs locally, analyzes all the items in this checklist, and calculates exact dollar savings. No signup required.

Quick Reference

CategoryTimeTypical Savings
Quick Wins30 min$200-500/month
Resource Right-Sizing1 hour$500-2000/month
Infrastructure Review1 hour$300-1000/month
Environment Cleanup30 min$100-500/month
Total3 hours$1,100-4,000/month

Start 2025 with a lean cluster. Your CFO will thank you.