volcano-sh/volcano

GitHub: volcano-sh/volcano

Volcano 是 CNCF 孵化项目,为 Kubernetes 提供云原生批量调度系统,专门优化 AI/ML、大数据和 HPC 工作负载的资源管理与调度效率。

Stars: 5514 | Forks: 1339

[![构建状态](https://travis-ci.org/volcano-sh/volcano.svg?branch=master)](https://travis-ci.org/volcano-sh/volcano) [![Go 报告卡](https://goreportcard.com/badge/github.com/volcano-sh/volcano)](https://goreportcard.com/report/github.com/volcano-sh/volcano) [![仓库大小](https://img.shields.io/github/repo-size/volcano-sh/volcano.svg)](https://github.com/volcano-sh/volcano) [![发布版本](https://img.shields.io/github/release/volcano-sh/volcano.svg)](https://github.com/volcano-sh/volcano/releases) [![开源许可证](https://img.shields.io/github/license/volcano-sh/volcano.svg)](https://github.com/volcano-sh/volcano/blob/master/LICENSE) [![CII 最佳实践](https://bestpractices.coreinfrastructure.org/projects/3012/badge)](https://bestpractices.coreinfrastructure.org/projects/3012) [![OpenSSF 记分卡](https://api.scorecard.dev/projects/github.com/volcano-sh/volcano/badge)](https://scorecard.dev/viewer/?uri=github.com/volcano-sh/volcano) [![Gurubase](https://img.shields.io/badge/Gurubase-Ask%20Volcano%20Guru-006BFF)](https://gurubase.io/g/volcano) [Volcano](https://volcano.sh/) 是一个 Kubernetes 原生的批量调度系统,它扩展并增强了标准 kube-scheduler 的功能。它提供了一套专为管理和优化各种批处理和弹性工作负载而设计的全面功能,包括人工智能 (AI) / 机器学习 (ML) / 深度学习 (DL)、生物信息学 / 基因组学以及其他“大数据”应用程序。 这些工作负载通常利用 AI、大数据和 HPC 框架,例如 Spark、Flink、Ray、TensorFlow、PyTorch、Argo、MindSpore、PaddlePaddle、Kubeflow、MPI、Horovod、MXNet、KubeGene 等,Volcano 为这些框架提供了强大的集成支持。 Volcano 融合了在多个系统和平台上大规模运行各种高性能工作负载的超过十五年 collective experience。它结合了开源社区经过验证的最佳实践和创新理念,提供了强大而灵活的调度解决方案。 截至 2025 年,Volcano 已在全球众多行业中得到广泛应用,包括互联网/云服务、金融、制造和医疗领域。许多组织和机构不仅是终端用户,也是该项目的积极贡献者。数百名贡献者积极参与代码提交、Pull Request 审查、Issue 讨论、文档更新和设计提案。我们鼓励您参与 Volcano 项目的持续开发和成长。 ![cncf_logo](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/0e01c69185192634.png) Volcano 是[云原生计算基金会](https://cncf.io/) (CNCF) 的孵化项目。如果您是一个希望在支持云原生生态系统的发展和演进中发挥积极作用的组织,请考虑加入 CNCF。 ## 整体架构 ![volcano](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/a391caccef192637.png) ## 演讲 - [简介:Kubernetes 批处理调度 @ KubeCon 2019 EU](https://sched.co/MPi7) - [Volcano 在 Kubernetes 中运行高性能作业实践 @ ArchSummit 2019](https://archsummit.infoq.cn/2019/shenzhen/presentation/1817) - [Volcano:基于云原生的高密计算解决方案 @ Huawei Connection 2019](https://e.huawei.com/cn/material/event/HC/09099dce0070415e9f26ada51b2216d7) - [使用 Volcano 提升深度学习工作负载的性能 @ KubeCon 2019 NA](https://sched.co/UaZi) - [Kubernetes 批处理能力简介 @ KubeCon 2019 NA](https://sched.co/Uajv) - [使用 Volcano 优化知识蒸馏训练 @ KubeCon 2021 EU](https://www.youtube.com/watch?v=cDPGmhVcj7Y&t=143s) - [基于 Volcano 的在线服务与离线任务混部技术探索 @ KubeCon 2021 中国](https://www.youtube.com/watch?v=daqkUlT5ReY) - [Volcano - 面向 AI、大数据和 HPC 的云原生批处理系统 @ KubeCon 2022 EU](https://www.youtube.com/watch?v=wjy35HfIP_k) - [如何利用 Volcano 提升 AI 制药、自动驾驶和智慧建筑的资源利用率 @ KubeCon 2023 EU](https://www.youtube.com/watch?v=ujHDV5xteqU) - [在 Kubernetes 上更轻松高效地运行您的 AI 工作负载和微服务 @ KubeCon 2023 中国](https://www.youtube.com/watch?v=OO7zpyf7fgs) - [利用 Volcano 增强的智能基础设施优化 LLM 工作流 @ KubeCon 2024 中国](https://www.youtube.com/watch?v=77Qn1-I-muQ) - [Volcano 如何赋能下一波智能应用 @ KubeCon 2024 中国](https://www.youtube.com/watch?v=IzR7zJQ8vMw) - [利用拓扑建模和拓扑感知调度加速 LLM 训练 @ KubeCon 2024 中国](https://www.youtube.com/watch?v=IB54LHQQ8lI) ## 生态系统 - [Spark Operator](https://www.kubeflow.org/docs/components/spark-operator/user-guide/volcano-integration/) - [原生 Spark](https://spark.apache.org/docs/3.5.0/running-on-kubernetes.html#using-volcano-as-customized-scheduler-for-spark-on-kubernetes) - [Flink](https://github.com/GoogleCloudPlatform/flink-on-k8s-operator/blob/master/docs/volcano_integration.md) - [KubeRay](https://docs.ray.io/en/master/cluster/kubernetes/k8s-ecosystem/volcano.html) - [PyTorch](https://github.com/volcano-sh/volcano/blob/master/docs/user-guide/how_to_use_pytorch_plugin.md) - [TensorFlow](https://github.com/volcano-sh/volcano/tree/master/example/integrations/tensorflow) - [kubeflow/training-operator](https://www.kubeflow.org/docs/components/training/user-guides/job-scheduling/) - [kubeflow/arena](https://github.com/kubeflow/arena/blob/master/docs/training/volcanojob/volcanojob.md) - [MPI](https://github.com/volcano-sh/volcano/tree/master/example/integrations/mpi) - [Horovod](https://github.com/volcano-sh/volcano/blob/master/example/kubecon-2019-china/horovod-sample/lm-horovod-tf-mnist-v0.5.yaml) - [PaddlePaddle](https://github.com/volcano-sh/volcano/tree/master/example/integrations/paddlepaddle) - [Cromwell](https://github.com/broadinstitute/cromwell/blob/develop/docs/backends/Volcano.md) - [MindSpore](https://github.com/volcano-sh/volcano/tree/master/example/MindSpore-example) - [MXNet](https://github.com/volcano-sh/volcano/tree/master/example/integrations/mxnet/train) - [Argo](https://github.com/volcano-sh/volcano/tree/master/example/integrations/argo) - [KubeGene](https://github.com/volcano-sh/kubegene) ## 使用案例 - [为什么 Spark 选择 Volcano 作为 Kubernetes 上的内置批处理调度器?](https://www.cncf.io/blog/2022/06/30/why-spark-chooses-volcano-as-built-in-batch-scheduler-on-kubernetes/) - [ING 银行:Volcano 如何赋能其大数据分析平台](https://www.cncf.io/blog/2023/02/21/ing-bank-how-volcano-empowers-its-big-data-analytics-platform/) - [在 Amazon EMR on EKS 上将 Volcano 用作 Apache Spark 的自定义调度器](https://docs.aws.amazon.com/emr/latest/EMR-on-EKS-DevelopmentGuide/tutorial-volcano.html) - [在 AKS 或 Arc Kubernetes 集群上部署 Azure 机器学习扩展](https://learn.microsoft.com/en-us/azure/machine-learning/how-to-deploy-kubernetes-extension?view=azureml-api-2&tabs=deploy-extension-with-cli) - [防止 Volcano 调度器出现 GPU 碎片的实用技巧](https://developer.nvidia.com/blog/practical-tips-for-preventing-gpu-fragmentation-for-volcano-scheduler/) - [在大规模分布式离线计算中使用 Volcano](https://volcano.sh/en/blog/ruitian2-en/) - [OpenI-Octopus:如何避免 Kubernetes 集群中的资源抢占](https://volcano.sh/en/blog/pengcheng-en/) - [Volcano 如何赋能小红书的内容推荐引擎](https://volcano.sh/en/blog/xiaohongshu-en/) - [瑞天如何使用 Volcano 运行大规模离线 HPC 作业](https://volcano.sh/en/blog/ruitian-en/) - [将 Volcano 集成到脑云操作系统中](https://volcano.sh/en/blog/leinao-en/) - [Volcano 上的 HPC:容器如何支持气象行业的 HPC 应用](https://volcano.sh/en/blog/hpc-en/) - [爱奇艺:基于 Volcano 的云原生迁移实践](https://volcano.sh/en/blog/aiqiyi-en/) - [在 Volcano 上进行 PaddlePaddle 分布式训练](https://volcano.sh/en/blog/paddlepaddle-en/) ## 快速入门指南 ### 前置条件 - 支持 CRD 的 Kubernetes 1.12+ 您可以通过以下两种方式之一来试用 Volcano。 ### 使用 YAML 文件安装 在现有的 Kubernetes 集群上安装 Volcano。此方式同时支持 x86_64 和 arm64 架构。 ``` kubectl apply -f https://raw.githubusercontent.com/volcano-sh/volcano/master/installer/volcano-development.yaml ``` 开始使用吧!Volcano 将在 `volcano-system` 命名空间中创建以下资源。 ``` NAME READY STATUS RESTARTS AGE pod/volcano-admission-5bd5756f79-dnr4l 1/1 Running 0 96s pod/volcano-controllers-687948d9c8-nw4b4 1/1 Running 0 96s pod/volcano-scheduler-94998fc64-4z8kh 1/1 Running 0 96s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/volcano-admission-service ClusterIP 10.98.152.108 443/TCP 96s NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/volcano-admission 1/1 1 1 96s deployment.apps/volcano-controllers 1/1 1 1 96s deployment.apps/volcano-scheduler 1/1 1 1 96s NAME DESIRED CURRENT READY AGE replicaset.apps/volcano-admission-5bd5756f79 1 1 1 96s replicaset.apps/volcano-controllers-687948d9c8 1 1 1 96s replicaset.apps/volcano-scheduler-94998fc64 1 1 1 96s NAME COMPLETIONS DURATION AGE job.batch/volcano-admission-init 1/1 48s 96s ``` ### 通过 helm 安装 要安装官方版本,请访问 [helm-charts](https://github.com/volcano-sh/helm-charts) 获取详细信息。 ``` helm repo add volcano-sh https://volcano-sh.github.io/helm-charts helm install volcano volcano-sh/volcano -n volcano-system --create-namespace ``` 供开发者从源代码安装: ``` helm install volcano installer/helm/chart/volcano --namespace volcano-system --create-namespace # 列出 helm release helm list -n volcano-system ``` ### 从代码安装 如果您没有 kubernetes 集群,请尝试从代码库进行一键安装: ``` ./hack/local-up-volcano.sh ``` 此方式暂时仅支持 x86_64 架构。 ### 安装 Volcano Agent 请遵循 [Volcano Agent](https://volcano.sh/en/docs/colocation) 指南来安装 volcano agent。 ### 安装监控系统 如果您想在 Volcano 安装完成后获取 prometheus 和 grafana volcano dashboard,请尝试以下命令: ``` kubectl create -f installer/volcano-monitoring.yaml ``` ### 安装 Dashboard 请遵循 [Volcano Dashboard](https://github.com/volcano-sh/dashboard#volcano-dashboard) 指南来安装 volcano dashboard。 ## Kubernetes 兼容性 | | Kubernetes 1.35 | Kubernetes 1.34 | Kubernetes 1.33 | Kubernetes 1.32 | Kubernetes 1.31 | Kubernetes 1.30 | Kubernetes 1.29 | Kubernetes 1.28 | Kubernetes 1.27 | Kubernetes 1.26 | Kubernetes 1.25 | Kubernetes 1.24 | Kubernetes 1.23 | Kubernetes 1.22 | Kubernetes 1.21 | |-----------------------|-----------------------|-----------------|-----------------|-----------------|-----------------|-----------------|-----------------|-----------------|-----------------|-----------------|-----------------|-----------------|-----------------|-----------------|-----------------| | Volcano HEAD (master) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | - | - | | Volcano v1.14 | - | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | - | - | | Volcano v1.13 | - | - | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | - | - | | Volcano v1.12 | - | - | - | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | Volcano v1.11 | - | - | - | - | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | Volcano v1.10 | - | - | - | - | - | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 图例: * `✓` Volcano 与 Kubernetes 版本完全兼容。 * `+` Volcano 包含该 Kubernetes 版本中可能不存在的功能或 API 对象。 * `-` 该 Kubernetes 版本包含 Volcano 无法使用的功能或 API 对象。 ## 引用 Volcano 如果 Volcano 对您的研究有帮助,我们感谢您的引用。以下是 BibTeX 条目: ``` @misc{volcano2025, title={Volcano: A Cloud Native Batch System}, author={Klaus Ma and Kevin Wang and others}, year={2025}, howpublished={\url{https://github.com/volcano-sh/volcano}}, } ``` ## 会议 我们针对不同的时区举行社区会议。请参阅 [Volcano 社区会议信息](https://github.com/volcano-sh/community#community-meeting)。 资源: - [会议记录和议程](https://docs.google.com/document/d/1YLbF8zjZBiR9PbXQPB22iuc_L0Oui5A1lddVfRnZrqs/edit) - [会议链接](https://zoom.us/j/91804791393) - [会议日历](https://calendar.google.com/calendar/b/1/embed?src=volcano.sh.bot@gmail.com) | [订阅](https://calendar.google.com/calendar/b/1?cid=dm9sY2Fuby5zaC5ib3RAZ21haWwuY29t) ## 联系方式 如果您有任何问题,请随时通过以下方式联系我们: [Volcano Slack 频道](https://cloud-native.slack.com/archives/C011GJDQS0N) | [加入](https://slack.cncf.io/) [邮件列表](https://groups.google.com/forum/#!forum/volcano-sh) 微信:请添加微信号 `k8s2222` 并请求邀请加入群聊。
标签:3D图, AI训练平台, Apex, Argo, CNCF, DNS解析, EVTX分析, Flink, Go语言, GPU调度, Horovod, HPC, K8s调度器, Kubeflow, kube-scheduler, MindSpore, MPI, PaddlePaddle, PyTorch, Ray, Spark, TensorFlow, web渗透, 人工智能, 任务调度, 分布式计算, 基因组学, 大数据, 子域名突变, 容器编排, 工作负载管理, 开源项目, 异常处理, 弹性计算, 批处理系统, 批处理调度, 提示注入, 数据科学平台, 日志审计, 机器学习, 深度学习, 生物信息学, 用户模式Hook绕过, 目录扫描, 程序破解, 自定义请求头, 计算框架集成, 请求拦截, 资源优化, 集群管理, 高性能计算