繁体   English   中英

Kubernetes Pod N:M调度方法

[英]Kubernetes pods N:M scheduling how-to

批处理计算,蒙特卡洛(Monte Carlo),使用Docker映像,在Google云上运行并由Kubernetes管理的多个作业。 没有复制控制器,只有具有NoRestart策略的多个Pod将计算的有效负载传递到我们的服务器。 到现在为止还挺好。 问题是,我有N节点/小兵的集群,并且有M个作业要计算,其中M > N 因此,我想立即触发M Pod,并告诉Kubernetes以这样的方式调度它,以便在给定的时间仅N正在运行,而其他所有都保持为Pending状态。 一旦完成一个Pod,就计划将下一个Pod从Pending转到Running,依此类推,以此类推,直到完成所有M Pod。

有可能这样做吗?

是的,您可以让他们都要求一个资源,每个节点上只有一个资源,那么调度程序一次将不能调度N个以上的资源。 最常见的方法是让每个Pod在其containers规范的ports部分中要求一个hostPort

但是,我不能完全确定为什么您要将系统限制为每个节点一个这样的Pod。 如果有足够的资源可在每个节点上一次运行多个资源,则应加快您的工作速度,使其运行。

仅作记录,在与Alex讨论,反复试验和对好的数字进行二进制搜索之后,对我有用的是将Pod JSON中的CPU资源限制设置为:

    "resources": {
        "limits": {
            "cpu": "490m"
        }
    }

我不知道这个特定的值如何以及为什么会影响Kubernetes调度程序,但是它使节点一直在运行任务,每个节点在任何给定时刻都只有一个Pod在运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM