我们遇到了kubernetes
排队的大问题。
我们通过Workflow管理器提交作业,即Airflow到集群管理器,即AWS Batch。由于AWS批次存在局限性, 无论提交到队列的多个作业如何,批处理都同时执行与集群中可用的vCPU相等的作业数。 为克服AWS批次的这一限制,我们计划通过AWS批次迁移到Kubernetes。
但是,我们不确定kubernetes
如何处理这个问题,
在探索时,我们将在以下链接中获取队列的示例。
https://kubernetes.io/docs/tasks/job/fine-parallel-processing-work-queue/
https://kubernetes.io/docs/tasks/job/coarse-parallel-processing-work-queue/
在这些示例中,我们需要将任务写入队列并通过我们的代码从队列中读取。 但是,这里解释的案例并不是我们想要的。 在我们的例子中,Apache airflow的Kubernetes_Pod_operator将pod / job提交给K8集群, 我们期待K8将这些工作放在其内部队列中,并将根据可用的集群容量在集群上执行它们。
我们想知道,k8内部支持队列并将作业/ pod放入队列中,并且 根据可用的群集容量在群集上选择并执行它们?
解决这个问题的方法是什么?或者它是k8的限制,我们应该为此开发自己的解决方案吗?
答案 0 :(得分:3)
您可以在作业yamls中配置容器资源。请阅读以下链接,了解如何实现此目标:https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/#how-pods-with-resource-requests-are-scheduled
此配置将确保作业保持在“待处理”状态,直到满足要求为止。 Kubernetes调度程序使用内部队列存储所有“待处理”和“调度程序失败”作业。