我有 CPU 密集型作业/任务,
需要在kubernetes中运行,下面是job/task的流程
- 我们以队列或 API 调用的形式获取请求
- 应该创建 POd 并处理任务(几个作业可能在几分钟内运行,几个小时内运行)
- 任务完成后删除 pod
这应该在规模上发生,如果队列中有更多作业,则创建更多作业(Max 10, 20, 30 2e 应该定义它)
我使用 KEDA,将创建 POD,并且在作业完成后它会崩溃循环,这是 POD 生命周期中的默认行为,因为它尝试重新创建 pod,因为重启策略设置为 Always。我们还有其他选项,例如 OnFailure、Never,但我读过 Kubernetes Jobs 更合适
对于上述任务,Kubernetes Pods 或 Jobs 哪个是更好的选择,我们应该考虑扩展 POds,并且还需要根据使用情况和队列中的任务数量来扩展 kubernetes 节点(云供应商支持它)。