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

EKS集群中服务无法从公网访问问题求助

排查EKS服务公网访问NLB失败的步骤

1. 核对NLB核心配置

  • 检查NLB监听规则:确认监听的端口、协议和Pod内服务的端口完全匹配,若有端口转发规则,需验证转发逻辑是否正确。
  • 查看目标组健康状态:如果目标组内EC2实例显示不健康,NLB会拒绝转发流量。重点检查健康检查的路径、端口是否与服务的健康端点一致,比如服务用/health做健康检查,目标组需同步配置该路径和对应端口。
  • 确认NLB类型:确保NLB是internet-facing(公网型),而非internal(内网型),公网型NLB才会分配可对外访问的IP。

2. 验证EKS Service与NLB的关联有效性

  • 检查Service配置:确认Service的type为LoadBalancer,且通过注解指定使用NLB:service.beta.kubernetes.io/aws-load-balancer-type: nlb。
  • 核对Service标签选择器:确保Service的selector与Pod的标签完全匹配,不匹配的话Service无法关联到Pod,流量根本无法触达Pod。
  • 查看Service端点:执行kubectl get endpoints <你的服务名称>,确认输出中包含Pod的IP且状态正常。如果没有端点数据,说明Service未匹配到任何Pod。

3. 检查EC2实例的网络链路

  • 验证子网路由表:EC2实例所在的子网路由表必须包含0.0.0.0/0指向互联网网关(IGW)的路由(公有子网场景);如果是私有子网,需确保有NAT网关配置,但公网NLB通常要求实例在公有子网。
  • 测试节点端口可达性:在EC2实例内部执行curl localhost:<Service的节点端口>,如果无法访问,说明kube-proxy未正确完成节点端口到Pod的转发。
  • 确认EC2实例的安全组:虽然你已经开放全流量,但再次确认安全组是否关联到了目标EC2实例,避免配置了安全组但未绑定实例的情况。

4. 检查Pod的网络策略限制

  • 查看是否存在NetworkPolicy:执行kubectl get networkpolicy,如果有相关策略,需确认规则是否允许来自EC2节点或NLB目标组的流量访问Pod的服务端口。NetworkPolicy会拦截未被允许的入站流量。

5. 抓包定位流量断点

  • 在EC2实例上抓包:执行tcpdump -i any port <Service的节点端口>,然后从公网访问NLB的IP,观察是否有流量到达EC2。如果没有流量,问题出在NLB到EC2的链路;如果有流量但无响应,排查EC2到Pod的转发环节。
  • 在Pod内抓包:执行kubectl exec -it <Pod名称> -- tcpdump -i any port <Pod的服务端口>,确认流量是否到达Pod内部。如果未到达,检查kube-proxy配置或Service端点映射。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 19:10:26