【问题标题】:Kubernetes How to confirm DNS is workingKubernetes 如何确认 DNS 是否正常工作
【发布时间】:2018-08-08 02:41:55
【问题描述】:

我已经在 Windows 上使用 MiniKube 成功创建了一个 Kubernetes POD/Service。但我现在想确保 DNS 正常工作。

DNS 服务显示为正在运行

.\kubectl get pod -n kube-system

这表明 kube-dns pod 正在运行

我的 DNS 添加也显示为正在运行

然后我想验证 DNS 是否正常工作,理想情况下,我想测试其上具有服务的 POD 是否可以通过 DNS 名称查找服务。

但我从这样简单的开始,在那里我得到了我正在运行的 POD

现在我有了我的 POD 名称,我想尝试使用以下命令在其中进行简单的 DNS 查找

.\kubectl exec simple-sswebapi-pod-v1-f7f8764b9-xs822 -- nslookup google.com

我在哪里使用 kubectl exec 尝试在找到的 POD 中运行这个 nslookup(我应该在上面指出)。

但我得到了这个错误

为什么在 POD 中找不到 nslookup。所有关键的事情似乎都很好

  • Kube-DNS pod 正在运行(如上所示)
  • DNS AddOn 已安装并正在运行(如上所示)

我遗漏了什么,是否需要启用其他功能才能在我的 POD 中进行 DNS 查找?

【问题讨论】:

  • 您的 pod 内没有 nslookup 工具(您的图像没有它)。在 pod 中执行 shell 并安装 nslookup 然后重试。
  • 这是否意味着 shell 命令需要成为我初始 docker 映像的一部分。或者我现在可以这样做吗?如果是这样,任何一个例子的机会。我是新来的。猜猜这就是为什么我看到的大多数 DNS 查找示例都使用 nslookup 附带的busybox
  • 想想我要做的是创建一个新的服务/POD,它使用繁忙的框来检查 DNS 查找内容。再次感谢您的回答。你应该在这里宣传你的评论以获得完整的答案,然后我可以投票给你
  • @tselvan 我在这个问题中添加了另一部分,对这个新查询有什么想法吗?

标签: dns kubernetes


【解决方案1】:

要这样做,您的容器需要在构建的映像中包含您要使用的命令。

旁注:kubectl debug 将在不久的将来加入 kube,https://github.com/kubernetes/kubernetes/issues/45922 通过使您能够将自定义容器附加到现有 pod 并在其中进行调试来帮助解决此类问题

【讨论】:

  • 好吧,我明白了。 @tselvan 也这么说。
  • 我在这个问题中添加了另一部分,对这个新查询有什么想法吗?
【解决方案2】:

更多关于这我将busybox安装到POD中以允许我使用nslookup,这使我能够做到这一点

所以这看起来很酷,但我是否应该无法通过其 IP 地址或 DNS 名称 ping 该服务,这似乎解决得很好,如上所示。

如果我在busybox命令提示符内ping google.com一切正常,但是当我对DNS名称的该服务的IP地址执行ping操作时,它永远不会到达任何地方。 p>

DNS 查找显然有效。我错过了什么?

【讨论】:

  • 要让 ping 正常工作,该服务应该监听 ICMP 请求。 superuser.com/questions/549617/…
  • 而k8s服务没有监听ICMP请求的原因基本上是因为它们没有相同的iptables规则。在此处阅读最后一部分:leebriggs.co.uk/blog/2017/02/15/…
  • 再次感谢,我是开发人员,所以这不是日常工作。但我有点喜欢它,非常感谢您的回答
猜你喜欢
  • 2015-09-08
  • 1970-01-01
  • 1970-01-01
  • 2019-11-03
  • 1970-01-01
  • 2014-02-15
  • 1970-01-01
  • 1970-01-01
  • 2021-11-01
相关资源
最近更新 更多