KubeadaptDocsBack to site
Sign inStart free
DocsAPI ReferenceCLI
  • Introduction
  • Getting Started
  • Capabilities
    • Connect a cluster
      • AWS
      • GCP
      • Azure
      • On-premises
    • Right-size your workloads
    • Monitor GPU workloads
    • Trace cost to a team
    • Plan a safe spot migration
    • Clean up abandoned workloads
    • Invite teammates and set roles
    • Configure SAML SSO
    • Mint an API key
    • Rotate an API key
Docs homev1How To GuidesIntegrationsGcp

How-to Guides

GCP cloud pricing

How Kubeadapt prices GCP clusters. On-demand and Spot/Preemptible VMs work without setup; Committed Use Discount attribution is on the roadmap.


You installed the agent on a GKE cluster, the nodes appear in the dashboard, and node-level cost numbers are populating. For GCP today that's the whole story — there is no cloud-account connection step. Kubeadapt reads GCP's public price catalog directly, recognizes Preemptible and Spot VMs from the cluster's node labels, and starts attributing cost from the first snapshot.

What's not in place yet: Committed Use Discounts (CUDs) and Sustained Use Discounts aren't reflected in per-node pricing. The cluster shows list-price compute even if you've committed to a 1- or 3-year CUD on those instance families.


What works today

Pricing typeSetup requiredHow it worksStatus
On-demandNoneFetched from the GCP Cloud Billing Catalog API on a scheduleSupported
Preemptible & Spot VMsNoneReal-time spot prices per region, AZ, and machine typeSupported
Committed Use Discounts (CUDs)——Planned
Sustained Use Discounts (SUDs)——Planned
Tip

GCP renamed Preemptible VMs to Spot VMs in newer APIs, but both terms still appear depending on the resource. Kubeadapt treats them the same: any node with cloud.google.com/gke-spot=true, the legacy cloud.google.com/gke-preemptible=true, or a Compute Engine scheduling.preemptible: true flag resolves to the spot rate for that machine type and region.


How it works

Kubeadapt fetches public pricing from the GCP Cloud Billing Catalog API on a regular schedule and caches it. No GCP service account, no JSON key, no IAM binding required — public pricing is read on Kubeadapt's side, not from your project.

Your cluster's node labels are what Kubeadapt needs from inside the cluster:

  • Machine type — from node.kubernetes.io/instance-type (e.g. e2-standard-4)
  • Region and zone — from topology.kubernetes.io/region and topology.kubernetes.io/zone
  • Capacity type — Spot vs. on-demand inferred from the GKE spot label or the equivalent Compute Engine flag

Standard GKE installs these labels automatically. For GKE Autopilot, they're set by the platform; for self-managed Kubernetes on GCE, ensure your kubelet or cluster autoscaler sets them.


When you'd want a cloud-account integration

You wouldn't, today. Unlike AWS where Reserved Instances and Savings Plans are already wired up through a Cost Explorer API connection, GCP CUD and SUD attribution requires reading the Cloud Billing export from BigQuery and reconciling commitment coverage against your nodes. That work is on the roadmap; track progress on the feedback portal.

In the meantime, if you have material CUDs in place, your real GCP bill will be lower than what Kubeadapt's Cost Explorer projects. Treat Kubeadapt numbers as on-demand-equivalent until CUD attribution ships.


Troubleshooting

Spot nodes show on-demand prices. Check the node labels:

bash
kubectl get nodes -L cloud.google.com/gke-spot \
  -L cloud.google.com/gke-preemptible

If both columns are empty on nodes you know are Spot/Preemptible, the GKE node pool wasn't created with the spot flag set, or the underlying GCE instances were created outside GKE. Recreate the node pool with --spot or label the nodes manually.

Some nodes show $0 cost. The machine type isn't matching anything in the public price catalog. Common causes:

  • Custom machine types (custom-2-4096) — pricing is computed from per-vCPU and per-GB rates rather than a flat machine-type lookup. If your cluster runs custom shapes and they show $0, contact support with the exact instance-type label value.
  • Brand-new machine families that haven't propagated to the catalog yet — wait for the next pricing refresh, then re-check.

Cluster shows region as "unknown". The topology.kubernetes.io/region label is missing. GKE sets this automatically; if it's missing, the cluster was likely set up before well-known labels became standard. Re-label nodes or upgrade the node pool.


Next steps

  • Connect a cluster — the index for all four providers
  • AWS integration — the contrast case, where commitment attribution does ship today
  • Configuration overview — the Helm chart and agent values

Related

  • Connect a cluster
  • AWS Integration
  • Configuration Overview
PreviousAWS IntegrationHow-to GuidesNextAzure cloud pricingHow-to Guides

On this page

  • What works today
  • How it works
  • When you'd want a cloud-account integration
  • Troubleshooting
  • Next steps
Edit this page
Kubeadapt

Kubernetes FinOps platform. Cost visibility, rightsizing, and capacity planning that pays for itself in 30 days.

Product

  • Cost Monitoring
  • Cost Attribution
  • Workload Rightsizing
  • Recommendations
  • Smart Alerting
  • Best Practices
  • Network Cross-AZ

Resources

  • Documentation
  • Status Page
  • Feature Requests

Company

  • About Us
  • Security
  • Careers
  • Contact

© 2026 Kubeadapt. All rights reserved.

PrivacyTermsSecurity