【发布时间】:2019-02-15 23:13:46
【问题描述】:
我在 VPC 中设置了 EKS 集群。工作程序节点在私有子网中启动。我可以成功部署 pod 和服务。
但是,我无法从 pod 中执行 DNS 解析。 (它在容器外的工作节点上运行良好。)
使用https://kubernetes.io/docs/tasks/administer-cluster/dns-debugging-resolution/ 进行故障排除会导致 nslookup 出现以下结果(大约一分钟后超时):
服务器:172.20.0.10 地址一:172.20.0.10
nslookup:无法解析“kubernetes.default”
当我在全公共 VPC 中启动集群时,我没有遇到这个问题。我是否遗漏了从私有子网中进行 DNS 解析的任何必要步骤?
非常感谢, 丹尼尔
【问题讨论】:
-
是
kube-dns还是core-dns?当你输入kubectl get pods -n kube-system时它会说什么?检查pod中容器中的/etc/resolv.conf,它应该指向kube-dns/core-dnsinternap IP地址 -
Rico,kube-dns 已启动并正在运行。不知道如何找到 kube-dns 的内部 IP,但容器中的 resolv.conf 如下所示:nameserver 10.100.0.10 search default.svc.cluster.local svc.cluster.local cluster.local eu-west- 1.compute.internal us-west-2.compute.internal 选项 ndots:5
-
找到了kube-dns服务的IP,是10.100.0.10,也就是我容器的/etc/resolv.conf中指定的IP。
-
你是对的!问题在于我们自定义 VPC 中的网络 ACL。必须打开 UDP 流量才能使 kube-dns 正常工作。还没有弄清楚哪些端口,似乎需要多个端口(包括 53)。感谢您的帮助!
-
@TommyAdamski 只允许我的 ACL 上端口 53 上的出站 UDP 流量对我有用 - 在尝试之前给它几秒钟的时间来更新
标签: kubernetes amazon-vpc amazon-eks