有可能为Kubernetes Jobs建立一个工作池来避免pod创建时间吗



到目前为止,我正在为特定的处理任务构建单独的K8作业。其中一些任务需要大量的CPU/内存,但其他任务相当简单,可以通过内存内处理轻松完成。与作为K8s作业运行时相比,由于pod创建时间的原因,在内存中花费几毫秒的简单任务要慢得多。

我想知道是否有可能有一个像工人池这样的东西专门用于那些特定的K8s作业,这样强度较小的任务就不会产生K8s作业吊舱创建时间的开销。例如,如果我已经创建了5个pod,并且空闲等待任务,那么它们可以快速接收传入的请求进行处理(而无需等待pod启动(。如果这些pod不足以应付即将到来的任务量,理想情况下,它们会自动缩放以适应更多的处理。我找不到清楚的文件来说明我要做的事情,所以如果有任何帮助,我将不胜感激。谢谢

没有所谓的Kubernetes的最小单元是pod,它要么直接启动(创建pod(,要么由另一个资源控制,例如replicaset、job、cronjob。

如果图像已经存在于worker节点上,那么pod的创建时间应该相当短。你的员工在每次工作后都会因为自动秤而终止工作吗?我不确定你的用例到底是什么,以及你认为"足够小"的启动时间是什么。此外,这在很大程度上取决于不同的作业是否需要不同的环境来运行

您可以部署队列服务(例如RabbitMQ(,并通过向该队列添加消息来创建任务,并部署监视这些队列的工作人员。有一些像dramatiq这样的框架使这变得非常容易,并负责所有的队列处理。此外,还有一些基于自定义度量的kubernetes部署规模的解决方案,例如。https://github.com/kedacore/keda,如果作业堆积在队列中,这将包括自动缩放。

如果你不想自己编写代码,你可以看看开源的自动化服务器,例如Jenkins。通常,您会让Jenkins在集群中启动pod,但也可以添加一些立即执行作业的静态工作节点。(在这种方法中,自动缩放可能是一个问题,但这是完全可能的(

最新更新