如果没有kubernetes API,kubernetes副本集中的pod如何发现并相互通信?

时间:2016-11-03 06:41:00

标签: kubernetes service-discovery leader

我有一个应用程序,它使用raft从多个实例中选出一个领导者。这些实例使用八卦协议,所以它只需要知道另一个实例来发现其余的。

我计划将每个实例作为kubernetes pod运行,复制控制器进行复制管理。我还会在这些节点前放置一个服务,以便群集中的其他应用程序可以与它通信。

我的问题是:如何在没有kubernetes API的情况下让副本集中的pod发现彼此?这是通过DNS实现的,还是kubernetes提供了一些环境变量?

1 个答案:

答案 0 :(得分:2)

解决方案是使用无头服务。例如,我们可以部署名为myservice-discovery的无头服务。因为服务是无头的,所以它不进行任何负载平衡或获取集群IP地址。要获取pod的IP地址,然后查询DNS服务器myservice-discovery.mycluster以获取A记录列表。

如果还需要其他服务和pod可以访问pod,您还可以设置第二个普通(非无头)服务。