提问人:Gregor A. Lamche 提问时间:11/14/2023 最后编辑:Gregor A. Lamche 更新时间:11/14/2023 访问量:36
与 Kubernetes Pod 的点对点
Peer-to-Peer with Kubernetes Pods
问:
我有 n 个相同的 Kubernetes Pod,它们应该一起执行 k 个任务。一个 pod 收到 REST 请求,告诉它执行 k 数量的任务。那个豆荚怎么能告诉其他人该怎么做?
举个例子,让它更清楚一点:如果我有 4 个 pod 正在运行,并且收到一个包含 20 个任务的请求,则每个 pod 应该执行 5 个任务。对于每次扩展或 Pod 崩溃,应尽快调整该任务编号。
限制:应该使用 Kubernetes,因为这是我们的系统设置。Kubernetes 设置无法真正更改。我无法将副本限制为仅 1 个 (ArChItEcTuRe ReQuIrEmEnT),因此我不能将其编写为单体。正因为如此,我也无法编写主从设置(因为我可能有重复的主 pod)。
有一些选项,不同的 pod 通过 table-storage/redis 进行通信,但这似乎非常有限且缓慢(一次只能写入一个,并且每个 pod 都需要写入以保持活动状态)。理想情况下,当一个包含 1000 个任务的请求传入时,我希望立即启动这些任务(忽略启动更多 Pod 以实现这些任务的潜在需求)。
另一个选项是使用事件中心,但不能直接对单个 Pod 进行寻址,也无法向所有 Pod 发送事件。
每个 Pod 需要知道的是请求的任务量 (k) 和正在运行的 Pod 数量 (n)。在正常的点对点设置中,这很容易,但由于 Kubernetes 不适用于这种服务行为,因此如果没有大量的黑客攻击,似乎是不可能的。
除了滥用表存储之外,有没有一些好的方法可以在 Pod 之间建立一些 peed-to-peer 通信?
PS:任务无限期运行。它们会一直运行,直到任务金额再次设置为 0。如果一个 pod 崩溃了,另一个 pod 就会介入并接手任务。
答: 暂无答案
评论