Kubernetes 在集群中安排尽可能多的吊舱?

Kubernetes 在集群中安排尽可能多的吊舱?,kubernetes,architecture,Kubernetes,Architecture,我要运行一个批处理作业:处理大量媒体文件。我有一个Kubernetes集群来运行它,但我不想改变集群的大小。我想将处理作为低优先级作业运行。只要有空闲的计算资源,它们就应该处理媒体。任何时候有其他工作需要资源,媒体进程都应该暂停 目前,我正在为集群中的每个节点运行一个副本。我为批处理作业定义了一个优先级类,为其他所有作业定义了一个不同的优先级类(具有更高的优先级)。当其他东西需要资源时,这似乎在驱逐正在运行的批处理作业 我定义了一个,特别是一个来阻止批处理作业在同一台机器上调度 代码本身是一个队

我要运行一个批处理作业:处理大量媒体文件。我有一个Kubernetes集群来运行它,但我不想改变集群的大小。我想将处理作为低优先级作业运行。只要有空闲的计算资源,它们就应该处理媒体。任何时候有其他工作需要资源,媒体进程都应该暂停

目前,我正在为集群中的每个节点运行一个副本。我为批处理作业定义了一个优先级类,为其他所有作业定义了一个不同的优先级类(具有更高的优先级)。当其他东西需要资源时,这似乎在驱逐正在运行的批处理作业

我定义了一个,特别是一个来阻止批处理作业在同一台机器上调度

代码本身是一个队列工作者:它从共享队列中提取一个工作项并对其进行处理,然后返回到下一个队列。如果它被中断(因为它被逐出),部分工作就会丢失(这很好)


这是工作正常,但我留下了大量的资源表上,仍然。有没有办法将我的副本计数定义为“尽可能多”?我可以要求比集群能够处理的副本多得多;这是一个好的解决方案吗?或者Kubernetes一次有10个吊舱处于“挂起”状态长达数月,这有什么问题吗?

我认为,要求更多的吊舱超出集群的处理能力,并让它们永远挂起没有什么坏处。我唯一关心的是调度器是否能够区分正常优先级的挂起吊舱,而不是低优先级的挂起吊舱,并且能够优先处理更紧急的吊舱


IMHO是解决这个问题的专业方法,它是利用并使用HPA,使用prometheus查询以集群的当前容量为目标。这可以为您提供连续的群集容量和相应的自动缩放功能。对这个概念有很好的介绍。

Ooh,非常酷!因此,使用HorizontalPodAutoscaler,我可以使用自定义指标。这听起来很棘手,但实际上应该可以设置HPA,用一个作业填充集群上的所有空白。是的。我们已经使用它根据工作人员必须处理的队列中的项目数来扩展部署。我猜您可以创建一个prometheus查询,返回可用的CPU,我们将扩展您的部署,直到该数字达到零。