我在一个(裸机)集群中运行了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本身来实现。我尝试检查ConfigMap,但未找到所需的内容。
答案 0 :(得分:1)
如果您使用的是kube-dns,它将使用dnsmaq进行缓存 DNS记录,您可以通过this answer转储记录。
如果您使用的是coredns,它会嵌入一个cache插件来缓存DNS记录,而我找不到在该缓存插件中获取数据的方法。但是我发现coredns可以将etcd用作后端,因此DNS记录可以缓存在etcd中,但这需要使用以下Corefile重新配置您的coredns:
.:53 {
etcd {
path /skydns
endpoint <etcd_endpoint>
upstream /etc/resolv.conf
}
...
}