【问题标题】:Does Kubernetes internally maintain pods / jobs queue?Kubernetes 内部是否维护 pods/jobs 队列?
【发布时间】:2018-09-26 22:51:20
【问题描述】:

我们遇到了kubernetes排队的大问题。

我们正在通过工作流管理器(即 Airflow)向集群管理器(即 AWS Batch)提交作业。由于 AWS 批处理有限制, 无论提交到队列的作业数量如何,批处理都同时执行的作业数量等于集群中可用的 vCPU 数量。 为了克服 AWS 批处理的这个限制,我们计划通过 AWS 批处理迁移到 Kubernetes。

但是,我们不确定kubernetes 是如何处理这个问题的, 在探索过程中,我们在以下链接中获得了队列示例。

  1. https://kubernetes.io/docs/tasks/job/fine-parallel-processing-work-queue/

  2. https://kubernetes.io/docs/tasks/job/coarse-parallel-processing-work-queue/

在这些示例中,我们要求我们将任务写入队列并通过我们的代码从队列中读取。 但是,这里解释的案例并不是我们想要的。 在我们的例子中,Apache airflow 的 Kubernetes_Pod_operator 会将 pod/job 提交到 K8 集群, 我们预计 K8 会将这些作业放入其内部队列中,然后根据可用的集群容量在集群上提取并执行它们。

  • 我们想知道,k8 内部是否支持队列并将作业/pod 放入队列中,以及 根据可用的集群容量在集群上提取并执行它们?

  • 有解决这个问题的办法吗?或者它是 k8 的限制,我们应该为此开发自己的解决方案?

【问题讨论】:

    标签: kubernetes google-cloud-platform google-kubernetes-engine


    【解决方案1】:

    您可以在作业 yaml 中配置容器资源。阅读以下链接了解如何实现这一点:https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/#how-pods-with-resource-requests-are-scheduled

    此配置将确保作业保持在“待处理”状态,直到满足要求。 Kubernetes 调度程序使用一个内部队列,其中存储了所有“待处理”和“调度程序失败”作业。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-09
    • 2018-09-24
    • 2018-09-14
    • 1970-01-01
    • 1970-01-01
    • 2013-08-10
    相关资源
    最近更新 更多