Networking 副本集中所有POD之间的消息传递

Networking 副本集中所有POD之间的消息传递,networking,kubernetes,Networking,Kubernetes,我正在编写一个应用程序,部署到Kubernetes,我希望每个吊舱都能放在那里 与副本集中所有其他POD的TCP连接,以便任何容器都可以通知其他容器 某些用例中的容器。如果添加了一个pod,则应在它和所有pod之间创建一个新连接 副本集中的其他播客 从给定的pod,如何打开到所有其他pod的TCP连接?也就是说,我如何发现一切 他们的IP地址 我有一个集群服务DNS名称,它通过选择器指向这些pod,这就是机制 到目前为止,我一直在考虑尝试使用。例如,在一个数据库中重复打开与该DNS名称的TCP连

我正在编写一个应用程序,部署到Kubernetes,我希望每个吊舱都能放在那里 与副本集中所有其他POD的TCP连接,以便任何容器都可以通知其他容器 某些用例中的容器。如果添加了一个pod,则应在它和所有pod之间创建一个新连接 副本集中的其他播客

从给定的pod,如何打开到所有其他pod的TCP连接?也就是说,我如何发现一切 他们的IP地址

我有一个集群服务DNS名称,它通过选择器指向这些pod,这就是机制 到目前为止,我一直在考虑尝试使用。例如,在一个数据库中重复打开与该DNS名称的TCP连接 循环,每次通过连接请求一个容器ID,当我得到至少一个容器ID时暂停 每个容器ID有三个连接。然后每隔一分钟左右重复一次,以获得新的POD 已添加。一个keepalive可以用来移除与已经消失的豆荚的连接

有更好的方法吗

如果有关系的话,我会用围棋写这个申请

例如,在循环中重复打开与该DNS名称的TCP连接,每次通过连接请求一个容器ID,在每个容器ID至少有三个连接时暂停。然后每分钟左右重复一次,以获得已添加的新POD

这听起来不像是固溶体

Kubernetes不提供您想要的现成功能

检测吊舱

一种可能的解决方案是查询KubernetesAPI服务器,查找与选择器(标签)匹配的POD。使用并查看例如。您可能希望观察新的播客,或者定期查询

连接到吊舱

当您知道要连接到的pod的名称时,可以使用

例如,在循环中重复打开与该DNS名称的TCP连接,每次通过连接请求一个容器ID,在每个容器ID至少有三个连接时暂停。然后每分钟左右重复一次,以获得已添加的新POD

这听起来不像是固溶体

Kubernetes不提供您想要的现成功能

检测吊舱

一种可能的解决方案是查询KubernetesAPI服务器,查找与选择器(标签)匹配的POD。使用并查看例如。您可能希望观察新的播客,或者定期查询

连接到吊舱


当您知道要连接到的pod的名称时,可以使用。

一个更简单的解决方案是使用Zookeeper对当前活动的pod进行簿记。是用于维护配置信息、命名、提供分布式同步和提供组服务的集中式服务

它被卡夫卡等组件用于领导人选举、团体成员等

你可以用其中一个食谱或一个


一旦一个豆荚出现,它将与动物园管理员建立一个长期运行的连接。这将用于跟踪当前可用的吊舱。当pod关闭时,连接消失,因此列表中只有活动成员

一个更简单的解决方案是使用Zookeeper对当前活动的豆荚进行簿记。是用于维护配置信息、命名、提供分布式同步和提供组服务的集中式服务

它被卡夫卡等组件用于领导人选举、团体成员等

你可以用其中一个食谱或一个


一旦一个豆荚出现,它将与动物园管理员建立一个长期运行的连接。这将用于跟踪当前可用的吊舱。当pod关闭时,连接消失,因此列表中只有活动成员

如果POD之间提到的通信不是本应用程序的主要功能,而是本应用程序需要此功能,我强烈建议不要重新发明轮子并使用第三方组件

看起来是一个很好的候选者,尤其是Redis的机制

因此,所有的pod都会订阅Redis中的某个频道,当一个pod想要通知其他人时,它只会在同一频道上发布一条消息


Redis拥有多种语言的客户端库,包括。也很容易通过its部署到Kubernetes。

如果吊舱之间的通信不是此应用程序的主要功能,而是应用程序需要此功能,我强烈建议不要重新发明轮子并使用第三方组件

看起来是一个很好的候选者,尤其是Redis的机制

因此,所有的pod都会订阅Redis中的某个频道,当一个pod想要通知其他人时,它只会在同一频道上发布一条消息

Redis拥有多种语言的客户端库,包括。也很容易通过its部署到Kubernetes