refresh nodegroup¶
Nodegroup operations (list, get, scale, update)
Aliases: ng
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
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
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
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
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 |