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

AWS EKS中能否类似ALB分组将多服务聚合到同个NLB通过端口区分

共享NLB承载多微服务方案解答

可行性说明

默认情况下EKS中每创建一个LoadBalancer类型的Service,AWS Load Balancer Controller都会自动创建一个独立的NLB,无法直接通过多个LoadBalancer Service资源聚合到同一个NLB。但可以通过以下两种方案实现同一个NLB承载多个微服务、按端口区分流量:

  • 方案1:单LoadBalancer Service多端口配置
    若你的多个微服务Pod存在统一的公共标签,可在同一个LoadBalancer类型的Service中定义多组端口映射,每组port对应一个对外暴露的NLB端口,targetPort对应目标微服务的容器端口。NLB会自动为每个配置的端口生成独立的监听器和目标组,自动匹配符合标签规则的后端Pod完成转发。
  • 方案2:TargetGroupBinding自定义资源关联
    先创建一个共享的NLB资源,为每个需要暴露的微服务提前在NLB上配置对应端口的监听器和目标组,之后为每个微服务创建单独的TargetGroupBinding CRD资源,将微服务的Service/Endpoint和对应NLB的目标组绑定即可。该方案无需依赖Pod的公共标签,适配不同微服务独立部署的场景。

方案合理性评估

该方案完全合理,在符合以下场景时推荐使用:

  • 微服务均使用TCP/UDP四层协议,不需要HTTP/HTTPS层面的域名、路径等七层路由能力
  • 需要减少公网暴露IP数量,降低攻击面
  • 相比单服务独占NLB,共享NLB可大幅降低闲置资源成本,减少资源冗余

同时需要注意以下适用边界:

  • 若微服务均为HTTP/HTTPS协议,优先使用alb.ingress.kubernetes.io/group.name注解聚合多个Ingress到同一个ALB的方案,七层路由更灵活,不需要额外做端口规划
  • 共享NLB的对外端口不能冲突,需要提前做好全局端口规划
  • 需要提前评估总流量峰值,避免超过单个NLB的性能上限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 15:54:03