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

EKS中LoadBalancer类型Nginx Ingress服务无法访问求助

AWS EKS Nginx Ingress Controller LoadBalancer 公网访问排查步骤

1. 验证ELB基础状态与健康检查

  • 确认ELB处于Active状态:
    针对经典ELB执行:aws elb describe-load-balancers --load-balancer-names <你的ELB名称>
    针对NLB/ALB执行:aws elbv2 describe-load-balancers --names <你的ELB名称>
    检查输出中State字段为active,且关联的子网是公网子网(已绑定互联网网关)。
  • 检查目标组健康状态:
    执行aws elbv2 describe-target-health --target-group-arn <目标组ARN>,确认所有目标(节点或Pod)的健康状态为healthy。如果是不健康,排查:
    • 健康检查端口/路径是否与Ingress Controller Pod的配置匹配(默认是/healthz端口80)
    • 节点安全组是否允许ELB的健康检查流量进入
  • 确认ELB监听规则:检查ELB的80/443端口是否正确映射到Service的对应端口,避免端口不匹配。

2. 核对Service配置细节

  • 检查externalTrafficPolicy:
    执行kubectl get svc ingress-nginx-controller -n ingress-nginx -o yaml,查看该字段:
    • 若为Local:需确保每个节点都运行Ingress Controller Pod,且节点在ELB目标组内;
    • 若为Cluster:确认节点安全组允许kube-proxy转发的流量。
  • 验证Selector匹配:
    执行kubectl get pods -n ingress-nginx --show-labels,对比Service的spec.selector是否与Pod的labels完全一致,不一致会导致ELB无法关联到Pod。
  • 检查端口映射:确认Service的spec.ports[*].targetPort与Ingress Controller Pod的容器端口一致(默认是80/443)。

3. 节点层面网络排查

  • 确认节点网络属性:运行Ingress Controller Pod的节点需处于公网子网(绑定互联网网关),或具备弹性公网IP(针对经典ELB/NLB实例目标模式)。
  • 节点安全组规则:确保安全组允许:
    • ELB的健康检查流量(TCP 80/443,或自定义健康检查端口)
    • 公网到ELB再到节点的80/443端口流量
  • 节点iptables规则:执行iptables-save | grep ingress-nginx,确认存在从Service端口转发到Pod端口的规则,排除kube-proxy配置异常。

4. Helm Values配置校验

  • 检查访问限制:确认controller.service.loadBalancerSourceRanges未设置过窄的IP白名单,若有配置,需确保你的公网IP在允许范围内。
  • ELB类型注解:若使用service.beta.kubernetes.io/aws-load-balancer-type指定了NLB/ALB,需对应匹配Ingress资源的注解(如ALB需用alb.ingress.kubernetes.io系列注解),避免类型不兼容。
  • 端口配置一致性:确认controller.containerPort.http与controller.service.port.http数值一致,避免端口映射错误。

5. 链路连通性测试

  • 集群内测试:在集群中启动一个临时Pod(如kubectl run -it --rm --image=curlimages/curl curl-test),执行curl <ELB地址>,若能访问则排除集群内部链路问题,问题出在公网到ELB的路由或本地网络。
  • 本地 traceroute 分析:执行traceroute xxx-xxx.elb.eu-central-1.amazonaws.com(或mtr工具),查看数据包中断位置,判断是运营商网络问题还是AWS网络故障。
  • 域名解析验证:若使用域名访问,执行nslookup <你的域名>,确认解析到的ELB地址与Service的status.loadBalancer.ingress[0].hostname一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 14:50:21