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

在AWS EKS中部署Ingress-Nginx如何将内部NLB改为公网NLB?

解决EKS中Ingress-Nginx公网NLB配置问题

针对你的EKS 1.27环境,使用Ingress-Nginx 4.7.1 Helm Chart部署时,要将默认的内部NLB改为公网NLB,只需在Helm values中配置以下关键参数(你之前添加的子网标签反而可能起反作用,无需依赖):

核心配置参数

在ArgoCD应用的values配置(或Helm values.yaml)中添加/修改以下内容:

controller:
  service:
    # 指定负载均衡类型为NLB,并设置为公网访问
    annotations:
      service.beta.kubernetes.io/aws-load-balancer-type: "nlb"
      service.beta.kubernetes.io/aws-load-balancer-scheme: "internet-facing"
    # 可选:需保留客户端真实IP则设为Local,否则用默认Cluster
    externalTrafficPolicy: "Local"
    # AWS NLB不支持指定固定公网IP,无需设置loadBalancerIP

关键说明

  1. aws-load-balancer-scheme注解:这是强制NLB转为公网的核心配置,默认值为internal,必须显式设为internet-facing。
  2. 子网标签清理:你之前添加的kubernetes.io/role/internal-elb标签会强制AWS创建内部LB,需要移除对应子网的该标签;kubernetes.io/role/elb是为经典ELB设计的,对NLB无效,也可移除。
  3. externalTrafficPolicy:设为Local可让NLB直接将流量转发到运行Ingress Controller的节点,保留客户端真实IP;无需客户端IP时用默认的Cluster即可。

验证部署

部署完成后,执行以下命令检查Service状态:

kubectl get svc -n <你的命名空间>

查看EXTERNAL-IP列会显示NLB的公网DNS,同时在AWS控制台负载均衡器页面,可看到该NLB的"Scheme"为"Internet-facing"。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 15:27:18