volcano 原理分析

为什么需要volcano

随着云计算场景的复杂,各种业务需要更细粒度的调度支持。

  • 降低通信成本:如 分布式训练或推理中,服务下的pod需要尽量调度到同一物理节点,降低pod将数据同步的成本。
  • 优先处理核心业务:不同服务间也会有优先级需求, 在资源不足时始终保证核心业务优先调度处理,非核心业务排队等待。
  • 在线业务对离线业务的临时抢占:在线业务对离线业务的抢占需求,如训练等业务实时性要求很低,如推理业务资源不足时可暂时抢占训练任务资源,待有资源再重启训练业务。

因此针对以上需求,需要有volcano这样的调度框架提供更强的调度能力。

volcano的调度设计

资源组织

业务执行的最终实体都是pod。volcano为了更好的管理资源调度,提供了,queue,job(podgroupd)两层包装抽象。

  • job(podgroup) 可将多个pod 抽象为一个 pod 组,调度中可通过该抽象将一组关联的pod始终作为一个对象调度,保证该组下的pod调度保持同步(如调度在同一节点上降低通信开销)。
  • queue 提供了将job(podgroupd)打包按照job 组的维度分配资源比例。

综上,抽象queue 与 job(podgroup)是为了增加调度的抽象层,使后续扩展的调度策略更加多元,

整体流程是怎样的

  • cache中的资源组织:可见带调度的资源组织,job(podgroupd) 是pod,这里未画出更上层的queue
  • 每轮调度流程:由OpenSession 到 closeSession,调度的阶段抽象为 enqueue,allocate,preempt,

reclaim, backfill 等过程。注:调度的过程是可以根据情况配置,仅选用选用组合。

  • 插件扩展调度策略:调度的各个阶段中,有筛选可用节点,筛选高优先任务等逻辑,这些逻辑包装为hook点,由插件扩展具体的逻辑。如查询可用节点时,有各个插件注册的函数筛选返回最终可用的节点列表

一个pod调度经历了什么

代码分析

调度阶段(action)的组织

插件的注册

批量调度的支持

抢占

队列资源回收

相关推荐
java_cj2 小时前
深入kubectl create源码:从YAML到Pod的完整链路拆解
运维·云原生·容器·kubernetes
源图客5 小时前
【AI向量数据库】Weaviate介绍与部署
运维·docker·容器
码云骑士8 小时前
28-Docker部署Django(下)-docker-compose编排与静态文件处理
docker·容器·django
木雷坞9 小时前
Firecrawl Docker Compose 自托管排查:镜像、Redis、队列和 Playwright
redis·docker·容器·firecrawl
whyfail10 小时前
Colima:把 Docker Desktop 从 Mac 上“瘦身”的那把刀
macos·docker·容器
人工智能培训10 小时前
数字孪生的未来发展方向探析
gpt·深度学习·机器学习·容器·知识图谱
大佐不会说日语~11 小时前
在 Windows 本地用 Docker 部署向量模型(bge-m3)
windows·docker·容器·llm·ollama
xsc-xyc12 小时前
CasaOS + Docker 挂载外接硬盘部署 Jellyfin 私人影院
运维·docker·容器
码云骑士12 小时前
27-Docker部署Django(上)-从2GB到180MB的镜像瘦身实战
docker·容器·django
至此流年莫相忘12 小时前
WSL2 下 Docker Desktop 完全配置指南:从安装到极速体验
运维·docker·容器