我有一个运行“ v1.12.6-eks-d69f1”的两节点Kubernetes EKS集群
Amazon VPC CNI Plugin for Kubernetes version: amazon-k8s-cni:v1.4.1
CoreDNS version: v1.1.3
KubeProxy: v1.12.6
集群上运行着两个CoreDNS pod。
我的问题是我的Pod间歇性地解析了内部DNS名称。 (解析外部DNS名称就可以了)
root@examplecontainer:/# curl http://elasticsearch-dev.internaldomain.local:9200/
curl: (6) Could not resolve host: elasticsearch-dev.internaldomain.local
elasticsearch-dev.internaldomain.local已在AWS Route53内部托管区域中注册。上面的内容间歇性地工作,如果我触发了五个请求,则其中两个将正确解决,其余的将失败。
这些是上面的examplecontainer上/etc/resolv.conf文件的内容:
root@examplecontainer:/# cat /etc/resolv.conf
nameserver 172.20.0.10
search default.svc.cluster.local svc.cluster.local cluster.local eu-central-1.compute.internal
options ndots:5
有什么想法可能会发生这种情况吗?
答案 0 :(得分:0)
您应该在容器的dns下面尝试
答案 1 :(得分:0)
pleae看一下“为Amazon EKS集群终端节点启用DNS解析” here。
为端点创建的Amazon Route 53私有托管区域仅与工作节点VPC相关联。
如果是类似的玩具,则表示您的环境。您可以找到解决方案here。
请与结果分享。
答案 2 :(得分:0)
我通过从AWS提供的自定义“ DHCP选项集”切换到默认的“ DHCP选项集”来解决此问题。我几个月前创建了自定义的“ DHCP选项集”,并将其分配给运行EKS群集的VPC ...
我是怎么做到这一点的?
运行“ kubectl get events -n kube-system”后,我意识到以下几点:
Warning DNSConfigForming 17s (x15 over 14m) kubelet, ip-10-4-9-155.us-west-1.compute.internal Nameserver limits were exceeded, some nameservers have been omitted, the applied nameserver line is: 10.4.8.2 8.8.8.8 8.8.4.4
我创建的麻烦的“ DHCP选项集”注入了8.8.8.8和8.8.4.4。我认为我的服务间歇性地解析内部DNS名称的原因是因为CoreDNS服务在内部以循环方式将DNS请求转发到10.4.8.2、8.8.4.4、8.8.8.8。由于最后2个DNS服务器不知道我的Route53内部托管区域DNS记录,因此解析间歇性失败。
注意10.4.8.2是默认的AWS名称服务器。
一旦切换到AWS提供的默认“ DHCP选项集”,EKS服务就可以一致地解析我的内部DNS名称。
我希望这会在将来对某人有所帮助。