我有一个使用筏从多个实例中选出一个领导者的应用程序。这些实例使用八卦协议(protocol),因此只需要知道另一个实例即可发现其余实例。

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

我的问题是:在没有kubernetes API的情况下,如何获取副本集中的Pod以便彼此发现?是否可以通过DNS做到这一点,或者kubernetes是否提供了一些环境变量?

最佳答案

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

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

08-18 01:38