# GKE Node Pool

> GKE node pools carry nearly all of a cluster's cost, because each node bills as a full Compute Engine instance. ZopNight tracks every pool via Cloud Asset Inventory, measures packing density against pod CPU requests, and scales a pool to 0 nodes on schedule, recording its previous size for the morning restore.

Source: https://zop.dev/integrations/gcp/gke-nodepool
Updated: 2026-08-19

---

A GKE node pool is a group of identically configured VMs that provide compute capacity to a cluster. Node pools are where GKE cost actually accrues, since every node bills as a full Compute Engine instance.

## The pool is the price of the cluster

Every node in a pool is a Compute Engine VM metering vCPUs and memory per second, with a boot disk billing at provisioned size on the side. The pool's node count multiplies that machine cost directly, which makes pool size the single most consequential number in a GKE bill. GPU and high-memory pools amplify the effect: one node of the wrong shape can outweigh an entire pool of general-purpose machines.

## Pool-level visibility and scale-to-zero

ZopDev tracks each node pool via Cloud Asset Inventory and analyzes packing density and utilization: how much of the pool's allocatable CPU is actually claimed by pod requests. On schedule it scales the pool to 0 nodes, recording the previous size for restoration on resume. Because the target is a single pool rather than the whole cluster, this is the finer-grained alternative to stopping everything: a shared cluster can keep its always-on pool while its batch or experiment pool sleeps overnight.

## Spend that hides inside a pool

Watch for three shapes of waste. A dedicated pool created for one workload that moved or shrank, still holding its old node count. Autoscaler minimums set defensively high, pinning nodes the scheduler never fills. And mismatched machine types, where a pool of large nodes running many small pods strands capacity in each node that requests can never quite pack.

## Reading a pool from the console

Google Cloud console → Kubernetes Engine → Clusters, then a cluster's Nodes tab, lists each node pool with its machine type, current node count, and autoscaling range. A pool scheduled off by ZopNight shows zero nodes there until the restore returns it to the recorded size.
