Cut GCP GKE costs without
restarting your workloads

Rightsize CPU and memory, provision optimal Compute Engine machine types, all without restarting a single pod.

Companies who slashed their Kubernetes
spend
using DevZero

DATABAHN
Starburst
Fi
Outerbounds
Codilas
personality pool
Onnitech
OpenObserve
Parsimo
Dentira
DATABAHN
Starburst
Fi
Outerbounds
Codilas
personality pool
Onnitech
OpenObserve
Parsimo
Dentira

Your GKE cluster is running, your bill is too high

Most GKE clusters run at 15–30% utilization. Teams overprovision out of caution, node pools stay fixed at peak size, and egress charges pile up with no per-workload view.

Requests are set once and never revisited

CPU and memory requests are set at deploy time and left untouched. Most GKE pods run at a fraction of what they request. You pay for the full Compute Engine allocation regardless of actual usage.

CPU allocated vs actual usage

prod-gke · namespace: default

avg 83% wasted
api-server
83% idle
340m / 2000m
frontend
86% idle
290m / 2000m
ml-worker
65% idle
1380m / 4000m
pubsub-fwd
89% idle
110m / 1000m
batch-job
90% idle
190m / 2000m
Used Allocated (billed)
GCE charges full allocation

Node pool utilization

us-central1 · 6 nodes · 3 zones

avg 14% CPU

central1-a

central1-b

central1-c

pool-default

n2-standard-8

18%

CPU

22%

CPU

11%

CPU

pool-highmem

m2-standard-4

9%

CPU

14%

CPU

7%

CPU

Replicas pinned — no consolidation possible

Static node pools cannot scale down across zones

Node pools stay fixed at peak size

GKE node pools are sized for peak load with a fixed replica count. Underutilized nodes keep running across every zone with no automatic way to consolidate or right-size them.

Cross-zone and egress costs are invisible

GCP charges ~$0.01/GB for cross-zone traffic and ~$0.12/GB for internet egress. Cloud Billing rolls both into a single Compute Engine line with no workload attribution and no way to know where to cut.

Cloud Billing Console

June 2026

Compute Engine

$1,840.00

Network Egress Bandwidth · all destinations

Which workload generated this?

DevZero eBPF attribution
WorkloadTypeVolumeCost/mo

frontend

central1-acentral1-b

Cross-zone921 GB$9.21

ml-worker

central1-ccentral1-a

Cross-zone640 GB$6.40

api-server

central1-binternet

Internet142 GB$17.04
Total attributed1,703 GB$32.65/mo

One platform that actually reduces your GKE bill

Lightweight operators observe usage, generate recommendations, and apply changes when you are ready.

dakr-op · WorkloadRecommendation applied

Before

api-server-deploy

cpu: 2000m

mem: 4Gi

CPU used17%
Mem used22%

CRIU

checkpoint

restore

in-place

After

api-server-deploy

cpu: 340m

mem: 900Mi

✓ 0 pod restarts

✓ connections live

✓ GKE SLO intact

WorkloadRecommendation · devzero-system

Method

CRIU live

Scope

21 workloads

Savings

−$7,800/mo

Rightsize requests without restarting pods

dakr-op receives recommendations via gRPC, validates them against your policy, then applies CPU and memory changes in place using CRIU checkpoint-restore. Zero restarts. Zero dropped connections.

dzKarp · GCENodeClass provisioning

Compute-heavy

ml-worker · batch-job

Memory-heavy

postgres · pubsub-fwd

General-purpose

api-server · frontend

dzKarp · GCENodeClass

spotToSpotConsolidation · implicitPDB 20%

c2-standard-8

compute-optimized

74% CPU

m2-standard-4

memory-optimized

68% CPU

n2-standard-4

general-purpose

61% CPU

Static pools consolidated · Spot VM interruptions handled automatically

Replace static node pools with right-sized GCE instances

dzKarp provisions the optimal Compute Engine machine type per workload class, consolidates idle nodes, and handles Spot VM interruptions automatically. Installed via Helm with Workload Identity. No static credentials.

zxporter-netmon · eBPF flow attribution

WorkloadTypeVolRate$/mo
frontendCross-zone921 GB$0.01/GB$9.21
ml-workerCross-zone640 GB$0.01/GB$6.40
api-serverInternet142 GB$0.12/GB$17.04
pubsub-fwdPeering380 GB$0.01/GB$3.80
Total attributed2,083 GB$36.45/mo

Attributed per pod via eBPF DNS tracing · no payload inspection

See cross-zone and egress cost per workload

zxporter-netmon runs as a DaemonSet using eBPF to trace pod-level flows. It maps each flow to GCP pricing (cross-zone ~$0.01/GB, internet egress ~$0.12/GB) and attributes cost to the workload that generated it.

Before and after with DevZero on GKE

Same cluster, same workloads. Less spend.

Before DevZero

