1

我们小组最近建立了一个 3 节点的 Kubernetes 集群,我们一直在使用Jobs来安排批处理任务。我们有很多工作要做,而不是在一个特别大的集群上做,所以在任何给定时间都有一堆“挂起”的 Pod 等待在集群上运行。

这些 pod 有不同的资源请求;有些比其他大得多。例如,有些 Pod 需要 4 GB RAM,有些需要 100 GB RAM。

我们遇到的问题是,只要有足够的小 pod 可用以保持集群繁忙,我们的大型 pod 就不会真正运行。一旦一个 4 GB 的 Pod 完成,Kubernetes 就会查看并看到一个 4 GB 的 Pod 可以容纳,而一个 100 GB 的 Pod 不适合,它会安排一个新的 4 GB 的 Pod。似乎从来没有决定一个 100 GB 的 Pod 已经等待了足够长的时间,并避免在特定节点上调度新的 Pod,直到足够的时间完成以使 100 GB 的 Pod 可以容纳在那里。也许它无法判断我们的 pod 来自作业并且预计最终会完成,这与 Web 服务器不同。

如何配置 Kubernetes 以确保小型 pod 不会无限期地饿死大型 pod?是否有某种具有这种行为的第三方调度程序需要我们添加到我们的安装中?或者有什么方法可以配置默认调度程序来避免这种行为?

4

0 回答 0