发布时间: 2021-12-02 09:41:36
云原生时代,Kubernetes(K8s) 已经成为云原生应用编排、管理的事实标准,越来越多的应用选择向 Kubernetes 迁移。
在 CAE 仿真、动漫渲染、物理化学、石油勘探、生命科学、气象环境等需要进行大规模数据计算的领域,HPC(高性能计算) 作为传统的分布式计算模式,有着广泛的应用。在这些相关领域的从业者中,也有很多人希望能将 HPC 应用迁移到容器中运行,通过 Kubernetes 强大的功能来进行作业管理。开源的 Volcano 项目就是一个很好的解决方案。
Volcano 是一个基于 Kubernetes 的云原生批量计算平台,也是 CNCF 的首个容器批量计算项目,主要用于 AI、大数据、基因、渲染等诸多高性能计算场景,对主流通用计算框架均有很好的支持。它提供面向高性能负载的调度策略、完善的作业生命周期管理、异构硬件管理、面向高性能负载的性能优化等能力,目前在很多领域都已落地应用。
业界在使用一些计算框架进行大规模运算时,由于不同框架对作业管理、并行计算等要求不同,导致在高计算密度情况下,资源需求波动大,缺乏高级调度能力。同时也导致了后续部署运维复杂等问题。
Volcano 面向主流计算框架提供统一的批量调度平台,提高资源利用率。同时还提供通用的作业管理、Fair-share,Gang ,bin-pack,preempt,reservation等高级调度算法,简化运维管理。目前 Volcano 已经支持几乎所有的主流计算框架,包括 MindSpore、TensorFlow、Kubeflow、MPI、PyTorch、飞桨、Spark、Flink、HOROVOD 等。
Volcano 支持的部分计算框架
Volcano 整体架构
Volcano 利用声明式的 CRD 定义 API,主要有 3 个核心的 API:Volcano Job、PodGroup、Queue。
Volcano Job 是对高性能作业通用定义,PodGroup 提供了Job 中 Task 的管理能力,Queue为作业排队、公平调度提供了基础。
Volcano 的架构
Volcano 核心组件主要包含三个:Admission、ControllerManager、Scheduler 。
Admission 对 Volcano CRD API 提供校验能力;
ControllerManager 负责对 Volcano CRD 进行资源管理;
Scheduler 对作业供丰富的调度能力。
Volcano社区概况
Volcano 起源于 kube-batch 项目,这个项目最初的目的是解决 Kubernetes 中的分组调度问题。随着 AI 和大数据服务开始要求 Kubernetes 提供更强大、更灵活的调度,kube-batch 与各种场景特定的实践相结合,提供了更丰富的调度能力,同时增加了作业管理、数据管理、运行时管理、异构硬件管理等,形成了一个统一的批处理系统,并被重新命名为Volcano。2020 年 4 月,Volcano 项目由华为云正式贡献给 CNCF,成为 CNCF 迎来的首个容器批量计算项目。
在开源开放、厂商中立的社区治理下,目前 Volcano 在代码托管平台上已获得了 2k+star,430+fork,有 290+ 来自国内外的开发者参与代码贡献。Volcano 社区拥有 9位Maintainer,12 位 Reviewer,有超过50家企业与科研机构参与项目合作,合作伙伴包括华为、腾讯、百度、爱奇艺、滴滴出行、京东、建信金融科技等。在未来,Volcano 将在企业数字化、云原生转型过程中发挥越来越重要的作用。