gpt4 book ai didi

Kubernetes 不同的容器参数取决于副本集中的 pod 数量

转载 作者:行者123 更新时间:2023-12-04 02:05:02 30 4
gpt4 key购买 nike

我想与工作人员一起扩展应用程序。
可能有 1 名 worker 或 100 名 worker ,我想无缝扩展它们。
这个想法是使用副本集。然而,由于特定领域的原因,扩展它们的适当方法是让每个工作人员知道它的:ID 和工作人员的总数。

例如,如果我有 3 个 worker ,我会有这个:

id:0, num_workers:3
id:1, num_workers:3
id:2, num_workers:3

有没有办法使用 kubernetes 来做到这一点?
我在命令行参数中将此信息传递给应用程序,并且我认为在环境变量中也可以使用它。

杀死所有 worker 并产生新 worker 的尺寸变化是可以的。

最佳答案

在给出特定于 kubernetes 的答案之前,我想指出问题似乎是试图将集群协调下推到应用程序中,根据定义,这几乎比使用专为该任务设计的分布式系统原语更难。例如,如果每个新 worker 在 etcd 中标识自己,那么他们可以 watch keys检测变化,这意味着没有人需要破坏正在运行的应用程序只是为了更新它的对等列表、他们的联系信息、他们的容量、当前的工作量,以及你在构建分布式工作系统时会喜欢的任何有趣的信息。

但是,在节目中:

如果你想要稳定的标识符,那么 StatefulSets是现代的答案。这是否完全适合您的情况取决于(对于您的问题域)id:0被“重新启动”仍然算作 id:0或者它现在已经停止和开始的事实使其失去资格 id:0 .

集群大小的运行列表很棘手。如果你愿意在启动机制上灵活一点,那么你可以拥有一个pre-launch binary在生成实际工作程序之前填充环境(该示例用于直接从 etcd 读取,但同样的原则适用于与 kubernetes API 交互,然后启动)。

您可以通过 initContainer 以更静态的方式执行相同的技巧。将当前的事务状态写入文件,然后应用程序将读取该文件。或者,由于所有 Pod 容器共享网络,应用程序可以联系 localhost 上的“sidecar”容器。通过 API 获取该信息。

到目前为止一切顺利,除了

on size changes for all workers to be killed and new one spawned



我对这个要求的最佳答案是,如果应用程序在启动时必须知道它的对等点,那么我很确定你已经离开了“scale $foo --replicas=5”的领域并进入了“销毁对等点”并重新开始”领域,使用 kubectl delete pods -l some-label=of-my-pods ;谢天谢地,这是什么 updateStrategy: type: OnDelete确实,当与 delete pods 结合使用时命令。

关于Kubernetes 不同的容器参数取决于副本集中的 pod 数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46452213/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com