在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
关键说明
aws-load-balancer-scheme注解:这是强制NLB转为公网的核心配置,默认值为internal,必须显式设为internet-facing。- 子网标签清理:你之前添加的
kubernetes.io/role/internal-elb标签会强制AWS创建内部LB,需要移除对应子网的该标签;kubernetes.io/role/elb是为经典ELB设计的,对NLB无效,也可移除。 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
相关产品推荐
相关产品推荐

