Volcano 是一个基于 Kubernetes 构建的批处理系统。它提供了一套机制,满足了许多类型的批处理和弹性工作负载的常见需求,包括机器学习/深度学习、生物信息学/基因组学和其他"大数据"应用。这些类型的应用通常在通用领域框架上运行,如 TensorFlow、Spark、Ray、PyTorch、MPI 等,Volcano 与这些框架进行了集成。
Volcano 建立在十五年来使用多个系统和平台大规模运行各种高性能工作负载的经验之上,结合了开源社区的最佳创意和实践。
截至 2021 年 6 月,Volcano 已在全球各行各业广泛使用,如互联网/云计算/金融/制造/医疗等。超过 20 家公司或机构不仅是最终用户,还是活跃的贡献者。数百名贡献者积极参与代码提交/PR 审查/问题讨论/文档更新和设计提供。我们期待您的参与。
注意:调度器基于 kube-batch 构建; 更多详情请参考 #241 和 #288。
Volcano 是 云原生计算基金会(CNCF)的孵化项目。如果您是一个希望在支持云原生生态系统的增长和发展中发挥积极作用的组织,请考虑加入 CNCF。
总体架构
演讲
- 介绍:Kubernetes 批处理调度 @ KubeCon 2019 EU
- Volcano 在 Kubernetes 中运行高性能作业实践 @ ArchSummit 2019
- Volcano:基于云原生的高密计算解决方案 @ 华为全联接大会 2019
- 使用 Volcano 提高深度学习工作负载的性能 @ KubeCon 2019 NA
- Kubernetes 批处理能力介绍 @ KubeCon 2019 NA
- 介绍:Kubernetes 批处理调度 @ KubeCon 2019 EU
生态系统
快速入门指南
先决条件
- Kubernetes 1.12+ 并支持 CRD
您可以通过以下两种方式之一尝试 Volcano。
注意:
- 对于 Kubernetes v1.17+ 版本,使用 config/crd/bases 下的 CRD(推荐)
- 对于 Kubernetes v1.16 以下版本,使用 config/crd/v1beta1 下的 CRD(已弃用)
使用 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-admission-init-4hjpx 0/1 Completed 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 <none> 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 获取详细信息。
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 发布
helm list -n volcano-system
从代码安装
如果您没有 Kubernetes 集群,可以尝试从代码库一键安装:
./hack/local-up-volcano.sh
此方法暂时仅适用于 x86_64 架构。
安装监控系统
如果您希望在安装 Volcano 后获得 Prometheus 和 Grafana Volcano 仪表板,请尝试以下命令:
make TAG=latest generate-yaml
kubectl create -f _output/release/volcano-monitoring-latest.yaml
Kubernetes 兼容性
Kubernetes 1.17 | Kubernetes 1.18 | Kubernetes 1.19 | Kubernetes 1.20 | Kubernetes 1.21 | Kubernetes 1.22 | Kubernetes 1.23 | Kubernetes 1.24 | Kubernetes 1.25 | Kubernetes 1.26 | Kubernetes 1.27 | Kubernetes 1.28 | Kubernetes 1.29 | Kubernetes 1.30 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Volcano v1.6 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | - | - | - | - | - | - | - |
Volcano v1.7 | - | - | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | - | _ |
Volcano v1.8 | - | - | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | - | - |
Volcano v1.9 | - | - | - | - | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | - |
Volcano HEAD (master) | - | - | - | - | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
图例:
✓
Volcano 与该 Kubernetes 版本完全兼容。+
Volcano 具有可能不存在于该 Kubernetes 版本中的功能或 API 对象。-
该 Kubernetes 版本具有 Volcano 无法使用的功能或 API 对象。
会议
亚洲社区每周会议:星期五 15:00 - 16:00(UTC+8)。(转换为您的时区。)
美洲社区两周一次会议:星期四 08:30 - 09:30(UTC-8)。(转换为您的时区。)
欧洲社区会议目前按需进行。如果您有想法或话题要讨论,请在 Slack 中留言。维护者将与您联系并安排一次公开会议。
资源:
联系方式
如果您有任何问题,欢迎通过以下方式与我们联系:
微信:添加微信账号 k8s2222
(华为云小助手2号),让她将您拉入群组。