AKS集群外部流量路由配置问题排查:LoadBalancer与Ingress
AKS流量路由方案合理性及问题排查
方案合理性说明
LoadBalancer + Ingress 是完全合理的生产级流量架构:
- Ingress Controller 负责集群内部的路由规则管理,而 LoadBalancer 是将 Ingress Controller 暴露到公网的标准方式,这种组合能兼顾路由灵活性(Ingress 的路径、域名规则)和公网访问的稳定性(固定公网IP、负载均衡能力)。
- AKS 的 http_application_routing 插件是官方封装的快速部署方案,它自动集成了 Ingress Controller 和 DNS 解析,适合快速测试场景,但自定义配置空间有限。两种方案没有绝对优劣,取决于你的配置需求。
超时问题排查步骤
- 验证 LoadBalancer 绑定状态
执行kubectl get services -n <ingress-controller-namespace>,确认 Ingress Controller 的 Service 类型为LoadBalancer,EXTERNAL-IP是你通过 Terraform 绑定的公网IP,且状态为Ready。 - 检查网络安全组(NSG)规则
确认 AKS 节点池对应的 NSG 已开放入站8080端口,同时 LoadBalancer 的前端端口已映射到 Ingress Controller Service 的目标端口(比如若 Ingress Controller 监听80端口,需确保 Service 配置了8080:80的端口映射)。 - 确认 Ingress Controller 运行状态
执行kubectl get pods -n <ingress-controller-namespace>,确保所有 Ingress Controller Pod 处于Running状态;通过kubectl logs <ingress-pod-name> -n <ingress-controller-namespace>查看日志,排查启动或路由转发错误。 - 检查 Ingress 资源有效性
执行kubectl get ingress,确认ADDRESS字段已正确关联公网IP或域名;执行kubectl describe ingress <your-ingress-name>,验证路由规则中的 backend 指向正确的 Node.js Service。
404错误排查步骤
- 验证路由路径匹配逻辑
检查 Ingress 规则的path配置:若使用的是 Nginx Ingress Controller,需明确pathType(Prefix或Exact)。例如,若 Node.js 服务的接口路径是/server/api,Ingress 配置应类似:
注意:若使用spec: rules: - http: paths: - path: /server/api pathType: Prefix backend: service: name: <nodejs-service-name> port: number: <nodejs-service-port>Prefix类型,是否需要追加/*取决于 Nginx 的配置模式(部分场景下需用rewrite-target注解调整)。 - 测试后端服务可达性
通过临时 Pod 直接访问 Node.js 的 ClusterIP 服务,验证接口本身是否正常:
若此请求也返回404,说明问题出在 Node.js 服务本身的路径配置,而非 Ingress。kubectl run -it --rm test-curl --image=curlimages/curl -- curl http://<nodejs-service-cluster-ip>:<port>/server/api - 检查 http_application_routing 插件的 Ingress 配置
该插件默认部署的 Ingress Controller 可能带有默认的路由规则或域名限制,需确认你的 Ingress 资源是否正确关联了插件提供的域名后缀,或是否允许直接通过IP访问(部分配置下仅支持域名路由)。
内容的提问来源于stack exchange,提问作者Vincenzo
相关产品推荐
相关产品推荐

