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

求助:EKS私有集群内Pod无法访问互联网问题解决

排查EKS私有集群Pod无法访问互联网的步骤

以下是针对你遇到的问题(节点能访问互联网但Pod不行,未使用第三方网络插件)的排查和解决步骤:

1. 确认私有子网路由表配置

  • 登录AWS控制台,找到EKS集群对应的VPC,检查Pod所在私有子网的路由表:
    • 必须存在0.0.0.0/0指向NAT网关的路由条目。如果缺失,Pod的出站流量无法通过NAT网关访问互联网。
    • 注意:节点能访问互联网不代表Pod所在子网的路由配置正确,需单独确认。

2. 检查Amazon VPC CNI的SNAT配置

  • 查看kube-system命名空间下的aws-node daemonset配置:
    kubectl describe daemonset aws-node -n kube-system
    
  • 找到AWS_VPC_K8S_CNI_EXTERNALSNAT环境变量:
    • 如果该值为true,Pod会使用自身的弹性网卡IP而非节点IP做SNAT,此时需要确保Pod所在子网的路由表指向NAT网关,且NAT网关能处理Pod的IP段流量。
    • 建议保持默认值false,此时Pod会复用节点的SNAT规则,只要节点能上网,Pod就能通过节点访问互联网。

3. 验证安全组规则

  • 节点安全组:确认出站规则允许0.0.0.0/0(所有协议)的流量。因为默认情况下Pod会使用节点的安全组,节点安全组的出站限制会直接影响Pod。
  • 如果启用了Security Groups for Pods功能,需额外检查Pod关联的安全组是否允许出站互联网访问。

4. 排查DNS解析问题

  • 先测试Pod的DNS解析是否正常,运行临时Pod执行域名解析:
    kubectl run -it --rm busybox --image=busybox:1.28 -- nslookup google.com
    
  • 如果解析失败:
    • 检查CoreDNS Pod状态:kubectl get pods -n kube-system -l k8s-app=kube-dns,确保所有CoreDNS Pod正常运行。
    • 查看CoreDNS配置:kubectl edit configmap coredns -n kube-system,确认forward . /etc/resolv.conf规则未被修改,确保CoreDNS能正常转发DNS请求。

5. 检查Pod的路由配置

  • 进入节点,找到目标Pod的PID:
    kubectl get pod <pod-name> -o jsonpath='{.status.containerStatuses[0].containerID}' | cut -d'/' -f3
    
  • 使用nsenter进入Pod的网络命名空间查看路由:
    nsenter -t <pod-pid> -n ip route
    
  • 确认存在默认路由(default via <node-ip>),且该路由能指向NAT网关。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 08:35:25