> ## Documentation Index
> Fetch the complete documentation index at: https://docs.costgraph.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Supported node pools

> Node pool types CostGraph recognises and what AutoPilot does with each

CostGraph groups nodes into the pools that your cluster platform manages. It
uses the pool to show recommendations, savings, and capacity for each group of
nodes, and to propose changes to the pool.

## How CostGraph recognises a pool

CostGraph reads one label or annotation on each node. The value is the pool
name. To check that CostGraph can see a pool, run `kubectl get node <name> --show-labels`
and look for the key in the following table. For OKE, check annotations
instead with `kubectl get node <name> -o jsonpath='{.metadata.annotations}'`.

| Platform | Pool type | Key on the node |
| - | - | - |
| Any | Karpenter NodePool | `karpenter.sh/nodepool` |
| Google Kubernetes Engine (GKE) | Compute class | `cloud.google.com/compute-class` |
| Google Kubernetes Engine (GKE) | Node pool | `cloud.google.com/gke-nodepool` |
| Azure Kubernetes Service (AKS) | Agent pool | `kubernetes.azure.com/agentpool` |
| Amazon Elastic Kubernetes Service (EKS) | Managed node group | `eks.amazonaws.com/nodegroup` |
| Oracle Container Engine for Kubernetes (OKE) | Node pool | Annotation `oci.oraclecloud.com/node-pool-id` |
| Hetzner | Node group | `hcloud/node-group` |
| DigitalOcean Kubernetes (DOKS) | Node pool | `doks.digitalocean.com/node-pool` |
| Linode Kubernetes Engine (LKE) | Pool | `lke.linode.com/pool-id` |
| Scaleway Kapsule | Pool | `k8s.scaleway.com/pool-name` |
| Civo | Node pool | `kubernetes.civo.com/node-pool` or `kubernetes.civo.com/civo-node-pool` |
| OVHcloud | Node pool | `nodepool`, when the node also has a label starting with `node.k8s.ovh/` |
| STACKIT and Gardener | Worker pool | `worker.gardener.cloud/pool` |
| IBM Cloud Kubernetes Service (IKS) | Worker pool | `ibm-cloud.kubernetes.io/worker-pool-name` |
| Alibaba Cloud Container Service for Kubernetes (ACK) | Node pool | `alibabacloud.com/nodepool-id` |

When a node carries more than one of these keys, CostGraph uses the first match
in the table order. A node without any of them is not part of a pool.

## What AutoPilot does with each pool

| Pool type | What CostGraph does |
| - | - |
| Karpenter NodePool on `karpenter.sh/v1` | Opens pull requests for your NodePools. With `global.autopilot.ownedNodePools.enabled`, also creates and manages its own NodePools. |
| All other pool types | Shows recommendations, savings, and capacity for each pool, and suggests changes as pull requests. |

CostGraph does not edit a pool that it did not create. See
[Karpenter node pools](https://docs.costgraph.ai/costgraph/autopilot/karpenter.md) for how CostGraph creates
and manages its own pools.

## How CostGraph reads spot capacity

CostGraph reads whether a node runs on spot or on-demand capacity from these
labels. Every other node counts as on-demand.

| Platform | Label | Spot value |
| - | - | - |
| Karpenter | `karpenter.sh/capacity-type` | `spot` |
| EKS managed node group | `eks.amazonaws.com/capacityType` | `SPOT` |
| GKE | `cloud.google.com/gke-spot` | `true` |
| GKE | `cloud.google.com/gke-provisioning` | `spot` |
| AKS | `kubernetes.azure.com/scalesetpriority` | `spot` |

## Next steps

* Read [AutoPilot](https://docs.costgraph.ai/costgraph/autopilot/overview.md) to learn how workloads move between pools.
* Read [Supported cloud providers](https://docs.costgraph.ai/costgraph/operator/supported-providers.md) for the clouds where the operator recognises nodes.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.