华为云云容器引擎CCE | Volcano调度篇:装箱调度(Binpack)

举报
云容器大未来 发表于 2025/11/25 14:44:43 2025/11/25
【摘要】 华为云云容器引擎CCE支持多种资源与任务调度策略,有助于提升应用性能和集群整体资源利用率,CPU资源调度、GPU/NPU异构资源调度以及Volcano调度的主要功能。本系列文章将介绍Volcano在华为云云容器引擎CCE中的应用,本文重点介绍:装箱调度(Binpack)。

华为云云容器引擎CCE支持多种资源与任务调度策略,有助于提升应用性能和集群整体资源利用率,CPU资源调度、GPU/NPU异构资源调度以及Volcano调度的主要功能。本系列文章将介绍Volcano调度在华为云云容器引擎CCE中的运用。

Volcano是一个基于Kubernetes的批处理平台,提供了机器学习、深度学习、生物信息学、基因组学及其他大数据应用所需要而Kubernetes当前缺失的一系列特性,提供了高性能任务调度引擎、高性能异构芯片管理、高性能任务运行管理等通用计算能力。

volcano社区.jpg

装箱调度(Binpack)是一种优化算法,以最小化资源使用量为目标,将资源合理地分配给每个任务,使所有资源都可以实现最大化的利用价值。在集群工作负载的调度过程中使用Binpack调度策略,调度器会优先将Pod调度到资源消耗较多的节点,减少各节点空闲资源碎片,提高集群资源利用率。

  前提条件  

✅ 已创建v1.19及以上版本的集群,详情请参见购买Standard/Turbo集群

✅ 已安装Volcano插件,详情请参见Volcano调度器

  Binpack功能介绍  

Binpack调度算法的目标是最大限度地填满现有节点,尽量避免将Pod调度至空闲节点。具体实现中,调度器会对所有满足条件的节点进行打分,资源利用率越高,得分越高,调度优先级也越高。Binpack算法能够尽可能填满节点,将应用负载靠拢在部分节点,这非常有利于集群节点的自动扩缩容功能。

Binpack为Volcano调度器的多个调度插件之一,与其他调度插件协同工作,共同影响节点的最终得分。用户可自定义Binpack插件的全局权重,并分别为CPU、内存基础资源以及 GPU、NPU等扩展资源配置打分权重,从而控制Binpack在调度决策中的影响程度。在计算Binpack得分时,调度器会综合考虑Pod所请求的各类资源,并基于各资源的打分权重进行加权平均,以确定节点的最终得分。

  Binpack算法原理  

在对节点打分时,Binpack会结合插件的全局权重和各资源维度(如CPU、内存、GPU等)的权重值,计算出节点Binpack得分。节点Binpack得分的计算流程如下:

1️⃣ 首先,对Pod请求资源中的每类资源依次打分,以CPU为例,CPU资源在待调度节点的得分信息如下:

CPU.weight * (request + used) / allocatable

即CPU权重值越高,得分越高,节点资源使用量越满,得分越高。Memory、GPU等资源原理类似。其中:

  • CPU.weight为用户设置的CPU权重
  • request为当前Pod请求的CPU资源量
  • used为当前节点已经分配使用的CPU量
  • allocatable为当前节点CPU可用总量

2️⃣ 通过Binpack策略的节点总得分如下:

binpack.weight * (CPU.score + Memory.score + GPU.score) / (CPU.weight+ Memory.weight+ GPU.weight) * 100

即binpack插件的权重值越大,得分越高,某类资源的权重越大,该资源在打分时的占比越大。其中:

  • binpack.weight为用户设置的装箱调度策略权重
  • CPU.score为CPU资源得分,CPU.weight为CPU权重
  • Memory.score为Memory资源得分,Memory.weight为Memory权重
  • GPU.score为GPU资源得分,GPU.weight为GPU权重

    装箱调度1.png

图1 Binpack策略示例

