Google GKE
GKE costs from your BigQuery billing export
KubeOn queries your detailed billing export in BigQuery, uses GKE cost allocation labels where they are enabled, and splits each node pool across the workloads that ran on it.
What KubeOn reads
What KubeOn needs on Google Cloud
Your Google Cloud account
BigQuery billing exportWith GKE cost allocation
- KubeOn service accountRead-only
GKE and other clustersThe agent sends a snapshot every hour
KubeOn hub
Fully managed by UnitVane
- 1Read the billing data
- 2Join it with each snapshot
- 3Allocate every node's cost
- 4Reconcile to the bill
What you get
- Cost per team and labelPods, namespaces and teams
- Each cluster reconciledTo its own bill
- Savings to act onAs pull requests, or applied by KubeOn
Billing
Cloud Billing detailed usage cost export to BigQuery, net of committed use discounts and credits.
Access
A service account with BigQuery Data Viewer on the export dataset and Job User in the billing project.
Agent identity
A cluster token from KubeOn. No service account or bucket: snapshots go to your organization in KubeOn and nowhere else.
Setup
Three steps to the first allocation
Cluster inventory appears within the first hour. Allocated costs follow as soon as billing data is in.
01
Grant read access to the export
Create a service account and give it read access to the billing dataset.gcloud and bq# Prerequisite: Cloud Billing > Billing export > Detailed usage cost to BigQuery# dataset: acme-billing:billing_export. GKE cost allocation is optional.gcloud iam service-accounts create kubeon-billing \ --project acme-billing --display-name "KubeOn billing reader"# Read the billing export datasetbq add-iam-policy-binding \ --member="serviceAccount:kubeon-billing@acme-billing.iam.gserviceaccount.com" \ --role="roles/bigquery.dataViewer" \ acme-billing:billing_export# Run queries in the billing projectgcloud projects add-iam-policy-binding acme-billing \ --member="serviceAccount:kubeon-billing@acme-billing.iam.gserviceaccount.com" \ --role="roles/bigquery.jobUser"02
Enable GKE cost allocation
Optional: adds namespace and label detail to the billing export.gcloudgcloud container clusters update gke-prod-usc1 \ --region us-central1 \ --enable-cost-allocation03
Install the agent
One Helm release per cluster, with the cluster's token from KubeOn in a Secret.kubeon-agent.yaml# kubeon-agent.yaml (GKE)clusterName: gke-prod-usc1kubeon: existingSecret: kubeon-agent-tokenprometheusUrl: http://prometheus-server.monitoring.svc:9090 # optional
Connecting the bill in KubeOn: each step shows the console steps and the read-only access it needs.
Highlights
Built for how Google Cloud bills
Committed use discounts
Net cost with CUDs and credits applied, plus list cost for comparison.
Autopilot pricing
Autopilot pods priced from their billed vCPU, memory and storage.
Cost allocation labels
GKE's namespace and label detail cross-checks KubeOn's allocation.
Machine family changes
Proposals for smaller machine types or a better-fitting family.
One token per cluster
Revocable in KubeOn; no Google Cloud credentials in the cluster.
Spot and committed use
A Spot planner for your workloads, plus what you bought, when it ends and where coverage has gaps.
FAQ
Google Cloud questions
Other platforms
Let's get started
A 30-minute walkthrough on your own billing data, for your clouds, your clusters and your model providers.