Explanation
Why the waste happens and who it affects.
PVCs can continue to retain Persistent Disks, Services may continue to expose public IPs and provision load balancers, and node pools are often oversized for steady-state demand. This results in cloud spend that is not aligned with application activity.
Organizations that lack visibility into Kubernetes-level resource usage often miss these inefficiencies because GCP billing tools surface usage at the infrastructure level, not the Kubernetes object level.
Billing model
The pricing dimensions that drive this cost.
GKE charges a flat cluster management fee for every cluster, Standard or Autopilot (a monthly free tier credit covers one zonal Standard or Autopilot cluster per billing account), plus node VMs in Standard mode or requested pod resources in Autopilot mode, Persistent Disks via PVCs, and external IP addresses and load balancers from exposed Services. Orphaned objects like unused volumes, idle services, and overprovisioned node pools continue to generate charges even when not tied to running workloads.
How to detect
8 checks to find it in your estate.
- Identify Persistent Disks not mounted by any pod via PVCs
- Find Services that expose public IPs or external load balancers with no active backend
- Review node pools for consistently low utilization
- Audit for stale namespaces or environments created by CI/CD pipelines
- Check for lingering objects from terminated jobs or Helm charts
- Look for secrets or config maps unused by any workload
- Check for unused Network Endpoint Groups (NEGs) from deleted services
- Audit for abandoned Ingress resources that may retain Global Load Balancers
How to fix
5 ways to remove the waste.
- Delete PVCs with unmounted Persistent Disks
- Clean up Services with no backend to release IPs and load balancers
- Scale down overprovisioned node pools
- Prune unused namespaces and workloads
- Implement governance for ephemeral environments and pipelines
Documentation
Vendor references for pricing and configuration.