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

AWS EKS集群私有子网中Pod间客户端-服务端通信故障排查

排查EKS中Client无法调用API服务的常见配置遗漏

1. 内部服务DNS解析问题

Client应用如果用外部ALB域名调用API,会走公网绕圈,可能触发网络限制;正确做法是使用Kubernetes内部Service的DNS名称访问,格式为:{service-name}.{namespace}.svc.cluster.local。

  • 检查Client代码里的API地址配置,确认是否使用内部Service域名而非ALB公网地址。
  • 在Client Pod内执行nslookup {api-service-name}.{namespace}.svc.cluster.local,验证DNS解析是否正常。

2. NodePort Service关联问题

  • 确认API的NodePort Service的selector与Deployment的Pod标签完全匹配,标签拼写、大小写错误都会导致Service找不到后端Pod。
  • 检查Service的端口映射:targetPort是否对应Pod暴露的80端口,port和nodePort配置是否无冲突。

3. 集群网络权限限制

  • EKS节点的Security Group需允许集群内部Pod间通信,比如开放来自集群Pod CIDR段的流量访问NodePort端口,或直接允许内部所有流量。
  • 若Client和API分属不同Namespace,检查是否存在Network Policy限制了跨Namespace的流量访问。

4. ALB Ingress路径配置问题

如果用ALB Ingress统一路由Client和API流量:

  • 确认API的路径规则(如/api/*)被正确转发到API Service,而非Client Service,避免路径冲突。
  • 检查Ingress注解是否正确,比如alb.ingress.kubernetes.io/target-type: ip,直接路由到Pod可跳过NodePort的潜在问题。

5. CORS跨域配置问题

若Client是前端应用(如React/Vue),浏览器同源策略会阻止跨域请求:

  • 确认API服务是否配置了CORS规则,允许Client的ALB域名作为合法源地址。
  • 打开浏览器开发者工具的Network标签,查看请求响应头是否包含Access-Control-Allow-Origin,且值与Client访问域名匹配。

6. Terraform配置细节检查

  • 核对Terraform中Service的selector字段与Deployment的template.metadata.labels是否完全一致,标签不匹配会导致Service无法关联Pod。
  • 确认Ingress资源(若存在)是否正确关联两个Service,路径规则无重叠或错误。
  • 检查Terraform变量是否存在Namespace配置不一致的情况,导致Client和API分属不同Namespace且未配置跨域访问权限。

快速验证步骤

  1. 进入Client Pod内部,执行curl http://{api-service-name}.{namespace}.svc.cluster.local,查看是否能获取API响应。
  2. 若curl成功,说明内部网络正常,问题出在Client的API地址配置或CORS规则。
  3. 若curl失败,执行kubectl describe service {api-service-name},查看Endpoints字段是否有Pod IP,无IP则说明Service与Pod标签不匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 11:16:01