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

使用NLB与Istio-ingressgateway暴露EKS API遇阻及相关疑问

问题描述

我是AWS新手,在暴露EKS集群中的API时遇到了问题,部署流程如下:

  • API部署在AWS EKS集群,关联ClusterIP类型的Service
  • 该Service绑定Virtual Service(VS),配置了固定主机名和前缀路由,暴露API端口
  • VS关联Gateway(ingressgateway),此Gateway为所有(*)主机配置了HTTP(80)和HTTPS(443)协议
  • HTTP/HTTPS请求映射到istio-system命名空间下istio-ingressgateway的两个NodePort,这两个NodePort被目标组关联,目标组由NLB监听
  • NLB的DNS名称在Route53中配置了CNAME记录(也曾尝试A类型)

访问时的问题:

  • 使用A类型记录访问返回500内部服务器错误,但API Pod无任何报错
  • 使用CNAME记录访问直接超时
  • 完全参照集群中另一个正常API的部署流程操作,但仍无法访问

排查补充

编辑1:通过CloudWatch捕获到的错误信息:

{"requestId": "e0etYh9BvHcES6A=","IP": "<ip-address>","requestTime": "16/Jan/2023:05:19:17 +0000","httpMethod": "GET","routeKey": "$default","status": "500","protocol": "HTTP/1.1","responseLength": "35"}

编辑2:问题已解决,解决方案:
由于NLB配置为internal模式,需要将其与API网关关联,同时Route53记录需配置为A类型,修改后可正常从浏览器访问API。


疑问解答

1. 通过NLB和istio-ingressgateway暴露EKS集群中API是否为正确方式?

这是一种完全合理且常用的生产级暴露方式:

  • Istio的ingressgateway作为集群内部的统一入口,可承载流量路由、灰度发布、安全策略等Istio生态核心能力
  • NLB(Network Load Balancer)作为AWS层面的负载均衡,能高效处理TCP/UDP流量,适配Istio ingressgateway的NodePort或LoadBalancer Service,同时支持内部/外部访问模式,满足不同场景需求
  • 这种组合既利用了Istio的服务网格能力,又借助AWS NLB的高可用和性能优势,是EKS+Istio架构下的标准实践之一

2. istio-system下的istio-ingressgateway是否仅允许路由一个Service?新增API是否需要创建新的Service?

istio-ingressgateway是集群的统一入口网关,完全支持路由多个Service,不需要为新增API创建新的ingressgateway:

  • 新增API时,只需要为其创建对应的ClusterIP Service(和你当前的做法一致)
  • 然后创建新的Virtual Service,将该Service与已有的ingressgateway Gateway关联,配置好对应的主机名、路由前缀等规则即可
  • 多个Virtual Service可以绑定同一个Gateway,Istio会根据请求的主机名、路径等规则自动将流量路由到对应的后端Service

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 05:20:52