Quantcast
Channel: InfoQ - 促进软件开发领域知识与创新的传播
Viewing all articles
Browse latest Browse all 1056

Kubernetes增强型调度器Volcano算法分析

$
0
0

K8s自带资源调度器有一个明显的特点是:依次调度每个容器。但在AI训练或者大数据,这种必须多个容器同时配合执行的情况下,容器依次调度是无法满足需要的。因为这些计算任务包含的容器想要的是,要么同时都成功,要么就都别执行。

比如,某个大数据应用需要跑1个Driver容器+10个Executor容器(对应AI训练的话,就是1个PS容器+10个Worker容器)。如果容器是一个一个的调度,假设在启动最后一个executor容器(对应AI是Worker容器)时,由于资源不足而调度失败无法启动。那么前面的9个executor容器虽然运行着,其实也是浪费的。AI训练也是一样的道理,必须所有的Worker都同时运行,才能进行训练,一个坏了,其他容器都等于白跑,而GPU被容器霸占着却不能开始计算,成本是非常高的。

所以当总体资源需求小于集群资源时,普通的K8s自带调度器可以跑,没问题。但是当总体资源需求大于集群资源的时候,K8s自带调度器会因为随机依次调度容器,使得部分容器无法调度,从而导致业务占着资源又不能开始计算,死锁着浪费资源。那么,上述两个场景哪一个更加常态呢?不用说,肯定是第二个,很少有企业可以大方到一直让集群空着,此时就需要增强型的K8s资源调度器Volcano了。

资源调度领域

当用户向K8s申请容器所需的计算资源(如 CPU、Memory、GPU等)时,调度器负责挑选出满足各项规格要求的节点来部署这些容器。通常,满足各项要求的节点并非唯一,且水位(节点已有负载)各不相同,不同的分配方式最终得到的分配率存在差异。因此,调度器的一项核心任务就是以最终资源利用率最优的目标从众多候选机器中挑出最合适的节点。


Viewing all articles
Browse latest Browse all 1056

Trending Articles