Docker Desktop部署SpringBoot应用遇Startup探针连接拒绝问题求助
问题排查与解决方案
1. 验证镜像本身的可用性
先脱离Kubernetes环境,直接在本地运行容器测试应用是否正常:
docker run -p 8080:8080 rahulwagh17/kubernetes:jhooq-k8s-springboot
然后用curl或浏览器访问http://localhost:8080/hello:
curl http://localhost:8080/hello
如果请求失败,说明镜像本身存在问题,比如应用未正确打包、端点不存在或服务未监听8080端口,需先修复镜像。
2. 查看Pod的应用启动日志
通过Kubectl查看容器内的应用启动日志,定位具体错误:
kubectl logs <你的Pod名称> # 替换为实际Pod名,例如jhooq-springboot-6dbc755d48-4pqcz
常见问题包括:
- JVM内存不足(当前128Mi内存限制可能不足以启动SpringBoot应用)
- 应用启动时的配置错误、依赖缺失
- 端口占用或服务未绑定到8080端口
3. 调整资源限制
当前Deployment中给容器分配的内存限制仅128Mi,对于多数SpringBoot应用来说过低。修改Deployment的资源配置:
resources: requests: memory: "256Mi" cpu: "512m" limits: memory: "256Mi" cpu: "512m"
更新Deployment:
kubectl apply -f <你的Deployment文件路径>
4. 优化探针配置
针对Startup探针:
如果应用启动较慢,可适当调整参数延长等待时间,也可添加初始延迟让探针晚启动:
startupProbe: httpGet: path: /hello port: 8080 initialDelaySeconds: 20 failureThreshold: 60 periodSeconds: 10
注意:
配置startupProbe后,Kubernetes会在探针成功前暂停livenessProbe和readinessProbe的检测,直到应用完成启动。
5. 确认端点正确性
检查SpringBoot应用的/hello端点是否:
- 支持GET请求(探针默认使用GET方法)
- 路径拼写正确(注意大小写,SpringBoot默认路径大小写敏感)
- 未被权限拦截或需要额外请求头
内容的提问来源于stack exchange,提问作者Kailash
相关产品推荐
相关产品推荐

