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的健康检查流量进入
- 健康检查端口/路径是否与Ingress Controller Pod的配置匹配(默认是
- 确认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
相关产品推荐
相关产品推荐

