EKS私有子网IP耗尽及托管节点组DNS解析故障排查求助
问题解答
关于复制非托管节点SG规则到托管SG的可行性
复制非托管节点的安全组规则到EKS托管节点组的SG,从网络连通性逻辑上是可行的,但存在两个关键问题:
- EKS托管的安全组属于AWS管理资源,后续更新节点组(比如升级K8s版本、扩容)时,AWS可能会重置SG规则,导致你手动添加的规则丢失。
- 你已经执行了该操作但问题未解决,说明安全组并非当前DNS解析故障的核心原因。
DNS解析故障的可能根源(排除安全组后)
既然能ping通IP但无法解析域名,且已确认DNS服务器配置正确,优先排查以下方向:
1. VPC DNS基础配置缺失
检查你的VPC是否开启了DNS解析和DNS主机名两个选项:
- 这两个选项默认开启,但如果被手动关闭,EC2节点无法使用VPC内置的DNS解析器(通常为VPC CIDR网段的第二个IP,如
10.0.0.2),会直接导致域名解析失败。
2. 子网网络ACL(NACL)限制
安全组是实例级的允许规则,而网络ACL是子网级的允许/拒绝规则,需检查新子网的NACL是否允许:
- 入站和出站的UDP 53端口(DNS查询常用)
- 入站和出站的TCP 53端口(DNS区域传输或大查询用)
如果NACL设置了拒绝规则,即使安全组允许,DNS流量也会被阻断。
3. CoreDNS集群组件异常
EKS默认用CoreDNS提供集群DNS服务,需确认其运行状态:
- 执行
kubectl get pods -n kube-system,查看coredns Pod是否处于Running状态,无CrashLoopBackOff或Pending情况。 - 执行
kubectl logs <coredns-pod-name> -n kube-system,检查日志中是否有上游DNS连接失败、权限报错等信息。
如果CoreDNS本身故障,即使节点指向正确的DNS IP,也无法完成解析。
4. 节点网络插件集成问题
托管节点组的节点需要正确加入集群网络插件(如AWS VPC CNI、Calico等):
- 检查节点的网络插件Pod(如
aws-node)是否正常运行:kubectl get pods -n kube-system -o wide | grep aws-node,确认对应新节点的Pod状态正常。 - 如果网络插件未正确初始化,节点无法与CoreDNS的ClusterIP通信,导致解析失败。
5. 节点本地DNS配置异常
虽然你确认了DNS服务器配置正确,但可手动验证节点的/etc/resolv.conf:
- 登录托管节点,查看该文件是否指向VPC DNS解析器或CoreDNS的ClusterIP,是否存在错误的DNS服务器地址,或者被其他配置(如DHCP选项集)覆盖。
内容的提问来源于stack exchange,提问作者jonnybinthemix
相关产品推荐
相关产品推荐

