Skip to content

refresh nodegroup

Nodegroup operations (list, get, scale, update)

Aliases: ng

refresh nodegroup [options] <command>

Inspect and operate on a cluster's managed nodegroups: list them with AMI freshness, describe one in depth, scale desired/min/max size (with optional PDB and health gating), and update (roll) nodegroups to the latest recommended AMI with pre-flight health checks and live monitoring.

Flags

Flag Env Default Description
--help, -h show help

Subcommands

refresh nodegroup list

List nodegroups in a cluster with AMI status

refresh nodegroup list [options] [cluster]

List the managed nodegroups in a cluster with their status, instance type, node counts, and AMI freshness (whether each is on the latest recommended AMI).

Filter with repeatable --filter key=value (keys: name, status, instanceType, amiStatus); sort with --sort and --desc. -o plain emits uncolored TSV for grep/awk; -o json|yaml emit structured output. Use --watch to redraw on the --watch-interval (top-style on a terminal, appended when piped) until Ctrl+C.

refresh nodegroup list my-cluster --filter amiStatus=outdated refresh nodegroup list my-cluster -o plain | awk '{print $1}' refresh nodegroup list my-cluster --watch

Flags

Flag Env Default Description
--timeout, -t duration REFRESH_TIMEOUT 1m0s Operation timeout (e.g. 60s, 2m)
--cluster, -c string EKS cluster name or pattern
--format, -o string table Output format (table, json, yaml, plain)
--sort string name Sort by field: name,status,instance,nodes
--desc Sort descending
--filter, -f string Filter nodegroups (key=value; keys: name, status, instanceType, amiStatus)
--check-readiness, -R Measure real Kubernetes node readiness (Ready/desired) via the cluster API; without it NODES shows desired count only
--kubeconfig string Path to the kubeconfig for --check-readiness (defaults to $KUBECONFIG, then ~/.kube/config)
--watch, -w Re-run and redraw every --watch-interval until interrupted
--watch-interval duration 10s Refresh interval for --watch
--help, -h show help

refresh nodegroup describe

Describe a nodegroup with AMI status and optional instances/workloads info

Aliases: get

refresh nodegroup describe [options] [cluster] [nodegroup]

Show detailed information for one nodegroup: scaling config, instance type(s), AMI/release version and freshness, and (optionally) per-instance and workload placement details. The nodegroup name may be the second positional or --nodegroup.

refresh nodegroup describe my-cluster ng-default refresh nodegroup describe my-cluster ng-default --show-instances --show-workloads

Flags

Flag Env Default Description
--timeout, -t duration REFRESH_TIMEOUT 1m0s Operation timeout (e.g. 60s, 2m)
--cluster, -c string EKS cluster name
--nodegroup, -n string Nodegroup name (can be provided as second positional)
--show-instances, -I Include EC2 instance details
--show-workloads, -W Include workload/pod placement info
--format, -o string table Output format (table, json, yaml, plain)
--help, -h show help

refresh nodegroup scale

Scale a nodegroup's desired/min/max size with optional health checks

refresh nodegroup scale [options] [cluster]

Change a managed nodegroup's desired/min/max size. Any subset of --desired/--min/--max may be set; unspecified bounds are left unchanged.

--check-pdbs validates Pod Disruption Budgets before scaling down so you don't strand workloads; --health-check validates cluster health before and after; --dry-run previews the impact without executing; --wait blocks until the operation settles.

refresh nodegroup scale my-cluster -n ng-default --desired 5 refresh nodegroup scale my-cluster -n ng-default --desired 2 --check-pdbs --wait

Flags

Flag Env Default Description
--timeout, -t duration REFRESH_TIMEOUT 1m0s Operation timeout (e.g. 60s, 2m)
--cluster, -c string EKS cluster name
--nodegroup, -n string Nodegroup name
--desired int Desired node count
--min int Minimum node count
--max int Maximum node count
--health-check Validate cluster health before and after scaling
--check-pdbs Validate Pod Disruption Budgets before scaling down
--wait Wait for scaling operation to complete
--op-timeout duration 5m0s Scaling operation timeout
--kubeconfig string Path to the kubeconfig for workload/PDB health checks (defaults to $KUBECONFIG, then ~/.kube/config)
--dry-run Preview scaling impact without executing
--help, -h show help

refresh nodegroup update

Update the AMI for all or a specific nodegroup (rolling by default)

Aliases: update-ami

refresh nodegroup update [options] [cluster] [nodegroup]

Roll managed nodegroups to the latest recommended AMI, with pre-flight health gates and live monitoring.

Custom-AMI nodegroups (AmiType=CUSTOM) are skipped with guidance: their AMI is managed via the launch template, so publish a new LT version to roll them.

Fleet mode (--all-clusters) discovers clusters across regions (scope with -r) and rolls them serially with one batch confirmation, an aggregate summary, and a worst-outcome exit code: refresh nodegroup update --all-clusters --dry-run # fleet-wide plan refresh nodegroup update --all-clusters -r us-east-1 --yes

Unattended / CI use: --yes skip confirmation prompts (multi-match selection, warnings) --require-healthy treat warn-level health findings as a hard stop -o json print a JSON run summary (started/skipped/custom/failed) Without a TTY and without --yes, a prompt-requiring run fails fast.

Exit codes: 0 success 2 health warnings (--health-only / --require-healthy) 3 health blocked 4 one or more nodegroup updates failed to start

Example (cron): refresh nodegroup update -c prod --yes --require-healthy -o json

Flags

Flag Env Default Description
--cluster, -c string EKS_CLUSTER_NAME EKS cluster name or partial name pattern (overrides kubeconfig)
--nodegroup, -n string Nodegroup name or partial name pattern (if not set, update all)
--all-clusters Fleet mode: roll matching nodegroups across all discovered clusters (serial). Scope with -r.
--region, -r string Region(s) for --all-clusters discovery (default: partition EKS regions / REFRESH_EKS_REGIONS)
--force, -f Force update if possible
--dry-run, -d Preview changes without executing them
--no-wait Don't wait for update completion (original behavior)
--quiet, -q Minimal output mode
--timeout, -t duration 40m0s Maximum time to wait for update completion
--poll-interval, -p duration 15s Polling interval for checking update status
--skip-health-check, -s Skip pre-flight health validation
--health-only Run health check only, don't update (exit code: 0=pass, 2=warn, 3=block)
--yes, -y Assume yes: skip confirmation prompts (multi-match selection, warn-level health) for unattended/CI use
--require-healthy Treat warn-level health findings as a hard stop (exit 2) instead of prompting
--skip-verify Skip post-roll verification (nodes ACTIVE, no new stuck pods)
--changelog In dry-run, print full amazon-eks-ami release notes between the current and target AMI
--kubeconfig string Path to the kubeconfig for workload/PDB health checks (defaults to $KUBECONFIG, then ~/.kube/config)
--format, -o string table Output format: health results with --health-only; a JSON run summary with -o json
--live Force the live per-node roll view and report why if the cluster API can't be reached (the panel is already the default for an interactive single-nodegroup roll)
--help, -h show help