3️⃣ 如图1所示,假设集群中存在两个节点,分别为Node 1和Node 2,当前有一个Pod请求了CPU、内存和GPU资源。在调度Pod时,Binpack策略将对两个节点进行打分。

假设集群中CPU.weight配置为1,Memory.weight配置为1,GPU.weight配置为2,binpack.weight配置为5。

1、Binpack对Node 1的打分信息如下:

      各资源按照公式计算得分,具体信息如下:

  • CPU Score:CPU.weight * (request + used) / allocatable = 1 * (2 + 4)/ 8 = 0.75
  • Memory Score:Memory.weight * (request + used) / allocatable = 1 * (4 + 8) / 16 = 0.75
  • GPU Score: GPU.weight * (request + used) / allocatable = 2 * (4 + 4)/ 8 = 2

2、节点总得分按照 binpack.weight * (CPU.score + Memory.score + GPU.score) / (CPU.weight+ Memory.weight+ GPU.weight) * 100 公式进行计算,具体如下:
假设binpack.weight配置为5,Node 1在Binpack策略下的得分:5 * (0.75 + 0.75 + 2)/(1 + 1 + 2)* 100 = 437.5

3、Binpack对Node 2的打分信息如下:

  • CPU Score:CPU.weight * (request + used) / allocatable = 1 * (2 + 6)/ 8 = 1
  • Memory Score:Memory.weight * (request + used) / allocatable = 1 * (4 + 8) / 16 = 0.75
  • GPU Score:GPU.weight * (request + used) / allocatable = 2 * (4 + 4)/ 8 = 2

4、Node 2在Binpack策略下的得分:5 * (1 + 0.75 + 2)/(1 + 1 + 2)* 100 = 468.75

4️⃣ 综上,Node 2得分大于Node 1,按照Binpack策略,Pod将会优先调度至Node 2。

  配置装箱调度策略  

安装Volcano后,Binpack策略默认生效。如果默认配置无法达到您降低资源碎片的目标,可以通过“配置中心 > 调度配置”页面自定义Binpack策略权重和各资源维度权重值,增加或降低Binpack策略在整体调度中的影响力。

1、登录CCE控制台,单击集群名称进入集群。

2、在左侧选择“配置中心”,在右侧选择“调度配置”页签。

3、在“资源利用率优化调度”配置中,启用装箱策略 (binpack)。

名称 说明 默认值
装箱调度策略权重 增大该权重值,可提高装箱策略在整体调度中的影响力。 10
CPU权重 增大该权重值,优先提高集群CPU利用率。 1
内存权重 增大该权重值,优先提高集群Memory利用率。 1
自定义资源类型 指定Pod请求的其他自定义资源类型,例如nvidia.com/gpu。增大该权重值,优先提高指定资源的利用率。 -

4、

装箱调度2.png

图2 资源利用率优化调度

5、修改完成后,单击“确认配置”。

📌 更多Volcano云原生批量计算 技术应用,请访问社区仓库或官网:

1️⃣ Volcano云原生批量计算社区官网:https://volcano.sh

2️⃣ Volcano GitHub 仓库: https://github.com/volcano-sh/volcano

3️⃣ Volcano云原生批量计算公开课:https://edu.huaweicloud.com/roadmap/cloudnative.html

4️⃣ 华为云云容器引擎CCEhttps://www.huaweicloud.com/product/cce.html

 


Volcano 是业界首个云原生批量计算引擎,也是 CNCF 首个和唯一的批量计算项目。项目主要用于 AI、大数据、基因、渲染等诸多高性能计算场景,对主流通用计算框架均有很好的支持。目前,Volcano在人工智能、大数据、基因测序等海量数据计算和分析场景已得到快速应用,已完成对 Spark、Flink、Ray、 Tensorflow、PyTorch、Argo、MindSpore、Paddlepaddle 、Kubeflow、MPI、Horovod、Mxnet、KubeGene 等众多主流计算框架的支持,并构建起完善的上下游生态。

 

容器模仿.png更多云原生技术动向

关注容器魔方

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。