# Amazon EKS Node Group

> An EKS node group bills as the EC2 instances it runs. The node group object itself is free. ZopNight scales groups to 0 via eks:UpdateNodegroupConfig at the scheduled stop, saves the original size as a tag on the group, and restores it at start.

Source: https://zop.dev/integrations/aws/eks-nodegroup
Updated: 2026-08-19

---

An EKS managed node group provisions and manages a set of EC2 worker nodes for a Kubernetes cluster. Node groups are where EKS spend concentrates, and non-production groups rarely need to run outside working hours.

## The node group is a shape; the nodes are the bill

A managed node group is configuration (instance types plus minimum, maximum, and desired size) wrapped around an EC2 Auto Scaling group. Billing happens entirely at the instance layer: every node bills its per-instance-hour EC2 rate plus EBS for its volumes. Ten nodes held at daytime size overnight is ten meters serving no pods.

## Scale-to-zero, with the size saved as a tag

At the scheduled stop, ZopNight calls eks:UpdateNodegroupConfig to take the group to zero, first saving the original size as a tag on the group itself; at start, the tag is read back and the size restored. Keeping the saved state on the resource means the restore survives scheduler restarts and stays visible to anyone inspecting the group in the console or the API.

## How node groups waste

Abandoned groups whose workloads were deleted months ago, nodes still billing. Underutilized groups where the requested pod resources would fit on half the nodes, because autoscaling was never configured and desired size stays at its launch-day value. And on-demand instance types in dev and test groups where Spot capacity would carry the same disposable workloads for far less. An idle node group also differs from an idle EC2 instance in one deceptive way: the Kubernetes scheduler spreads system pods across all of it, so utilization looks nonzero while no user work is happening.

## What ZopNight records

Node groups are discovered on the 6-hour cycle with hourly CloudWatch metrics; cost is attributed through the underlying EC2 fleet, and recommendations include node rightsizing and Graviton instance types.

## Where to see a group's size

EKS console, then Clusters, then the cluster's Compute tab. Each node group row shows desired, minimum, and maximum size. Desired is the number the schedule drives to zero and the saved tag restores.
