我是Kubernetes的新手,我正在尝试通过DNS进行Pod间通信。
我的k8中的豆荚是使用Deployment生成的。我的问题是所有Pod都将其主机名报告给Zookeeper,而Pod使用在Zookeeper中找到的那些主机名来ping其他同级。它总是失败,因为在pod之间无法解析对等方的主机名。
现在唯一的解决方案是将每个Pod的主机名手动添加到对等方的/ etc / hosts文件中。但是这种方法不能持久地用于大型集群。
如果有一个用于Pod间通信的DNS解决方案,那么它可以记录任何新生成的Pod,并删除失效的Pod,这将非常有用。
谢谢。
答案 0 :(得分:1)
您需要使用指向您的广告连播的服务定义
https://kubernetes.io/docs/concepts/services-networking/service/
有了它,您就有了一个平衡的代理来控制Pod间的通信,并且无论Pod的状态如何,Kubernetes上的内部DNS都会照顾该服务,而不是每个Pod。
如果该简单解决方案无法满足您的需求,则可以使用coreDNS将kubedns替换为默认内部DNS。
答案 1 :(得分:1)
我发现的一个解决方案是在hostname
下添加subdomain
和spec->template->spec->
,然后成功通过每个Pod之间的主机名进行通信。
但是,此解决方案相当笨拙,因为我无法将每个部署的replicas
设置为大于1,否则我将在群集中获得多个具有相同主机名的Pod。如果群集中有10个具有相同功能的从属节点,则需要创建10个部署。
有更好的解决方案吗?