【问题标题】:how can I list all kubernetes DNS records?如何列出所有 kubernetes DNS 记录?
【发布时间】:2019-11-04 20:23:40
【问题描述】:

我在(裸机)集群中运行 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,但没有找到我要查找的内容。

【问题讨论】:

    标签: kubernetes


    【解决方案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
        }
        ...
    }
    

    【讨论】:

      【解决方案2】:

      这篇文章将帮助您在运行 kube-dns 的集群上找到您的 K8s 服务的内部 DNS 记录:

      1. 找到kube-dns服务的ClusterIP:

      kubectl -n kube-system get svc kube-dns

      现在我们知道 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 服务名称:

      【讨论】:

        猜你喜欢
        • 2013-10-19
        • 2018-03-22
        • 2017-05-13
        • 1970-01-01
        • 1970-01-01
        • 2020-02-21
        • 2020-10-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多