gpt4 book ai didi

kubernetes - 从一组副本中选择一个 kubernetes pod 来执行任务

转载 作者:行者123 更新时间:2023-12-05 08:06:37 26 4
gpt4 key购买 nike

我有一个在 Kubernetes pod 中运行的 java 应用程序。

应用程序执行多项任务(taskAtaskB 等)。该应用程序支持在不同的 pod 中运行多个实例。所有的 pod 都在执行相同的任务。

但是,有一个任务只能由一个 pod 完成(例如,taskA 应该只在其中一个 pod 中运行)。如果执行特定任务的 pod 死亡,其他节点之一应该开始执行该任务(被动节点,关于 taskA,接管)。

k8s 是否支持此功能,或者我是否需要使用其他服务(例如 zookeeper)?

最佳答案

Kubernetes 不知道您的 pod 中正在运行什么或您的请求中有什么。您的建议(几乎)没有直接支持。

您可能会查找的更一般的主题是领导者选举。在您的示例中,集群领导者是唯一可以执行 taskA 的人。 ZooKeeper普遍用于此;有一个更新的算法叫做 Raft那也可以。您必须将对此的支持写入您的应用程序。

Kubernetes 中最接近的是 StatefulSet . StatefulSet 的有用特性是 its replicas are numbered starting from 0 ,因此 pod 可以查看自己的主机名并确定它是哪一个。如果编号较低的 pod 发生故障,则 Kubernetes 将以相同身份重新启动它。您可以设置只有 pod 0 可以执行 taskA 的规则,这在实践中可能会满足您的要求。

关于kubernetes - 从一组副本中选择一个 kubernetes pod 来执行任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60000255/

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