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

私有EKS集群中Istio安装后的公网流量接入问题

解决方案

方案1:修改Istio IngressGateway为公网NLB

Istio默认在私有子网部署时会创建Internal NLB,你可以直接修改IngressGateway的Service配置,将其改为公网可访问的NLB:

  • 编辑IngressGateway的Service资源:
    kubectl edit service istio-ingressgateway -n istio-system
    
  • 找到annotations中的service.beta.kubernetes.io/aws-load-balancer-internal字段,将值从"true"改为"false";如果没有该字段则直接添加:
    annotations:
      service.beta.kubernetes.io/aws-load-balancer-internal: "false"
    
  • 保存退出后,Kubernetes会重新创建公网NLB。同时确保:
    • IngressGateway所在子网关联了**公网网关(IGW)**的路由表
    • 子网安全组允许公网来源的80/443端口入站流量
    • Istio IngressGateway的Listener已配置80/443端口监听(默认已配置)

方案2:用ALB直接对接Istio IngressGateway Pod

跳过中间的Internal NLB,让ALB直接将流量转发到IngressGateway的Pod,避免转发层级的问题:

  • 创建公网ALB,配置时选择IP类型的目标组(支持Pod IP动态发现)
  • 目标组配置:
    • 目标端口设为Istio网关对外提供服务的端口(如80或443)
    • 健康检查配置:端口设为15021,路径设为/healthz/ready,协议选HTTP(这是Istio标准就绪检查端点)
  • 配置ALB监听器:将80/443端口流量转发到上述目标组
  • 确保:
    • ALB安全组允许公网来源的80/443端口入站
    • IngressGateway Pod的安全组允许ALB所在安全组访问80/443和15021端口

方案3:用CloudFront代理Internal NLB

如果必须保留Internal NLB(如合规要求),可使用CloudFront作为公网入口代理流量:

  • 创建CloudFront分发,源设置为Internal NLB的DNS域名,源类型选Custom Origin
  • 配置源访问控制(OAC),生成仅允许CloudFront访问NLB的政策,避免未授权访问
  • 更新Internal NLB的安全组,允许CloudFront官方IP段访问80/443端口
  • 配置CloudFront监听器,将80/443端口流量转发到NLB,动态内容建议禁用缓存

排查要点

之前ALB转NLB方案失败的常见原因:

  • Internal NLB的安全组未允许ALB所在安全组访问80端口
  • Istio网关的80端口未配置健康检查端点(默认健康检查在15021端口)
  • 目标组转发规则未正确映射端口,导致业务流量无法到达Istio网关

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 09:07:14