Avg cluster CPU utilization20%
api-server CPU request2000m (set at deploy)
Node type selectionManual, static node pools
Spot VM interruption handlingManual drain scripts
Cross-zone traffic visibilityNot tracked per workload
Monthly infra spend$49,600 / mo

After DevZero

Avg cluster CPU utilization68% (rightsized)
api-server CPU request340m (live migration)
Node type selectionAuto Compute Engine provisioning
Spot VM interruption handlingAutomatic live migration
Cross-zone traffic visibilityPer-pod breakdown via eBPF
Monthly infra spend$34,720 / mo (−30%)

Getting started in three steps

bash · prod-gke
# Install read operator (zxporter) via Helm$ helm upgrade --install zxporter \oci://public.ecr.aws/devzeroinc/zxporter \--namespace devzero-zxporter \--set config.clusterToken=<token>✓ namespace devzero-zxporter created✓ 3/3 pods running✓ metrics streaming to DevZeroread-only · no cluster changes made
devzero.io / optimization / prod-gke
21 workloads scanned−$12,640 potential
WorkloadNowRec.
api-server2000m340m
postgres4Gi1.1Gi
ml-worker4000m1380m

First scan complete · No changes applied yet

Read-only · Open-source at github.com/devzero-inc/zxporter · No cluster changes until you enable automation

Deploy the open-source, read-only zxporter via Helm. See cost recommendations in your DevZero dashboard with no cluster changes needed. First scan surfaces savings within 24 hours.

bash · gcloud + helm
# 1: Create GCP service account (karpenter-gsa)$ gcloud iam service-accounts create \karpenter-gsa --project=$PROJECT_ID✓ roles/compute.admin granted✓ roles/container.admin granted# 2: Create dzkarp node pool (e2-medium)$ gcloud container node-pools create dzkarp \--workload-metadata=GKE_METADATA \--machine-type=e2-medium --num-nodes=2✓ Workload Identity binding set
kubectl get gcenodeclass · devzero-system

Kubernetes objects created

GCENodeClassdevzero-classReady
NodePooldevzero-defaultReady

GCE nodes provisioned by dzKarp

c2-standard-8compute-optimized×3
m2-standard-4memory-optimized×1

Workload Identity binding active · dzKarp managing node provisioning · Spot VM interruptions handled automatically

Create a GCP service account (karpenter-gsa), grant compute and container admin roles, create the dzkarp node pool (e2-medium), set the Workload Identity binding, then install dzKarp via Helm from the public ECR registry.

Workload policy · dakr-op

Scope

namespace = production

Workload types

Deployment · StatefulSet · DaemonSet

Migration type

Live (CRIU)Rolling restart

Aggressiveness

devzero.io / WorkloadRecommendations
WorkloadBeforeAfterType
api-server2000m340mlive
frontend1000m290mlive
ml-worker4000m1380mrestart
Savings this month−$7,800

Automation enabled · dakr-op applies WorkloadRecommendations via policy · Savings begin immediately

Review WorkloadRecommendations in the DevZero dashboard, create workload policies for dakr-op, then scale down static node pools to hand provisioning to dzKarp.

Everything GKE teams need on one platform

Workload rightsizing without downtime

CRIU applies new CPU and memory limits without restarting the pod. Connections stay open. Each recommendation is labelled live or restart before you approve.

View write operator

Intelligent node autoscaling on GKE

The DevZero node operator provisions the right Compute Engine machine type per workload, consolidates idle nodes, and handles Spot VM interruptions automatically. Managed by policy, not YAML.

GKE setup guide

Cross-zone and egress network cost visibility

An eBPF DaemonSet tracks pod-level flows and maps each one to GCP pricing: inter-zone, inter-region, internet egress, and Cloud NAT. No changes to CoreDNS or kube-proxy.

Network operator docs

Security scanning and compliance

Scans container images for CVEs, checks clusters against CIS Kubernetes Benchmark and GKE hardening guidelines, and flags RBAC misconfigurations. All results in one dashboard.

Security operator

Terraform and Pulumi providers

Manage clusters and policies as code using the official Terraform provider or Pulumi SDKs for TypeScript and Python. Fits existing GitOps and Config Connector workflows.

IaC providers

Cost-aware pod scheduling

dz-scheduler places pods on the cheapest viable nodes based on real-time Spot VM pricing, cross-zone transfer cost, and CRIU compatibility.

Scheduler docs

What our customers say

Databahn logo

We were essentially able to reduce the cost of that cluster by about 75%. On AWS, DevZero demonstrated they could achieve significantly higher savings than we initially thought possible.

Mihir Nair

Mihir Nair

Head of Architecture, Databahn

Frequently asked questions

Technical questions from platform engineers who've evaluated DevZero on GKE.

Stop paying for compute you're not using.Start rightsizing today.

Connect your GKE cluster in under 30 minutes. No code changes. No pod restarts. First savings visible within 24 hours.

Get started free