在私有子网中运行时,AWS EKS上的DNS问题

Dan*_*iel 10 amazon-vpc kubernetes amazon-eks

我在VPC中设置了EKS群集.工作节点在私有子网中启动.我可以成功部署pod和服务.

但是,我无法从pod中执行DNS解析.(它在容器外部的工作节点上工作正常.)

使用https://kubernetes.io/docs/tasks/administer-cluster/dns-debugging-resolution/进行故障排除会导致nslookup出现以下情况(大约一分钟后超时):

服务器:172.20.0.10地址1:172.20.0.10

nslookup:无法解析'kubernetes.default'

当我在一个全公开的VPC中启动集群时,我没有这个问题.我是否缺少私有子网内DNS解析的必要步骤?

非常感谢,丹尼尔

apd*_*pdm 9

我觉得我必须给出一个正确的答案,因为接下来这个问题是我连续10个小时调试的答案.正如@Daniel在评论中所说,我发现的问题是我的ACL阻止了UDP端口53上的出站流量,显然kubernetes用来解析DNS记录.

这个过程对我来说特别令人困惑,因为我的一个pod工作了整个时间以来(我认为?)它碰巧与kubernetes DNS解析器位于同一区域.


小智 8

要详细说明@Daniel 的评论,您需要:

  1. UDP 端口 53 的入口规则
  2. 临时端口上的 UDP 入口规则(例如 1025–65535)

我没有添加 (2) 并且看到 CoreDNS 接收请求并尝试响应,但响应没有返回给请求者。

对于其他处理此类问题的其他人的一些提示,通过将log配置添加到 configmap 来打开 CoreDNS 日志记录,我可以使用kubectl edit configmap -n kube-system coredns. 请参阅此https://github.com/coredns/coredns/blob/master/README.md#examples上的 CoreDNS 文档这可以帮助您确定问题是 CoreDNS 接收查询还是发回响应。

  • 进一步详细说明,UDP 端口 53 的入口规则*不需要*需要打开 - 它可以限制为来自 VPC cidr 块的 IP,即 10.0.0.0/16 (3认同)