【问题标题】:Scheduling more pods than there are resources available调度比可用资源更多的 pod
【发布时间】:2017-04-06 18:32:24
【问题描述】:

假设我最终想要运行 1000 个相同的 Pod,但节点资源只允许并行运行 10 个 Pod。

如果每个 pod 干净退出,它们最终会删除它们的 RC,因此如果有足够的时间,所有 pod 都应该运行。

但是,如果我同时安排所有 1000 个 pod,其中 990 个最初将处于待处理状态。 The scheduler 将使所有 990 个 Pod 保持在一个繁忙的循环中尝试被调度,并且只有在 10 个正在运行的 Pod 中的一个被移除后,该操作才会成功(对于某个 P​​od)。

在我的情况下,这个繁忙的循环远非理想,因为它可能会占用调度程序的所有可用资源。是否有 kubernetes 本地提供的替代解决方案?显然,这种调度 pod 数量超出您的处理能力的特殊行为并不是 kubernetes 优化的对象。

【问题讨论】:

  • 听起来你在用你的豆荚做了一些奇怪的事情。在这里使用 Jobs 是否更有意义?
  • 您必须详细解释您的用例,因为一个接一个地运行 1000 个相同的 pod 显然没有意义(假设它们是相同的)。
  • @PixelElephant:原来我不知道工作的存在,而这正是我想要的。如果您想将其发布为答案,我很乐意接受!

标签: kubernetes


【解决方案1】:

这种类型的工作负载更适合Job 资源。

由于您要运行固定数量的 pod,因此最简单的方法是创建一个将 .spec.completions 设置为 1000 的作业。

然后您可以通过.spec.parallelism 控制同时运行的 pod 数量。默认设置为 1,这意味着一次只能运行 1 个 pod,但您可以将其设置为更高的值以使作业更快地完成(例如 10,因为这是您的节点可以处理的限制)。

【讨论】:

    猜你喜欢
    • 2020-10-02
    • 2019-11-30
    • 2019-01-01
    • 2021-10-27
    • 2010-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多