Volcano 使用基础
内容提要
Volcano是华为开源的基于Kubernetes的资源调度系统,支持gang scheduling、调度队列和硬件感知等特点。安装方法为添加Helm Repo并安装指定版本。相关CRD列表包括commands.bus.volcano.sh、jobflows.flow.volcano.sh等。Job Plugins可定制Pod运行,包括ssh、env和svc插件。配置Deployment使用Volcano控制资源使用,创建队列和Deployment。配置Job使用Volcano限流并发执行,创建Job并设置policies。
延伸解读
Volcano 调度器与原生 Kubernetes 的差异
Volcano 在 Kubernetes 原生调度基础上扩展了 gang scheduling、调度队列和硬件感知等能力。gang scheduling 解决批量作业因部分 Pod 调度而互相等待的死锁问题;调度队列支持资源抢占和配额控制;硬件感知则优化 NUMA、GPU 等资源利用。同时,Volcano 兼容 nodeSelector、nodeAffinity 和 Extended Resource,便于在现有集群中集成。
Job Plugins 的注入机制与使用注意
Volcano 的 Job Plugins 包括 ssh、env 和 svc,分别用于配置 SSH 互信、注入环境变量和提供网络信息。env 插件注入 VK_TASK_INDEX 和 VC_TASK_INDEX,svc 插件注入 VC_DEMO_NUM 和 VC_DEMO_HOSTS,ssh 插件挂载密钥。测试时,Pod 间只能通过 IP 免密 SSH,不能使用 Pod Name,因为 Volcano 未将其他 Pod 的 IP 和 Name 写入 /etc/hosts。
使用 Queue 和 Policy 精细控制资源与作业生命周期
通过 Queue 可以限制资源使用,例如设置 capability 为 2 核 CPU,使 Deployment 扩容时仅有两个 Pod 运行。Queue 的 weight 是软约束,reclaimable 决定是否允许回收。对于 Job,Volcano 的 policies 可定义事件触发动作,如 PodEvicted 时 RestartJob、TaskCompleted 时 CompleteJob,从而更精准地控制作业执行和状态转换。
Q&A
Volcano 是什么?
Volcano 是华为开源的基于 Kubernetes 的资源调度系统,支持 gang scheduling、调度队列和硬件感知等特点。
如何安装 Volcano?
安装 Volcano 的方法是添加 Helm Repo 并安装指定版本,命令为:`helm repo add volcano-sh https://volcano-sh.github.io/helm-charts` 和 `helm install volcano volcano-sh/volcano -n volcano-system --create-namespace --version 1.8.2`。
Volcano 支持哪些 CRD?
Volcano 支持的 CRD 包括 commands.bus.volcano.sh、jobflows.flow.volcano.sh、jobs.batch.volcano.sh、jobtemplates.flow.volcano.sh 等。
如何使用 Volcano 配置 Job?
使用 Volcano 配置 Job 可以通过设置 minAvailable、schedulerName 和 queue 等参数来控制并发执行和资源使用。
Volcano 的 Job Plugins 有哪些功能?
Volcano 的 Job Plugins 可以定制 Pod 运行,包括 ssh、env 和 svc 插件,满足不同的定制化需求。
什么是 gang scheduling,为什么需要它?
Gang scheduling 是一种调度策略,用于解决批量作业同时需要多个 Pod 运行时的死锁问题,确保多个作业能够同时启动。