如何使用Kubernetes DNS for pods?

MrE*_*MrE 13 dns kubernetes google-kubernetes-engine

在GKE上,kube-dns在我的节点上运行,我可以看到docker容器.

我可以通过名称访问服务,这对于所有这些负载平衡是非常合适的解决方案的应用程序非常有用,但我如何使用DNS访问各个pod?

我知道我可以在API中查找特定的pod,但我需要自己更新hosts文件,并继续观看pod列表.DNS应该为我这样做,所以如何在pod中使用它?

Kubernetes doc说DNS信息需要传递给kubelet,但是我无法访问我知道的GKE上的内容,所以它只是没有在GKE上设置那样或者有什么办法可以激活它吗?

我的一些服务(特别是zookeeper)自己知道其他节点,并尝试通过主机名(即pod名称)连接到它们,并且除非我hosts自己更新文件,否则会失败.我想使用集成的DNS服务.

任何关于如何做到这一点的指导将不胜感激.

谢谢

MrE*_*MrE 6

更新

根据文档,格式为:

_my-port-name._my-port-protocol.my-svc.my-namespace.svc.cluster.local

请参阅此处的相关文档:https : //kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pods

原始答案:

到目前为止,这实际上是不可能的……但是Kubernetes团队正在研究它。

看到这个问题:https : //github.com/kubernetes/kubernetes/issues/13552

更新

自2015年9月9日起,DNS可用于Pod。请参阅PR:https : //github.com/kubernetes/kubernetes/pull/13759

简而言之:

这将使Pod dns的形式为“ <podIP>.<namespace>.pod.<clusterSuffix>当前可以禁用”,但对所有Pod都启用或禁用。

  • 我发现唯一起作用的是* headless *(使用`clusterIP:None`)服务创建了&lt;pod-name&gt;。&lt;service-name&gt;。&lt;namespace&gt; .svc。&lt;cluster-suffix&gt;条目。 (加上“ &lt;服务名称&gt;。&lt;名称空间&gt; .svc。&lt;集群后缀&gt;”作为所有端点的A记录)。这意味着我需要两个用于StatefulSet的服务。进行了大量的反复试验来找出答案。 (2认同)