在EKS Fargate上部署Argo CD遇Pod Pending问题求助
以下是针对该问题的常见排查和解决方向:
检查Fargate Profile配置
EKS Fargate仅调度被Fargate Profile包含的命名空间内的Pod。确保你的Fargate Profile已将argocd命名空间纳入其中,或在已有Profile中添加该命名空间。添加资源请求配置
Fargate要求所有Pod必须明确指定CPU和内存请求,而Argo CD v2.4.7的默认安装清单中部分组件未设置该配置,导致Fargate无法分配资源。需修改Argo CD各组件(如argocd-server、argocd-application-controller、argocd-repo-server等)的Deployment/StatefulSet,添加资源请求:spec: template: spec: containers: - name: <container-name> resources: requests: cpu: "250m" memory: "512Mi"可通过
kubectl edit deployment <deployment-name> -n argocd在线修改,或下载安装清单修改后重新应用。排查存储类兼容性
Argo CD部分组件默认使用EmptyDir卷,虽然Fargate支持EmptyDir,但如果集群配置了不兼容的默认存储类,可能导致调度失败。可查看Pod事件中的存储相关错误,必要时将存储配置调整为Fargate兼容的存储类,或确保EmptyDir配置正常。查看Pod事件获取具体错误
执行以下命令查看Pending Pod的详细事件信息,定位具体失败原因:kubectl describe pod <pending-pod-name> -n argocd事件通常会明确提示是资源不足、Profile未匹配、存储不可用还是其他调度限制。
尝试升级Argo CD版本
较旧的Argo CD版本(如v2.4.7)对Fargate的支持不够完善,建议升级到v2.8及以上版本,新版本针对Fargate做了更多适配优化。
内容的提问来源于stack exchange,提问作者Gauthier Tchey

