如何为POD使用Kubernetes DNS?
在GKE上,kube dns正在我的节点上运行,我可以看到docker容器 我确实可以通过名字访问服务,这对于所有这些应用程序来说都是非常好的,因为负载平衡是一个非常合适的解决方案,但是我如何使用DNS访问单个POD呢 我知道我可以在API中查找特定的pod,但我需要自己更新如何为POD使用Kubernetes DNS?,dns,kubernetes,google-kubernetes-engine,Dns,Kubernetes,Google Kubernetes Engine,在GKE上,kube dns正在我的节点上运行,我可以看到docker容器 我确实可以通过名字访问服务,这对于所有这些应用程序来说都是非常好的,因为负载平衡是一个非常合适的解决方案,但是我如何使用DNS访问单个POD呢 我知道我可以在API中查找特定的pod,但我需要自己更新主机文件,并继续查看pod列表。DNS应该为我做到这一点,那么它在一个pod中是如何使用的呢 Kubernetes文档说DNS信息需要传递给kubelet,但据我所知,我无法访问GKE上的DNS信息,所以GKE上的DNS信息
主机
文件,并继续查看pod列表。DNS应该为我做到这一点,那么它在一个pod中是如何使用的呢
Kubernetes文档说DNS信息需要传递给kubelet,但据我所知,我无法访问GKE上的DNS信息,所以GKE上的DNS信息不是这样设置的,还是需要做些什么来激活它
我的一些服务(特别是zookeeper)自己知道其他节点,并尝试通过主机名(即pod名)连接到它们,除非我自己更新hosts
文件,否则将失败。我想使用综合DNS服务
如有任何关于如何做到这一点的指导,我们将不胜感激
谢谢更新 根据文件,目前的格式为:
\u my-port-name.\u my-port-protocol.my svc.my namespace.svc.cluster.local
请参见此处的相关文档:
原始答案:
到目前为止,这实际上是不可能的。。。但是Kubernetes团队正在研究它
见本期:
更新:
DNS自2015年9月起可用于POD
见公共关系:
简言之:
这将以
.pod.
当前可以禁用,但
为所有吊舱打开或关闭
Kubernetes statefulset支持关联服务名称,并通过服务名称定义pod dns名称 例如,创建一个zk守护程序集和一个zk服务,那么zk守护程序集的第一个pod的dns名称是zk-0.$(名称空间).svc.cluster.local 详情请参阅:
重要提示:服务必须是“”,才能正常工作,也就是说它是
。spec.clusterIP
必须是None
不幸的是,它似乎对我不起作用。它真的应该与kube dns一起工作吗?启用/禁用它的选项是否记录在任何地方?文档在这里:因此,自那时起,它确实发生了一些变化。顶部的第二次更新似乎是错误的。它仍然说它是podIP
…。不幸的是,这是完全无用的™ (因为IP永远无法预测)而且毫无意义™ (因为如果你知道IP,你可以直接使用它,不需要A记录)。我发现唯一有效的方法是headless(使用clusterIP:None
)服务创建…svc.
条目(加上.svc.
作为所有端点的记录)。这意味着我需要为StatefulSet提供两个服务。我花了相当多的时间才发现。我发现coredns支持区域传输功能。“dig-t AXFR cluster.local any”不幸的是,它目前不包括pod(可能是特定于版本的)。