You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法通过Postman访问Kubernetes Service问题求助

问题根源分析

核心问题出在你的Scala+AkkaHttp应用仅绑定了localhost(127.0.0.1),而非容器内的所有网络接口(0.0.0.0):

  • 使用port-forward时,流量直接从本地机器转发到Pod内部的回环地址(localhost:8080),因此能正常访问。
  • Kubernetes Service通过Pod的集群IP路由流量,而你的应用只监听回环地址,会拒绝来自Pod集群IP的连接请求,最终触发ECONNREFUSED错误。
解决步骤

1. 修改应用监听地址

调整Akka Http的服务绑定代码,将监听地址从localhost改为0.0.0.0,让服务监听容器内所有可用网络接口:

// 原错误代码
Http().newServerAt("localhost", 8080).bind(route)

// 修改后正确代码
Http().newServerAt("0.0.0.0", 8080).bind(route)

2. 重新构建并推送镜像

重新编译应用,构建新的Docker镜像并推送到你的镜像仓库。

3. 更新Kubernetes Deployment

修改Deployment的镜像版本,触发Pod滚动更新:

kubectl set image deployment/<你的Deployment名称> <容器名称>=<新镜像地址>:<版本>

4. 验证修复

  • 等待Pod更新完成后,进入Pod内部执行命令,确认服务监听地址:
    kubectl exec -it <Pod名称> -- netstat -tulpn
    
    输出中应看到服务监听0.0.0.0:8080,而非127.0.0.1:8080。
  • 再次通过NodePort(192.168.49.2:32100)访问应用,确认连接正常。
额外排查建议

若修改后仍有问题,可执行以下操作进一步定位:

  • 在Pod内部执行curl <Pod集群IP>:8080,确认服务能响应来自集群IP的请求。
  • 检查Service的selector是否与Deployment的labels完全匹配,确保Service正确关联Pod。
  • 查看Service的端点状态:
    kubectl describe service <你的Service名称>
    
    确认Endpoints字段显示Pod的IP和端口,且状态正常。

内容的提问来源于stack exchange,提问作者user21236160

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 05:48:24