Kubernetes,如何在同一部署中启用吊舱间DNS?
我是Kubernetes的新手,我正在尝试通过DNS进行吊舱间通信 我的k8s中的吊舱是使用部署生成的。我的问题是所有的豆荚都向Zookeeper报告它的主机名,豆荚使用Zookeeper中找到的主机名ping其他对等方。它总是失败,因为对等方的主机名在POD之间无法解析 现在唯一的解决方案是手动将每个pod的主机名添加到对等机的/etc/hosts文件中。但这种方法不适用于大型集群 如果有一个用于吊舱间通信的DNS解决方案,它可以记录任何新生成的吊舱,并删除死掉的吊舱,这将非常棒Kubernetes,如何在同一部署中启用吊舱间DNS?,kubernetes,dns,Kubernetes,Dns,我是Kubernetes的新手,我正在尝试通过DNS进行吊舱间通信 我的k8s中的吊舱是使用部署生成的。我的问题是所有的豆荚都向Zookeeper报告它的主机名,豆荚使用Zookeeper中找到的主机名ping其他对等方。它总是失败,因为对等方的主机名在POD之间无法解析 现在唯一的解决方案是手动将每个pod的主机名添加到对等机的/etc/hosts文件中。但这种方法不适用于大型集群 如果有一个用于吊舱间通信的DNS解决方案,它可以记录任何新生成的吊舱,并删除死掉的吊舱,这将非常棒 提前感谢。您
提前感谢。您需要使用指向播客的服务定义 这样,您就有了一个平衡的代理来控制吊舱间的通信,Kubernetes上的内部DNS负责该服务,而不是每个吊舱,无论吊舱的状态如何 如果simples解决方案不符合您的需要,您可以使用coreDNS替代kubedns作为默认的内部DNS
您需要使用指向播客的服务定义 这样,您就有了一个平衡的代理来控制吊舱间的通信,Kubernetes上的内部DNS负责该服务,而不是每个吊舱,无论吊舱的状态如何 如果simples解决方案不符合您的需要,您可以使用coreDNS替代kubedns作为默认的内部DNS
我找到的一个解决方案是在
spec->template->spec->
下添加hostname
和子域
,然后每个pod之间的主机名通信成功
但是,这个解决方案相当愚蠢,因为我无法将每个部署的副本设置为多于1个,否则我将在集群中获得多于1个具有相同主机名的pod。如果集群中有10个具有相同功能的从属节点,则需要创建10个部署
有更好的解决办法吗 我找到的一个解决方案是在spec->template->spec->
下添加hostname
和subdomain
,然后每个pod之间的主机名通信成功
但是,这个解决方案相当愚蠢,因为我无法将每个部署的副本设置为多于1个,否则我将在集群中获得多于1个具有相同主机名的pod。如果集群中有10个具有相同功能的从属节点,则需要创建10个部署
有更好的解决办法吗 谢谢你,沃米。我也使用该服务,但问题是我不能使用该服务的端点地址向Zookeeper注册。每个pod都需要注册自己的主机名。换句话说,Zookeeper节点需要能够解析每个pod的主机名。在这种情况下,您可能更愿意使用其他类似coreDNS的服务来替换默认的kubedns服务,这样您就可以控制DNS的注册方式,并在需要时添加更多的注册。谢谢Wolmi。我也使用该服务,但问题是我不能使用该服务的端点地址向Zookeeper注册。每个pod都需要注册自己的主机名。换句话说,Zookeeper节点需要能够解析每个pod的主机名。在这种情况下,您可能更喜欢用其他类似coreDNS的服务替换默认kubedns服务,这样您就可以控制DNS的注册方式,并在需要时添加更多的注册。找到了解决方案,而不是使用种类:部署,使用kind:StatefulSet
。然后自动生成每个pod的主机名,并在彼此之间进行ping。找到解决方案时,使用kind:Deployment
,而不是kind:StatefulSet
。然后自动生成每个pod的主机名,并且可以在彼此之间ping。