EKS集群部署Spring应用失败:Pod CrashLoopBackOff与Feign配置异常
解决方案
1. 修复部署脚本失败与Deployment超时问题
- 解决脚本退出码127问题:打开
./deploy-scripts/deploy.sh,找到调用./kub-errornous-command-to-fail的代码段,直接注释掉该命令;或者在脚本当前目录执行touch kub-errornous-command-to-fail && chmod +x kub-errornous-command-to-fail,创建空的可执行文件占位,让脚本能完整执行。 - 处理Deployment超时被删:手动创建
pe-cache-atp-app-stock-updates-producer-green临时Deployment,修改其progressDeadlineSeconds字段为0(取消进度检查);或者先注入正确的服务ID配置后再部署,避免触发K8s的Deployment进度清理机制。
2. 解决blue Pod CrashLoopBackOff问题
CrashLoop的根源是Spring应用启动失败,直接通过修改Deployment配置修复:
- 执行
kubectl edit deployment pe-cache-atp-app-stock-updates-producer-blue编辑Deployment配置 - 在
spec.template.spec.containers[0].env下添加环境变量,将auth-token.name设置为集群内有效的认证服务K8s Service名称(比如auth-service):env: - name: auth-token.name value: "auth-service" - 保存退出后,K8s会自动重建Pod,应用将正常启动并退出CrashLoop状态。
3. 修复Feign客户端服务ID未解析的启动异常
这是所有问题的核心,上述修改环境变量的方式已直接解决该问题:
- 确认设置的服务名称符合K8s DNS主机名规则:仅包含小写字母、数字、连字符,不能有变量占位符。
- 如果应用使用ConfigMap管理配置,也可以修改对应ConfigMap,添加
auth-token.name=正确服务名,再执行kubectl rollout restart deployment pe-cache-atp-app-stock-updates-producer-blue重启Pod加载新配置。
内容的提问来源于stack exchange,提问作者Nagraj Hiremath
相关产品推荐
相关产品推荐

