Amazon EKS — Kubernetes Version Lifecycle on EKS
Kubernetes Version Lifecycle on EKS
EKS supports multiple Kubernetes versions simultaneously, but each version has a limited support window. Understanding the lifecycle prevents surprise costs and forced upgrades.
EKS Version Support Model
Kubernetes Version Lifecycle on EKS
┌──────────────────────────────────────────────────────────┐
│ │
│ Release ──▶ Standard Support ──▶ Extended ──▶ End of │
│ (14 months) Support Life │
│ $0.10/hr (+12 months) (forced │
│ $0.60/hr upgrade) │
│ │
│ Timeline: │
│ │─── 14 months ───│── 12 months ──│ │
│ ├─────────────────┼───────────────┼ │
│ │ Standard │ Extended │ End of Life │
│ │ $73/month │ $438/month │ Auto-upgraded │
│ └─────────────────┴───────────────┘ │
│ │
└──────────────────────────────────────────────────────────┘
Current Version Support (2024)
| K8s Version | EKS Status | Standard Support Ends | Extended Support Ends |
|---|---|---|---|
| 1.31 | Standard | ~March 2026 | ~March 2027 |
| 1.30 | Standard | ~November 2025 | ~November 2026 |
| 1.29 | Standard | ~June 2025 | ~June 2026 |
| 1.28 | Standard | ~March 2025 | ~March 2026 |
| 1.27 | Extended | Ended | ~March 2025 |
| ≤ 1.26 | End of Life | — | — |
Upgrade Strategy
# Check current version
$ kubectl version --short
Server Version: v1.28.5-eks-...
# Upgrade control plane (one minor version at a time!)
$ aws eks update-cluster-version --name demo --kubernetes-version 1.29
# Wait for completion (~15-30 minutes)
$ aws eks describe-update --name demo --update-id <update-id>
# Then upgrade node groups
$ eksctl upgrade nodegroup --name demo-nodes --cluster demo --kubernetes-version 1.29
Important: You can only upgrade one minor version at a time (1.28 → 1.29 → 1.30, not 1.28 → 1.30).
Upgrade Order
Correct Upgrade Order
1. Update add-ons (VPC CNI, CoreDNS, kube-proxy)
2. Upgrade control plane
3. Upgrade managed node groups
4. Verify cluster health
5. Update application manifests if needed
Common Mistakes
| Mistake | Impact |
|---|---|
| Ignoring version lifecycle | $365/month extra per cluster in extended support |
| Skipping versions | Not allowed — must go 1.28 → 1.29 → 1.30 |
| Not testing upgrades in staging | Breaking changes can affect workloads |
| Upgrading nodes before control plane | Nodes can’t be newer than control plane |
Quick Reference
# Check current version
$ aws eks describe-cluster --name demo --query 'cluster.version'
# List available versions
$ aws eks describe-addon-versions --query 'addons[0].addonVersions[*].compatibilities[*].clusterVersion' --output text | sort -u
# Start upgrade
$ aws eks update-cluster-version --name demo --kubernetes-version 1.29
What’s Next?
Test your knowledge: Architecture Exercises.