Kubernetes,如何在同一部署中启用Pod间DNS?

时间:2019-06-24 17:15:21

标签: kubernetes dns

我是Kubernetes的新手,我正在尝试通过DNS进行Pod间通信。

我的k8中的豆荚是使用Deployment生成的。我的问题是所有Pod都将其主机名报告给Zookeeper,而Pod使用在Zookeeper中找到的那些主机名来ping其他同级。它总是失败,因为在pod之间无法解析对等方的主机名。

现在唯一的解决方案是将每个Pod的主机名手动添加到对等方的/ etc / hosts文件中。但是这种方法不能持久地用于大型集群。

如果有一个用于Pod间通信的DNS解决方案,那么它可以记录任何新生成的Pod,并删除失效的Pod,这将非常有用。

谢谢。

2 个答案:

答案 0 :(得分:1)

您需要使用指向您的广告连播的服务定义

https://kubernetes.io/docs/concepts/services-networking/service/

有了它,您就有了一个平衡的代理来控制Pod间的通信,并且无论Pod的状态如何,Kubernetes上的内部DNS都会照顾该服务,而不是每个Pod。

如果该简单解决方案无法满足您的需求,则可以使用coreDNS将kubedns替换为默认内部DNS。

https://coredns.io/

答案 1 :(得分:1)

我发现的一个解决方案是在hostname下添加subdomainspec->template->spec->,然后成功通过每个Pod之间的主机名进行通信。

但是,此解决方案相当笨拙,因为我无法将每个部署的replicas设置为大于1,否则我将在群集中获得多个具有相同主机名的Pod。如果群集中有10个具有相同功能的从属节点,则需要创建10个部署。

有更好的解决方案吗?