小豆荚在超额认购的Kubernetes集群上饿了大豆荚

时间:2019-12-11 18:49:35

标签: kubernetes job-scheduling kubernetes-pod starvation kubernetes-jobs

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

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

我们遇到的问题是,只要有足够的小容器来保持集群繁忙,我们的大容器就不会真正运行。一旦一个4 GB的Pod完成,Kubernetes就会发现一个4 GB的Pod将适合,而100 GB的Pod将不适合,并且它计划一个新的4 GB的Pod。似乎从未决定100 GB的Pod已经等待了足够长的时间,并且没有在特定节点上调度新的Pod,直到足够的时间使100 GB的Pod可以容纳在那里为止。也许不能说我们的吊舱来自工作,并且有望最终完成,这与Web服务器不同。

如何配置Kubernetes以确保小型Pod不会无限期地饿死大型Pod?我们是否需要某种第三方调度程序来执行这种行为?还是有某种方法可以配置默认调度程序来避免此行为?

0 个答案:

没有答案