无法访问部署在AKS Pod中的SpringBoot应用求助
排查AKS中SpringBoot应用无法通过外部IP访问的问题
核心排查方向
因部署NGINX时相同操作可正常访问,说明AKS集群的LoadBalancer、基础网络配置无问题,问题集中在SpringBoot应用本身或端口映射细节上。
1. 确认SpringBoot应用监听的端口
SpringBoot默认监听8080端口,但你暴露Service时指定的是--port=80,需验证容器内应用实际监听端口:
- 进入Pod内部检查端口监听状态:
kubectl exec -it my-first-pod -- netstat -tulpn - 或直接在容器内测试本地访问:
kubectl exec -it my-first-pod -- curl http://localhost:8080
若应用确实监听8080,需在暴露Service时补充target-port参数(关联容器内应用端口):
kubectl expose pod my-first-pod --type=LoadBalancer --port=80 --target-port=8080 --name=my-first-service
2. 检查SpringBoot应用的绑定地址
若应用代码或配置中绑定了127.0.0.1,则仅能容器内部访问,外部无法穿透:
- 查看应用启动日志确认绑定地址:
日志中需存在类似kubectl logs my-first-podTomcat started on port(s): 8080 (http) with context path ''的内容,且绑定地址为0.0.0.0。 - 若绑定了
127.0.0.1,修改application.properties或application.yml:
重新构建镜像后重新部署。server.address=0.0.0.0 server.port=8080
3. 验证Service到Pod的连通性
在集群内临时启动一个测试Pod,访问Service的ClusterIP确认转发是否正常:
kubectl run -it --rm busybox --image=busybox:1.36 -- wget -qO- http://10.0.184.166:80
若访问失败,说明Service与Pod的端口映射不匹配;若成功,则LoadBalancer到Service的转发大概率无问题。
4. 检查Pod的实际运行状态
虽然Pod显示Running,但可能应用未完全启动:
- 查看Pod的事件日志:
确认无启动失败或异常重启事件。kubectl describe pod my-first-pod - 若配置了健康检查探针,需验证探针路径、端口是否与应用实际情况匹配,未通过探针的Pod会被Service排除在流量转发列表外。
内容的提问来源于stack exchange,提问作者user3310115
相关产品推荐
相关产品推荐

