如何更新AWS EKS集群Fargate Pod的kubelet版本以完成升级?
解决EKS升级时Fargate Pod Kubelet版本不匹配的问题
问题原因
EKS控制平面升级到1.20后,现有Fargate Pod的kubelet版本仍停留在之前的集群版本,EKS要求所有Fargate Pod的kubelet版本必须与当前控制平面版本匹配,才能继续升级到1.21。
解决步骤
1. 定位不匹配的Fargate Pod
执行以下命令,列出所有kubelet版本未匹配1.20的Fargate Pod:
kubectl get pods --all-namespaces -o jsonpath='{range .items[?(@.spec.schedulerName=="fargate-scheduler")]}{.metadata.namespace}{"\t"}{.metadata.name}{"\t"}{.status.nodeInfo.kubeletVersion}{"\n"}' | grep -v v1.20
(注:将v1.20替换为你的集群1.20对应的具体小版本,比如v1.20.15-eks-f6799c)
2. 回收不匹配的Pod
根据Pod的管理控制器类型,执行对应的重启操作:
- Deployment管理的Pod:
kubectl rollout restart deployment <deployment-name> -n <namespace> - StatefulSet管理的Pod:
kubectl rollout restart statefulset <statefulset-name> -n <namespace> - DaemonSet管理的Pod:
kubectl rollout restart daemonset <daemonset-name> -n <namespace> - 独立Pod(无控制器管理):
先删除Pod,再重新应用其配置文件:kubectl delete pod <pod-name> -n <namespace> kubectl apply -f <pod-config.yaml>
3. 验证Pod版本
再次执行步骤1的命令,确认所有Fargate Pod的kubelet版本均已更新为1.20系列。同时可检查Pod状态:
kubectl get pods --all-namespaces -o wide | grep Fargate
4. 重新执行集群升级
确认所有Pod版本匹配后,重新运行升级命令:
eksctl upgrade cluster --name sandbox --approve
注意事项
- 回收Pod会导致短暂服务中断,建议在业务低峰期操作。
- 若存在多个Fargate Profile,需确保所有Profile下的Pod都被处理。
- 操作完成后,确认所有Pod处于
Running状态,再进行后续升级。
内容的提问来源于stack exchange,提问作者Chris F
相关产品推荐
相关产品推荐

