云容器引擎 CCE-高性能调度:应用场景3:多种高级调度策略
应用场景3:多种高级调度策略
当用户向Kubernetes申请容器所需的计算资源(如CPU、Memory、GPU等)时,调度器负责挑选出满足各项规格要求的节点来部署这些容器。通常,满足各项要求的节点并非唯一,且水位(节点已有负载)各不相同,不同的分配方式最终得到的分配率存在差异,因此,调度器的一项核心任务就是以最终资源利用率最优的目标从众多候选机器中挑出最合适的节点。
下图为Volcano scheduler调度流程,首先将API server中的Pod、PodGroup信息加载到scheduler cache中。Scheduler周期被称为session,每个scheduler周期会经历OpenSession,调用Action,CloseSession三个阶段。其中OpenSession阶段加载用户配置的scheduler plugin中实现的调度策略;调用Action阶段逐一调用配置的action以及在OpenSession阶段加载的调度策略;CloseSession为清理阶段。
Volcano scheduler通过插件方式提供了多种调度Action(例如enqueue,allocate,preempt,backfill)以及调度策略(例如gang,priority,drf,proportion,binpack等),用户可以根据实际业务需求进行配置。通过实现Scheduler提供的接口也可以方便灵活地进行定制化开发。