Kubernetes如何确认DNS正在运行

时间:2018-02-28 09:15:03

标签: dns kubernetes

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

DNS服务显示为正在运行

.\kubectl get pod -n kube-system

这显示我正在运行kube-dns pod

enter image description here

我还将DNS添加显示为正在运行

enter image description here

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

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

enter image description here

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

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

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

但是我收到了这个错误

enter image description here

为什么它无法在POD中找到 nslookup 。所有关键的事情似乎都没问题

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

我缺少什么,是否还需要启用DNS查找才能在我的POD中工作?

2 个答案:

答案 0 :(得分:1)

要做到这一点,你的容器需要在构建的图像中包含你想要使用的命令。

Sidenote:kubectl debug即将来临https://github.com/kubernetes/kubernetes/issues/45922,这将有助于解决类似问题,方法是将自定义容器附加到现有pod并在其中进行调试

答案 1 :(得分:1)

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

enter image description here

所以这看起来很酷,但是我不能通过其IP地址或DNS名称来ping该服务,这似乎正好解决了如上所示。

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

DNS查询显然正在运行。我错过了什么?