【问题标题】:How to communicate between pods of the same service on the same k8s cluster using k8s-java-client?如何使用 k8s-java-client 在同一个 k8s 集群上的同一服务的 Pod 之间进行通信?
【发布时间】:2019-10-12 05:26:40
【问题描述】:

我有一个 kubernetes 集群,上面有很多服务。如何使用 kubernetes-java-client 让一个 pod 发布一条消息,并从另一个兄弟 pod(同一服务的 pod)接收它。

直到现在,我还没有找到完成工作的方法。

示例: 1 个服务 -> 4 个 pod(4/4 副本集)

在服务中调用 Api,负载均衡将请求带到 1 个 Pod,因此其他 Pod 需要做出反应,因为另一个 Pod 中的特定 Api 已被激活。

所以,pod 发布一个事件,其他兄弟 pod 消费该事件,并做出反应。或者 pod 直接与其兄弟姐妹交流,告诉他们做出反应。

这可能吗?类似情况的正确方法是什么?

【问题讨论】:

  • 我认为您的问题与 kubernetes 无关。听起来您正在寻找的是一种在同一应用程序的多个实例之间进行协调的方法。可以通过多种方式完成(数据库锁、将文件写入共享网络磁盘)。我会考虑使用像 NATS 这样的消息队列来执行此操作。 (nats.io)
  • 这里的用例是什么?理想情况下,所有 pod 都服务于相同的应用程序。他们不应该表现得不同。

标签: java kubernetes kubernetes-pod java-client


【解决方案1】:

除了使用 Kubernetes API 来发现对等 pod(通常通过端点 API)之外,它没有为实际的通信提供任何特别的东西,这取决于您的代码。

【讨论】:

  • 除了直接从上面提到的 coderanger 等服务获取Endpoints 之外,您还可以尝试使用外部队列来传递消息。
猜你喜欢
  • 2021-01-16
  • 1970-01-01
  • 2021-12-30
  • 1970-01-01
  • 1970-01-01
  • 2020-05-17
  • 2019-09-25
  • 2019-06-09
  • 2020-03-20
相关资源
最近更新 更多