我有kube-dns在一个(裸机)集群中运行,我知道它可以工作,因为我可以interpolate a service to a name我已经创建并获得一个主机条目:
$ host elk-service-headless.default.svc.cluster.local
elk-service-headless.default.svc.cluster.local has address 10.42.0.151
elk-service-headless.default.svc.cluster.local has address 10.42.0.152
elk-service-headless.default.svc.cluster.local has address 10.42.0.153
(...)
我不知道如何列出kube-dns保存的所有记录。我尝试了standard DNS tricks,如dig和host -l
,但无法获得它们。但无论如何,一定有一种方法可以从Kubernetes本身完成此操作。我尝试检查ConfigMaps,但没有找到我要查找的内容。
2条答案
按热度按时间yws3nbqq1#
这篇文章将帮助您在运行kube-dns的集群上查找K8s服务的内部DNS记录:
1.查找kube-dns服务的ClusterIP:
第一个月
现在我们知道内部K8s DNS解析器IP是172.20.0.10
1.查找应用程序服务端点IP:
kubectl -n fe get ep
1.执行到应用程序Pod:
kubectl -n fe exec -it fe-app-575fdf6cb6-lt7t6 -- sh
1.获取DNS服务名称:
1.列出所有K8s SVC DNS记录的脚本:
tuwxkamq2#
如果您使用的是kube-dns,它使用dnsmaq缓存DNS记录,您可以通过this answer转储记录。
如果你使用的是coredns,它嵌入了一个cache插件来缓存DNS记录,我发现没有办法在这个缓存插件中获取数据。但是我发现coredns可以使用etcd作为后端,所以DNS记录可以缓存在etcd中,但是这需要用这个Corefile重新配置你的coredns: