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

Istio Ingress默认创建私有子网NLB的原因及公网访问内部负载均衡应用的方法咨询

Istio Ingress默认创建私有子网NLB的原因及公网访问内部负载均衡应用的方法咨询

一、为什么默认部署会创建私有子网的NLB?

我帮你梳理几个EKS+Istio环境里最常见的原因:

  • EKS子网标签的自动选择逻辑:AWS的负载均衡控制器会依据子网标签来挑选创建LB的子网。如果你的EKS集群私有子网带有kubernetes.io/role/internal-elb: "1"标签,而公网子网没有对应的kubernetes.io/role/elb: "1"标签,控制器会自动选用私有子网部署NLB,这是AWS LB控制器的默认行为。
  • Istio Helm Chart的默认配置:部分版本的Istio Ingress Gateway Helm Chart,针对AWS EKS环境默认内置了创建内部NLB的注解。你可以查看该Chart的默认values.yaml,大概率能找到类似serviceAnnotations.service.beta.kubernetes.io/aws-load-balancer-internal: "true"的配置项——你没覆盖这个默认值,所以生成了内部NLB。
  • 集群级LB配置的影响:虽然少见,但如果你的EKS集群中AWS Load Balancer Controller有全局配置默认创建内部LB,也会导致这个结果,不过这种情况通常是人为配置过的,你可以检查下控制器的部署参数。

二、如何从公网访问内部LB暴露的应用?

给你几个实用的解决方案,按需选择:

  • 直接将内部NLB改为公网NLB:这是最直接的方式。你可以在重新部署Istio Ingress Helm Chart时覆盖注解:
    helm upgrade --install istio-ingress istio/gateway \
      --set serviceAnnotations."service\.beta\.kubernetes\.io/aws-load-balancer-internal"="false" \
      --set serviceAnnotations."service\.beta\.kubernetes\.io/aws-load-balancer-scheme"="internet-facing"
    
    如果已经部署完成,也可以直接编辑Ingress Gateway的Service资源,添加/修改这两个注解,AWS LB控制器会自动把NLB切换为公开的。
  • 通过NAT网关中转流量:如果想保留内部NLB的架构,你可以在VPC的公有子网部署NAT网关,然后配置安全组允许公网流量通过NAT网关访问内部NLB的IP,同时调整VPC路由表让流量能正确转发。不过这种方式需要额外的网络配置,复杂度较高。
  • 用CloudFront做前端代理:如果需要CDN加速或者额外的安全防护,可以配置CloudFront分发,将源设置为内部NLB的DNS名称,同时通过VPC端点让CloudFront能访问到内部NLB。这种方式适合有全球访问需求或者需要WAF防护的场景。

备注:内容来源于stack exchange,提问作者Rad4

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 12:43:04