EKS Cluster Upgrade Process
Pre-upgrade Checklist
1. Review Kubernetes Changes
- Read Kubernetes release notes for target version
- Check EKS Kubernetes versions
- Identify deprecated APIs
2. Check Addon Compatibility
# List addons and versions
aws eks describe-addon-versions \
--kubernetes-version 1.30 \
--addons-name aws-ebs-csi-driver
# Check VpcCni version
kubectl describe daemonset aws-node -n kube-system | grep Image3. Update Addons First
# Update VPC CNI
aws eks update-addon \
--cluster-name my-cluster \
--addon-name vpc-cni \
--addon-version latest \
--resolve-conflicts
# Update CoreDNS
kubectl rollout restart -n kube-system deployment/coredns
# Update kube-proxy
kubectl rollout restart -n kube-system deployment/kube-proxy4. Review Applications
# Check for deprecated APIs
kubectl api-resources
kubectl get all -A -o yaml > pre-upgrade-backup.yamlUpgrade Steps
1. Upgrade Control Plane
# Update cluster version
aws eks update-cluster-version \
--name my-cluster \
--kubernetes-version 1.30 \
--profile my-profile
# Monitor upgrade status
aws eks describe-cluster \
--name my-cluster \
--query 'cluster.status'
# Wait for completion
aws eks wait cluster-active --name my-cluster2. Upgrade Managed Node Groups
# Update each node group
aws eks update-nodegroup-version \
--cluster-name my-cluster \
--nodegroup-name standard-workers \
--kubernetes-version 1.30
# Or use eksctl
eksctl upgrade nodegroup \
--cluster my-cluster \
--name standard-workers \
--kubernetes-version 1.303. Verify Upgrade
# Check cluster version
kubectl version --short
kubectl get nodes
# Check pod status
kubectl get pods -A | grep -v Running
# Verify addons
kubectl get pods -n kube-systemPost-upgrade Tasks
- Test applications - Verify workloads function correctly
- Update kubectl - Ensure local kubectl matches cluster version
- Update Helm charts - Update to latest chart versions
- Update CI/CD - Update kubectl versions in pipelines
Rollback
Node group can be rolled back to previous version if issues occur:
# Rollback node group
aws eks update-nodegroup-version \
--cluster-name my-cluster \
--nodegroup-name standard-workers \
--kubernetes-version 1.29 \
--forceControl plane cannot be rolled back.