From 78e9c494a334dbed5d3a13746bac3b39a966451a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=8A=92=E6=83=85=E7=86=8A?= <2669184984@qq.com> Date: Sun, 3 Aug 2025 19:57:00 +0800 Subject: [PATCH 1/8] add architecture and component. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 抒情熊 <2669184984@qq.com> --- content/zh/docs/architecture.md | 377 ++++++++++++++++++++++++++++++-- 1 file changed, 362 insertions(+), 15 deletions(-) diff --git a/content/zh/docs/architecture.md b/content/zh/docs/architecture.md index a5e7aa4f..b2c4fc9e 100644 --- a/content/zh/docs/architecture.md +++ b/content/zh/docs/architecture.md @@ -14,29 +14,376 @@ linktitle = "架构" [menu.docs] parent = "home" weight = 2 + +++ -## 架构概览 +## 概览 + +{{
}} +Volcano 与 Kubernetes 天然兼容,遵循其设计理念和风格,同时扩展了 Kubernetes 原生能力,为机器学习、大数据应用、科学计算和特效渲染等高性能工作负载提供完整支持机制。其架构设计充分考虑了可扩展性、高性能和易用性,建立在多年来大规模运行各种高性能工作负载的经验之上,并结合了开源社区的最佳实践。 -{{
}} +核心架构由四个主要组件构成:作为系统核心的 Scheduler 通过可插拔的 Action 和 Plugin 实现 Gang 调度、异构设备调度等高级特性,为批处理作业提供精细化资源分配;ControllerManager 负责管理 CRD 资源生命周期,包含 Queue、PodGroup 和 VCJob 三个控制器分别管理队列资源、Pod 组和 Volcano Job;Admission 组件对 CRD API 资源进行校验,确保作业配置符合系统要求;而 Vcctl 则作为命令行客户端工具,提供友好的接口管理和监控资源与作业。 -Volcano与Kubernetes天然兼容,并为高性能计算而生。它遵循Kubernetes的设计理念和风格。 +Volcano 的分层架构设计使其能够无缝对接 Spark、TensorFlow、PyTorch、Flink 等主流计算框架,同时提供统一的调度能力。其模块化设计允许用户根据需求扩展功能,添加自定义的调度策略和资源管理能力。通过这种架构设计,Volcano 实现了资源的高效利用、作业的精确调度和系统的可靠运行,为高性能计算和大规模批处理提供了坚实的基础设施支持。 -{{
}} +## 组件介绍 + +Volcano由以下几个组件构成: + +- **Scheduler**:通过一系列action和plugin调度Job并匹配最适节点,区别于Kubernetes原生调度器,支持多种Job专用调度算法 +- **Controller**:管理CRD资源生命周期,由多个控制器组成 +- **Admission**:负责CRD API资源的校验工作 +- **Vcctl**:Volcano的命令行客户端工具 +- **Agent**:运行在节点上的组件,负责资源监控和过度订阅管理。通过识别闲置资源并允许合理超卖,提高集群资源利用率。 +- **Network-qos**:管理在线和离线工作负载间的网络带宽分配,确保在线服务网络质量的同时最大化集群带宽利用率。 + +### Scheduler + +#### 介绍 + +Volcano 调度器是一个高度可配置和可扩展的 Kubernetes 调度器,专为处理复杂工作负载和特殊调度需求而设计。它提供了超越默认 Kubernetes 调度器的高级调度功能,使其特别适合高性能计算、机器学习和大数据工作负载。 + +调度器通过处理 `.spec.schedulerName` 与配置的调度器名称(默认为 "volcano")匹配的 Pod 来运行。它按照调度周期工作,评估未调度的 Pod 并根据各种调度策略和插件找到最佳的节点放置位置。 + +Volcano 调度器支持自定义插件扩展,可以通过配置文件定义调度策略,并提供了丰富的指标和健康检查功能,以确保调度系统的可靠性和可观测性。 + +#### 参数 + +##### Kubernetes参数 + +| 参数名 | 描述 | 默认值 | 示例 | +| ---------------- | ------------------------------------------ | ------ | ----------------------------------------- | +| `master` | Kubernetes API 服务器地址 | - | `--master=https://kubernetes.default.svc` | +| `kubeconfig` | kubeconfig 文件路径 | - | `--kubeconfig=/etc/kubernetes/admin.conf` | +| `kube-api-qps` | 与 Kubernetes API 服务器通信的 QPS 限制 | 2000.0 | `--kube-api-qps=1000` | +| `kube-api-burst` | 与 Kubernetes API 服务器通信的突发请求上限 | 2000 | `--kube-api-burst=1000` | + +##### TLS 证书参数 + +| 参数名 | 描述 | 默认值 | 示例 | +| ---------------------- | ------------------------------------- | ------ | --------------------------------------------- | +| `ca-cert-file` | HTTPS 的 x509 证书文件 | - | `--ca-cert-file=/etc/volcano/ca.crt` | +| `tls-cert-file` | HTTPS 的默认 x509 证书文件 | - | `--tls-cert-file=/etc/volcano/tls.crt` | +| `tls-private-key-file` | 与 tls-cert-file 匹配的 x509 私钥文件 | - | `--tls-private-key-file=/etc/volcano/tls.key` | + +##### 调度器配置参数 + +| 参数名 | 描述 | 默认值 | 示例 | +| ----------------- | -------------------------------------------------- | --------- | ---------------------------------------------- | +| `scheduler-name` | Volcano 处理的 Pod 的 .spec.SchedulerName | "volcano" | `--scheduler-name=volcano-scheduler` | +| `scheduler-conf` | 调度器配置文件的绝对路径 | - | `--scheduler-conf=/etc/volcano/scheduler.conf` | +| `schedule-period` | 每个调度周期之间的时间间隔 | 1s | `--schedule-period=2s` | +| `default-queue` | 作业的默认队列名称 | "default" | `--default-queue=system` | +| `priority-class` | 是否启用 PriorityClass 以提供 pod 组级别的抢占能力 | true | `--priority-class=false` | + +##### 节点选择和评分参数 + +| 参数名 | 描述 | 默认值 | 示例 | +| ---------------------------------- | ------------------------------------------------------------ | ------ | ------------------------------------------------------------ | +| `minimum-feasible-nodes` | 查找和评分的最小可行节点数 | 100 | `--minimum-feasible-nodes=50` | +| `minimum-percentage-nodes-to-find` | 查找和评分的最小节点百分比 | 5 | `--minimum-percentage-nodes-to-find=10` | +| `percentage-nodes-to-find` | 每个调度周期中要评分的节点百分比;如果 <=0,将根据集群大小计算自适应百分比 | 0 | `--percentage-nodes-to-find=20` | +| `node-selector` | Volcano 只处理带有指定标签的节点 | - | `--node-selector=volcano.sh/role:train --node-selector=volcano.sh/role:serving` | +| `node-worker-threads` | 同步节点操作的线程数 | 20 | `--node-worker-threads=30` | + +##### 插件和存储参数 + +| 参数名 | 描述 | 默认值 | 示例 | +| ---------------------- | ----------------------------------------------------- | ------ | ------------------------------------------------------------ | +| `plugins-dir` | vc-scheduler 将加载(但不激活)此目录中的自定义插件 | "" | `--plugins-dir=/etc/volcano/plugins` | +| `csi-storage` | 是否启用跟踪 CSI 驱动程序提供的可用存储容量 | false | `--csi-storage=true` | +| `ignored-provisioners` | 在计算 pod pvc 请求和抢占期间将被忽略的存储供应商列表 | - | `--ignored-provisioners=rancher.io/local-path --ignored-provisioners=hostpath.csi.k8s.io` | + +##### 监控和健康检查参数 + +| 参数名 | 描述 | 默认值 | 示例 | +| ----------------- | ------------------------ | -------- | -------------------------- | +| `enable-healthz` | 是否启用健康检查 | false | `--enable-healthz=true` | +| `healthz-address` | 健康检查服务器的监听地址 | ":11251" | `--healthz-address=:11252` | +| `enable-metrics` | 是否启用指标功能 | false | `--enable-metrics=true` | +| `listen-address` | HTTP 请求的监听地址 | ":8080" | `--listen-address=:8081` | + +##### 缓存和调试参数 + +| 参数名 | 描述 | 默认值 | 示例 | +| ---------------- | ------------------------------------ | ------ | ----------------------------------- | +| `cache-dumper` | 是否启用缓存转储器 | true | `--cache-dumper=false` | +| `cache-dump-dir` | 转储缓存信息到 JSON 文件时的目标目录 | "/tmp" | `--cache-dump-dir=/var/log/volcano` | +| `version` | 显示版本并退出 | false | `--version` | + +##### 领导者选举参数 + +| 参数名 | 描述 | 默认值 | 示例 | +| ----------------------- | ------------------------------------------------------------ | ---------------- | ------------------------------------- | +| `lock-object-namespace` | 锁对象的命名空间(已弃用,请使用 --leader-elect-resource-namespace) | "volcano-system" | `--lock-object-namespace=kube-system` | + +### Controller + +#### 介绍 + +Volcano Controller 是 Volcano 的核心组件,负责管理和协调 Kubernetes 集群中的批处理作业和资源。它采用多控制器架构,包含作业控制器、队列控制器、PodGroup 控制器、垃圾回收控制器等多个专用模块,共同处理不同类型的资源对象和业务逻辑。 + +与传统的 Kubernetes 控制器相比,Volcano Controller 提供了更丰富的批处理作业管理能力,支持作业生命周期管理、资源队列维护、PodGroup 协调等高级特性,特别适合高性能计算和机器学习等场景。它通过框架化设计实现了良好的可扩展性,允许用户根据需求启用或禁用特定控制器。 + +Volcano Controller 与 Kubernetes 深度集成,使用领导者选举机制确保高可用性,同时提供健康检查和指标收集功能便于系统监控。其灵活的配置选项允许用户调整工作线程数、QPS 限制和资源管理策略等参数。 + +#### 参数 + +##### Kubernetes参数 + +| 参数名 | 描述 | 默认值 | 示例 | +| ---------------- | ------------------------------------------ | ------ | ----------------------------------------- | +| `master` | Kubernetes API 服务器地址 | - | `--master=https://kubernetes.default.svc` | +| `kubeconfig` | kubeconfig 文件路径 | - | `--kubeconfig=/etc/kubernetes/admin.conf` | +| `kube-api-qps` | 与 Kubernetes API 服务器通信的 QPS 限制 | 50.0 | `--kube-api-qps=100` | +| `kube-api-burst` | 与 Kubernetes API 服务器通信的突发请求上限 | 100 | `--kube-api-burst=200` | + +##### TLS 证书参数 + +| 参数名 | 描述 | 默认值 | 示例 | +| ---------------------- | ------------------------------------- | ------ | --------------------------------------------- | +| `ca-cert-file` | HTTPS 的 x509 证书文件 | - | `--ca-cert-file=/etc/volcano/ca.crt` | +| `tls-cert-file` | HTTPS 的默认 x509 证书文件 | - | `--tls-cert-file=/etc/volcano/tls.crt` | +| `tls-private-key-file` | 与 tls-cert-file 匹配的 x509 私钥文件 | - | `--tls-private-key-file=/etc/volcano/tls.key` | + +##### 调度器配置参数 + +| 参数名 | 描述 | 默认值 | 示例 | +| --------------------------- | ------------------------------------------ | --------- | ------------------------------------ | +| `scheduler-name` | Volcano 处理的 Pod 的 .spec.SchedulerName | "volcano" | `--scheduler-name=volcano-scheduler` | +| `worker-threads` | 并发同步作业操作的线程数 | 3 | `--worker-threads=5` | +| `max-requeue-num` | 作业、队列或命令在队列中重新排队的最大次数 | 15 | `--max-requeue-num=20` | +| `inherit-owner-annotations` | 创建 PodGroup 时是否继承所有者的注释 | true | `--inherit-owner-annotations=false` | + +##### 专用线程参数 + +| 参数名 | 描述 | 默认值 | 示例 | +| ----------------------------- | -------------------------- | ------ | ---------------------------------- | +| `worker-threads-for-podgroup` | 同步 PodGroup 操作的线程数 | 5 | `--worker-threads-for-podgroup=10` | +| `worker-threads-for-queue` | 同步队列操作的线程数 | 5 | `--worker-threads-for-queue=10` | +| `worker-threads-for-gc` | 回收作业的线程数 | 1 | `--worker-threads-for-gc=2` | + +##### 健康检查和监控参数 + +| 参数名 | 描述 | 默认值 | 示例 | +| ----------------- | ------------------------ | -------- | -------------------------- | +| `healthz-address` | 健康检查服务器的监听地址 | ":11251" | `--healthz-address=:11252` | +| `enable-healthz` | 是否启用健康检查 | false | `--enable-healthz=true` | +| `enable-metrics` | 是否启用指标功能 | false | `--enable-metrics=true` | +| `listen-address` | HTTP 请求的监听地址 | ":8081" | `--listen-address=:8082` | + +##### 领导者选举参数 + +| 参数名 | 描述 | 默认值 | 示例 | +| --------------------------------- | -------------------------- | ----------------------- | -------------------------------------------------- | +| `lock-object-namespace` | 锁对象的命名空间(已弃用) | "volcano-system" | `--lock-object-namespace=kube-system` | +| `leader-elect` | 是否启用领导者选举 | - | `--leader-elect=true` | +| `leader-elect-resource-name` | 领导者选举资源名称 | "vc-controller-manager" | - | +| `leader-elect-resource-namespace` | 领导者选举资源命名空间 | - | `--leader-elect-resource-namespace=volcano-system` | + +##### 控制器管理参数 + +| 参数名 | 描述 | 默认值 | 示例 | +| ------------- | ------------------ | ----------------- | ------------------------------------------------- | +| `controllers` | 指定要启用的控制器 | "*"(所有控制器) | `--controllers=+job-controller,-queue-controller` | +| `version` | 显示版本并退出 | false | `--version` | + +##### 控制器列表 + +Volcano 支持以下控制器,可以通过 `controllers` 参数启用或禁用: + +- `gc-controller`: 垃圾回收控制器 +- `job-controller`: 作业控制器 +- `jobflow-controller`: 作业流控制器 +- `jobtemplate-controller`: 作业模板控制器 +- `pg-controller`: PodGroup 控制器 +- `queue-controller`: 队列控制器 + +使用 `*` 启用所有控制器,使用 `+[controller-name]` 显式启用特定控制器,使用 `-[controller-name]` 显式禁用特定控制器。 + +#### gc-controller + +Garbage Collector 是一个专门的控制器,负责清理已完成的 Job 资源。它通过监听 Job 的创建和更新事件,识别那些已经完成(Completed、Failed 或 Terminated)且设置了 TTL(.spec.ttlSecondsAfterFinished)的 Job。 + +控制器维护一个工作队列,将需要清理的 Job 加入队列并在适当的时间处理。它会计算 Job 完成后的经过时间,当达到或超过指定的 TTL 时,通过 API 服务器删除这些 Job。对于尚未到期的 Job,控制器会将其重新加入队列,并设置在 TTL 到期时再次处理。 + +这种机制确保了已完成的 Job 不会永久占用集群资源,同时提供了灵活的资源回收策略,使用户可以根据需要保留 Job 历史记录一段时间后自动清理。 + +#### job-controller + +Job Controller 是核心控制器,负责管理和协调 Job 资源的生命周期。它通过监听 Job、Pod、PodGroup 等资源的变化,处理相关事件并维护 Job 的状态。 + +控制器会根据 Job 的当前状态和触发的事件,调用相应的状态处理函数来同步 Job 资源,包括创建 Pod、检查 Pod 状态、更新 Job 状态等。 + +控制器实现了一个工作队列系统,使用哈希算法将 Job 分配到不同的工作队列中以实现并行处理。它还包含了一个延迟动作机制,允许某些操作在特定延迟后执行,如处理 Pod 失败或重试等情况。它还实现了错误处理和重试机制,当操作失败时会将请求重新加入队列,超过最大重试次数后会终止 Job 并释放资源。 + +#### jobflow-controller + +jobflow-controller主要负责管理和协调 JobFlow CR的生命周期。它通过监听 JobFlow、JobTemplate 和 Job 资源的变化,处理相关事件并维护 JobFlow 的状态。 + +当 JobFlow 被创建或更新时,控制器会将请求加入工作队列,然后执行相应的状态转换操作,调用相应的处理函数来同步 JobFlow 资源,包括创建依赖的 Job、检查 Job 状态、更新 JobFlow 状态等。 + +它还负责处理错误情况,包括重试失败的请求和记录事件,以便用户了解 JobFlow 的运行状况 + +#### jobtemplate-controller + +jobTemplate Controller 是负责管理 JobTemplate 资源的控制器。它通过监听 JobTemplate 和 Job 资源的创建事件,处理相关操作并维护 JobTemplate 的状态。 + +控制器初始化时会设置各种 informer 来监听资源变化,并创建工作队列来处理这些事件。 + +当一个 JobTemplate 被创建时,控制器会将其加入工作队列,然后执行同步操作,可能包括根据模板创建实际的 Job 资源。同样地,当一个 Job 被创建时,控制器也会检查是否需要更新相关的 JobTemplate 状态。 + +控制器实现了错误处理和重试机制,当操作失败时会将请求重新加入队列,直到达到最大重试次数。它还负责记录事件,以便用户了解 JobTemplate 的处理状态。 + +#### pg-controller + +PodGroup Controller 是一个专门的控制器,负责为使用 Volcano 调度器的 Pod 自动创建和管理 PodGroup 资源。它通过监听 Pod 和 ReplicaSet 的创建和更新事件,识别那些需要 PodGroup 但尚未关联的 Pod。 + +控制器维护一个工作队列,将需要处理的 Pod 请求加入队列并处理。当检测到使用 Volcano 调度器但没有指定 PodGroup 的 Pod 时,控制器会自动创建相应的 PodGroup 资源,确保这些 Pod 能够被 Volcano 调度系统正确处理。 + +此外,当启用工作负载支持特性时,控制器还会监听 ReplicaSet 资源,为属于同一 ReplicaSet 的 Pod 创建统一的 PodGroup,从而支持更复杂的工作负载模式。控制器还可以根据配置从 Pod 所有者继承注解,实现更灵活的资源管理策略。 + +#### queue-controller + +Queue Controller 是一个核心控制器,负责管理和维护 Volcano 调度系统中的队列状态。它通过监听 Queue、PodGroup 和 Command 资源的变化,协调队列的生命周期和状态转换。 + +控制器维护两个工作队列:一个处理队列状态变更请求,另一个处理队列命令。当队列状态需要变更时(如开启、关闭或同步),控制器会调用相应的状态处理函数执行状态转换。控制器还维护了队列与 PodGroup 之间的映射关系,确保资源分配和调度策略的正确实施。 + +当启用 QueueCommandSync 参数时,控制器还会监听 Command 资源,支持通过命令方式动态控制队列行为,如开启或关闭队列。控制器实现了错误处理和重试机制,当操作失败时会将请求重新加入队列,超过最大重试次数后会记录事件并放弃处理。这种设计确保了队列状态的一致性和可靠性,是 Volcano 调度系统的重要组成部分。 + +### Admission + +#### 介绍 + +Volcano Admission 是 Volcano 系统的关键组件,负责验证和修改提交到 Kubernetes 集群的资源对象。它通过 Kubernetes 的 Webhook 机制实现,能够拦截特定资源的创建、更新和删除请求,并根据预定义的规则进行验证或修改。 + +Admission 支持多种资源的准入控制,包括 Jobs、PodGroups、Pods 和 Queues 等。通过配置不同的准入路径,可以灵活地控制哪些资源需要进行验证或变更。默认情况下,它会处理由 Volcano 调度器(默认名为 "volcano")管理的 Pod 资源。 + +该组件提供了 HTTPS 服务以接收 Kubernetes API 服务器的准入请求,并支持健康检查功能,便于监控其运行状态。 + +#### 参数 + +##### Kubernetes 参数 + +| 参数名 | 描述 | 默认值 | 示例 | +| ---------------- | ----------------------------------------------------- | ------ | ----------------------------------------- | +| `master` | Kubernetes API 服务器的地址(覆盖 kubeconfig 中的值) | 空 | `--master=https://kubernetes.default.svc` | +| `kubeconfig` | 包含认证和主服务器位置信息的 kubeconfig 文件路径 | 空 | `--kubeconfig=/etc/kubernetes/admin.conf` | +| `kube-api-qps` | 与 Kubernetes API 服务器通信时的 QPS 限制 | 50.0 | `--kube-api-qps=100` | +| `kube-api-burst` | 与 Kubernetes API 服务器通信时的突发请求限制 | 100 | `--kube-api-burst=200` | + +##### TLS 证书参数 + +| 参数名 | 描述 | 默认值 | 示例 | +| ---------------------- | ------------------------------------------- | ------ | --------------------------------------------- | +| `tls-cert-file` | HTTPS 服务的 x509 证书文件路径 | 空 | `--tls-cert-file=/etc/volcano/tls.crt` | +| `tls-private-key-file` | 与 `tls-cert-file` 匹配的 x509 私钥文件路径 | 空 | `--tls-private-key-file=/etc/volcano/tls.key` | +| `ca-cert-file` | HTTPS 服务的 CA 证书文件路径 | 空 | `--ca-cert-file=/etc/volcano/ca.crt` | + +##### 服务配置参数 + +| 参数名 | 描述 | 默认值 | 示例 | +| ---------------- | ------------------------------------- | ------ | -------------------------- | +| `listen-address` | Admission Controller 服务器监听的地址 | 空 | `--listen-address=0.0.0.0` | +| `port` | Admission Controller 服务器使用的端口 | 8443 | `--port=8443` | +| `version` | 显示版本信息并退出 | false | `--version` | + +##### Webhook 配置参数 + +| 参数名 | 描述 | 默认值 | 示例 | +| ---------------------- | ---------------------- | ------ | ------------------------------------------------------------ | +| `webhook-namespace` | Webhook 所在的命名空间 | 空 | `--webhook-namespace=volcano-system` | +| `webhook-service-name` | Webhook 服务的名称 | 空 | `--webhook-service-name=volcano-admission` | +| `webhook-url` | Webhook 的 URL | 空 | `--webhook-url=https://volcano-admission.volcano-system:8443` | +| `admission-conf` | Webhook 的配置文件路径 | 空 | `--admission-conf=/etc/volcano/admission.conf` | + +##### 准入控制参数 + +| 参数名 | 描述 | 默认值 | 示例 | +| ------------------- | ------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------- | +| `enabled-admission` | 启用的准入 Webhook 路径,多个路径用逗号分隔 | "/jobs/mutate,/jobs/validate,/podgroups/mutate,/pods/validate,/pods/mutate,/queues/mutate,/queues/validate" | `--enabled-admission=/jobs/mutate,/pods/validate` | +| `scheduler-name` | Volcano 将处理 `.spec.SchedulerName` 与此参数匹配的 Pod | ["volcano"] | `--scheduler-name=volcano,custom-scheduler` | + +##### 健康检查参数 + +| 参数名 | 描述 | 默认值 | 示例 | +| ----------------- | ------------------------------ | -------- | -------------------------- | +| `enable-healthz` | 是否启用健康检查 | false | `--enable-healthz=true` | +| `healthz-address` | 健康检查服务器监听的地址和端口 | ":11251" | `--healthz-address=:11252` | + +### Vcctl + +#### 介绍 + +`vcctl` 是 Volcano 提供的命令行工具,用于管理和操作 Volcano 集群中的资源。它提供了一组直观的命令,使用户能够轻松地查询、创建、修改和删除 Volcano 资源,如作业(Job)、队列(Queue)和 PodGroup 等。 + +该工具支持多种操作,包括列出、创建、删除和管理 Volcano 作业,控制作业的生命周期(挂起、恢复、运行),查询和管理队列资源,查看 PodGroup 状态和详情,以及与 Volcano 调度器交互。通过命令行界面,用户可以快速执行常见的管理任务,而无需直接操作 Kubernetes API 或 YAML 文件。这使得 Volcano 资源管理变得更加简单和高效,特别适合于批处理作业和高性能计算场景。 + +`vcctl` 工具采用了类似于 `kubectl` 的命令结构,使 Kubernetes 用户能够快速上手。它支持详细的帮助信息,用户可以通过 `vcctl -h` 或 `vcctl [command] -h` 获取各命令的详细用法和选项说明。作为 Volcano 生态系统的重要组成部分,`vcctl` 为用户提供了一个便捷的接口,简化了复杂批处理工作负载的管理和操作流程。 + +#### 参数 + +vcctl不需要 + +### Agent + +#### 介绍 + +Agent 是运行在 Kubernetes 节点上的组件,主要负责资源监控和过度订阅管理。它通过识别节点上的闲置资源并允许合理超卖,显著提高集群资源利用率。 + +Agent 持续监控节点资源使用情况,为 Volcano 调度系统提供准确的资源信息,支持更智能的调度决策。在资源紧张时,它能够执行资源回收操作,确保关键工作负载的性能不受影响。 + +通过与 Kubernetes CGroup 系统的深度集成,Agent 实现了精细化的资源控制,是 Volcano 高效批处理调度的重要支撑组件,特别适合高性能计算和机器学习等场景。 + +#### 参数 + +##### Kubernetes 参数 + +| 参数名 | 类型 | 默认值 | 描述 | +| ---------------------- | ------ | ----------------------------- | ------------------------------------------------------------ | +| `--kube-cgroup-root` | string | `""` | Kubernetes 的 cgroup 根路径。如果启用了 CgroupsPerQOS,这是 QOS cgroup 层次结构的根 | +| `--kube-node-name` | string | 环境变量 `KUBE_NODE_NAME` | Agent 运行所在的节点名称 | +| `--kube-pod-name` | string | 环境变量 `KUBE_POD_NAME` | Agent 所在 Pod 的名称 | +| `--kube-pod-namespace` | string | 环境变量 `KUBE_POD_NAMESPACE` | Agent 所在 Pod 的命名空间 | + +##### 健康检查参数 + +| 参数名 | 类型 | 默认值 | 描述 | +| ------------------- | ------ | ------ | ------------------------ | +| `--healthz-address` | string | `""` | 健康检查服务器监听的地址 | +| `--healthz-port` | int | `3300` | 健康检查服务器监听的端口 | + +##### 资源过度订阅参数 + +| 参数名 | 类型 | 默认值 | 描述 | +| --------------------------- | ------ | ---------- | ------------------------------------------------------------ | +| `--oversubscription-policy` | string | `"extend"` | 过度订阅策略,决定过度订阅资源的报告和使用方式。默认为 `extend`,表示报告为扩展资源 | +| `--oversubscription-ratio` | int | `60` | 过度订阅比率,决定有多少闲置资源可以被超卖,单位为百分比 | +| `--include-system-usage` | bool | `false` | 是否在计算过度订阅资源和执行驱逐时考虑系统资源使用情况 | + +##### 功能特性参数 + +| 参数名 | 类型 | 默认值 | 描述 | +| ---------------------- | -------- | ------- | ------------------------------------------------------------ | +| `--supported-features` | []string | `["*"]` | 支持的特性列表。`*` 表示支持所有默认启用的特性,`foo` 表示支持名为 `foo` 的特性,`-foo` 表示不支持名为 `foo` 的特性 | + +### Network-qos + +#### 介绍 -Volcano由scheduler、controllermanager、admission和vcctl组成: +Network插件是一个专为 Kubernetes 集群设计的网络带宽管理解决方案,旨在智能调节不同类型工作负载之间的网络资源分配。该插件通过 CNI 机制与现有网络插件链式组合,实现对容器网络流量的精细控制。 -- Scheduler -Volcano scheduler通过一系列的action和plugin调度Job,并为它找到一个最适合的节点。与Kubernetes default-scheduler相比,Volcano与众不同的 -地方是它支持针对Job的多种调度算法。 +它的核心功能是区分在线和离线工作负载,并根据在线服务的实时带宽需求动态调整离线作业的带宽上限。当在线服务的带宽使用超过预设水位线时,系统会自动降低离线作业的可用带宽,确保关键业务服务质量;当在线服务带宽需求较低时,系统则允许离线作业使用更多带宽资源,提高集群整体资源利用率。 -- Controllermanager -Volcano controllermanager管理CRD资源的生命周期。它主要由**Queue ControllerManager**、 **PodGroupControllerManager**、 **VCJob -ControllerManager**构成。 +该插件基于 Linux TC(Traffic Control)和 eBPF 技术实现,提供高效、低开销的网络流量管理能力,是混合部署环境中保障服务质量的重要工具。 -- Admission -Volcano admission负责对CRD API资源进行校验。 +#### 参数 -- Vcctl -Volcano vcctl是Volcano的命令行客户端工具。 +| 参数名称 | 说明 | 默认值 | 类型 | +| -------------------------- | ------------------------------------------------------------ | ------ | ------ | +| `CheckoutInterval` | 检查和更新离线作业带宽限制的时间间隔 | 无 | string | +| `OnlineBandwidthWatermark` | 在线作业的带宽阈值,是所有在线 Pod 带宽使用的总和上限 | 无 | string | +| `OfflineLowBandwidth` | 当在线作业带宽使用超过水位线时,离线作业可使用的最大网络带宽 | 无 | string | +| `OfflineHighBandwidth` | 当在线作业带宽使用未达到水位线时,离线作业可使用的最大网络带宽 | 无 | string | +| `EnableNetworkQoS` | 是否启用网络 QoS 功能 | false | bool | From b6b35576480e63ea3db04e9fda72be9ce808d8fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=8A=92=E6=83=85=E7=86=8A?= <2669184984@qq.com> Date: Sun, 3 Aug 2025 20:12:38 +0800 Subject: [PATCH 2/8] en version. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 抒情熊 <2669184984@qq.com> --- content/en/docs/architecture.md | 371 ++++++++++++++++++++++++++++++-- content/zh/docs/architecture.md | 2 +- 2 files changed, 359 insertions(+), 14 deletions(-) diff --git a/content/en/docs/architecture.md b/content/en/docs/architecture.md index 0294d27e..b9b31c62 100644 --- a/content/en/docs/architecture.md +++ b/content/en/docs/architecture.md @@ -16,28 +16,373 @@ linktitle = "Architecture" weight = 2 +++ -## Overall Architecture +## Overview +{{
}} -{{
}} +Volcano is naturally compatible with Kubernetes, following its design philosophy and style while extending Kubernetes' native capabilities to provide comprehensive support for high-performance workloads such as machine learning, big data applications, scientific computing, and special effects rendering. Its architectural design fully considers scalability, high performance, and ease of use, built upon years of experience running various high-performance workloads at scale and incorporating best practices from the open-source community. +The core architecture consists of four main components: The Scheduler, as the system core, implements advanced features such as Gang scheduling and heterogeneous device scheduling through pluggable Actions and Plugins, providing fine-grained resource allocation for batch jobs; the ControllerManager is responsible for managing CRD resource lifecycles, containing three controllers—Queue, PodGroup, and VCJob—that respectively manage queue resources, Pod groups, and Volcano Jobs; the Admission component validates CRD API resources to ensure job configurations meet system requirements; while Vcctl serves as a command-line client tool, providing a friendly interface for managing and monitoring resources and jobs. -Volcano is designed for high-performance workloads running on Kubernetes. It follows the design and mechanisms of Kubernetes. +Volcano's layered architectural design enables it to seamlessly connect with mainstream computing frameworks such as Spark, TensorFlow, PyTorch, and Flink, while providing unified scheduling capabilities. Its modular design allows users to extend functionality according to their needs by adding custom scheduling strategies and resource management capabilities. Through this architectural design, Volcano achieves efficient resource utilization, precise job scheduling, and reliable system operation, providing solid infrastructure support for high-performance computing and large-scale batch processing. +## Component Introduction -{{
}} +Volcano consists of the following components: +- **Scheduler**: Schedules jobs and matches the most suitable nodes through a series of actions and plugins. Unlike the Kubernetes native scheduler, it supports various job-specific scheduling algorithms. +- **Controller**: Manages the lifecycle of CRD resources, composed of multiple controllers. +- **Admission**: Responsible for validating CRD API resources. +- **Vcctl**: Volcano's command-line client tool. +- **Agent**: A component running on nodes responsible for resource monitoring and oversubscription management. It improves cluster resource utilization by identifying idle resources and allowing reasonable overcommitment. +- **Network-qos**: Manages network bandwidth allocation between online and offline workloads, ensuring network quality for online services while maximizing cluster bandwidth utilization. -Volcano consists of **scheduler** / **controllermanager** / **admission** / **vcctl**: +### Scheduler -##### Scheduler -Volcano Scheduler schedules jobs to the most suitable node based on actions and plug-ins. Volcano supplements Kubernetes to support multiple scheduling algorithms for jobs. +#### Introduction -##### ControllerManager (CM) -Volcano CMs manage the lifecycle of Custom Resource Definitions (CRDs). You can use the **Queue CM**, **PodGroup CM**, and **VCJob CM**. +The Volcano scheduler is a highly configurable and extensible Kubernetes scheduler designed specifically for handling complex workloads and special scheduling requirements. It provides advanced scheduling capabilities beyond the default Kubernetes scheduler, making it particularly suitable for high-performance computing, machine learning, and big data workloads. -##### Admission -Volcano Admission is responsible for the CRD API validation. +The scheduler operates by processing Pods whose `.spec.schedulerName` matches the configured scheduler name (default is "volcano"). It works in scheduling cycles, evaluating unscheduled Pods and finding the optimal node placement according to various scheduling policies and plugins. -##### vcctl -Volcano vcctl is the command line client for Volcano. +The Volcano scheduler supports custom plugin extensions, allows defining scheduling strategies through configuration files, and provides rich metrics and health check functionalities to ensure the reliability and observability of the scheduling system. + +#### Parameters + +##### Kubernetes Parameters + +| Parameter Name | Description | Default | Example | +| ---------------- | ---------------------------------------- | ------- | ----------------------------------------- | +| `master` | Kubernetes API server address | - | `--master=https://kubernetes.default.svc` | +| `kubeconfig` | Path to kubeconfig file | - | `--kubeconfig=/etc/kubernetes/admin.conf` | +| `kube-api-qps` | QPS limit for communication with K8s API | 2000.0 | `--kube-api-qps=1000` | +| `kube-api-burst` | Burst limit for K8s API communication | 2000 | `--kube-api-burst=1000` | + +##### TLS Certificate Parameters + +| Parameter Name | Description | Default | Example | +| ---------------------- | -------------------------------------------- | ------- | --------------------------------------------- | +| `ca-cert-file` | x509 certificate file for HTTPS | - | `--ca-cert-file=/etc/volcano/ca.crt` | +| `tls-cert-file` | Default x509 certificate file for HTTPS | - | `--tls-cert-file=/etc/volcano/tls.crt` | +| `tls-private-key-file` | x509 private key file matching tls-cert-file | - | `--tls-private-key-file=/etc/volcano/tls.key` | + +##### Scheduler Configuration Parameters + +| Parameter Name | Description | Default | Example | +| ----------------- | --------------------------------------------------- | --------- | ---------------------------------------------- | +| `scheduler-name` | .spec.SchedulerName for Pods handled by Volcano | "volcano" | `--scheduler-name=volcano-scheduler` | +| `scheduler-conf` | Absolute path to scheduler configuration file | - | `--scheduler-conf=/etc/volcano/scheduler.conf` | +| `schedule-period` | Time interval between scheduling cycles | 1s | `--schedule-period=2s` | +| `default-queue` | Default queue name for jobs | "default" | `--default-queue=system` | +| `priority-class` | Enable PriorityClass for pod group level preemption | true | `--priority-class=false` | + +##### Node Selection and Scoring Parameters + +| Parameter Name | Description | Default | Example | +| ---------------------------------- | ------------------------------------------------------------ | ------- | ------------------------------------------------------------ | +| `minimum-feasible-nodes` | Minimum number of feasible nodes to find and score | 100 | `--minimum-feasible-nodes=50` | +| `minimum-percentage-nodes-to-find` | Minimum percentage of nodes to find and score | 5 | `--minimum-percentage-nodes-to-find=10` | +| `percentage-nodes-to-find` | Percentage of nodes to score in each cycle; if <=0, adaptive percentage based on cluster size | 0 | `--percentage-nodes-to-find=20` | +| `node-selector` | Volcano only processes nodes with specified labels | - | `--node-selector=volcano.sh/role:train --node-selector=volcano.sh/role:serving` | +| `node-worker-threads` | Number of threads for synchronizing node operations | 20 | `--node-worker-threads=30` | + +##### Plugin and Storage Parameters + +| Parameter Name | Description | Default | Example | +| ---------------------- | ------------------------------------------------------------ | ------- | ------------------------------------------------------------ | +| `plugins-dir` | Directory of custom plugins to load (but not activate) | "" | `--plugins-dir=/etc/volcano/plugins` | +| `csi-storage` | Enable tracking available storage capacity provided by CSI drivers | false | `--csi-storage=true` | +| `ignored-provisioners` | List of storage provisioners to ignore during pod PVC request and preemption calculations | - | `--ignored-provisioners=rancher.io/local-path --ignored-provisioners=hostpath.csi.k8s.io` | + +##### Monitoring and Health Check Parameters + +| Parameter Name | Description | Default | Example | +| ----------------- | -------------------------------------- | -------- | -------------------------- | +| `enable-healthz` | Enable health check | false | `--enable-healthz=true` | +| `healthz-address` | Listen address for health check server | ":11251" | `--healthz-address=:11252` | +| `enable-metrics` | Enable metrics functionality | false | `--enable-metrics=true` | +| `listen-address` | Listen address for HTTP requests | ":8080" | `--listen-address=:8081` | + +##### Cache and Debug Parameters + +| Parameter Name | Description | Default | Example | +| ---------------- | ----------------------------------------------- | ------- | ----------------------------------- | +| `cache-dumper` | Enable cache dumper | true | `--cache-dumper=false` | +| `cache-dump-dir` | Target directory for dumping cache info to JSON | "/tmp" | `--cache-dump-dir=/var/log/volcano` | +| `version` | Display version and exit | false | `--version` | + +##### Leader Election Parameters + +| Parameter Name | Description | Default | Example | +| ----------------------- | ------------------------------------------------------------ | ---------------- | ------------------------------------- | +| `lock-object-namespace` | Namespace of lock object (deprecated, use --leader-elect-resource-namespace) | "volcano-system" | `--lock-object-namespace=kube-system` | + +### Controller + +#### Introduction + +Volcano Controller is a core component of Volcano, responsible for managing and coordinating batch jobs and resources in Kubernetes clusters. It adopts a multi-controller architecture, including job controller, queue controller, PodGroup controller, garbage collection controller, and other specialized modules that collectively handle different types of resource objects and business logic. + +Compared to traditional Kubernetes controllers, Volcano Controller provides richer batch job management capabilities, supporting job lifecycle management, resource queue maintenance, PodGroup coordination, and other advanced features, making it particularly suitable for high-performance computing and machine learning scenarios. Its framework-based design achieves good extensibility, allowing users to enable or disable specific controllers according to their needs. + +Volcano Controller deeply integrates with Kubernetes, using leader election mechanisms to ensure high availability, while providing health check and metric collection functions for system monitoring. Its flexible configuration options allow users to adjust parameters such as the number of worker threads, QPS limits, and resource management strategies. + +#### Parameters + +##### Kubernetes Parameters + +| Parameter Name | Description | Default | Example | +| ---------------- | ---------------------------------------- | ------- | ----------------------------------------- | +| `master` | Kubernetes API server address | - | `--master=https://kubernetes.default.svc` | +| `kubeconfig` | Path to kubeconfig file | - | `--kubeconfig=/etc/kubernetes/admin.conf` | +| `kube-api-qps` | QPS limit for communication with K8s API | 50.0 | `--kube-api-qps=100` | +| `kube-api-burst` | Burst limit for K8s API communication | 100 | `--kube-api-burst=200` | + +##### TLS Certificate Parameters + +| Parameter Name | Description | Default | Example | +| ---------------------- | -------------------------------------------- | ------- | --------------------------------------------- | +| `ca-cert-file` | x509 certificate file for HTTPS | - | `--ca-cert-file=/etc/volcano/ca.crt` | +| `tls-cert-file` | Default x509 certificate file for HTTPS | - | `--tls-cert-file=/etc/volcano/tls.crt` | +| `tls-private-key-file` | x509 private key file matching tls-cert-file | - | `--tls-private-key-file=/etc/volcano/tls.key` | + +##### Scheduler Configuration Parameters + +| Parameter Name | Description | Default | Example | +| --------------------------- | ------------------------------------------------------------ | --------- | ------------------------------------ | +| `scheduler-name` | .spec.SchedulerName for Pods handled by Volcano | "volcano" | `--scheduler-name=volcano-scheduler` | +| `worker-threads` | Number of threads for concurrent job operations | 3 | `--worker-threads=5` | +| `max-requeue-num` | Maximum number of requeues for jobs, queues, or commands | 15 | `--max-requeue-num=20` | +| `inherit-owner-annotations` | Whether to inherit owner's annotations when creating PodGroup | true | `--inherit-owner-annotations=false` | + +##### Dedicated Thread Parameters + +| Parameter Name | Description | Default | Example | +| ----------------------------- | -------------------------------------------- | ------- | ---------------------------------- | +| `worker-threads-for-podgroup` | Number of threads for PodGroup operations | 5 | `--worker-threads-for-podgroup=10` | +| `worker-threads-for-queue` | Number of threads for queue operations | 5 | `--worker-threads-for-queue=10` | +| `worker-threads-for-gc` | Number of threads for job garbage collection | 1 | `--worker-threads-for-gc=2` | + +##### Health Check and Monitoring Parameters + +| Parameter Name | Description | Default | Example | +| ----------------- | -------------------------------------- | -------- | -------------------------- | +| `healthz-address` | Listen address for health check server | ":11251" | `--healthz-address=:11252` | +| `enable-healthz` | Enable health check | false | `--enable-healthz=true` | +| `enable-metrics` | Enable metrics functionality | false | `--enable-metrics=true` | +| `listen-address` | Listen address for HTTP requests | ":8081" | `--listen-address=:8082` | + +##### Leader Election Parameters + +| Parameter Name | Description | Default | Example | +| --------------------------------- | ------------------------------------- | ----------------------- | -------------------------------------------------- | +| `lock-object-namespace` | Namespace of lock object (deprecated) | "volcano-system" | `--lock-object-namespace=kube-system` | +| `leader-elect` | Enable leader election | - | `--leader-elect=true` | +| `leader-elect-resource-name` | Leader election resource name | "vc-controller-manager" | - | +| `leader-elect-resource-namespace` | Leader election resource namespace | - | `--leader-elect-resource-namespace=volcano-system` | + +##### Controller Management Parameters + +| Parameter Name | Description | Default | Example | +| -------------- | ----------------------------- | --------------------- | ------------------------------------------------- | +| `controllers` | Specify controllers to enable | "*" (all controllers) | `--controllers=+job-controller,-queue-controller` | +| `version` | Display version and exit | false | `--version` | + +##### Controller List + +Volcano supports the following controllers, which can be enabled or disabled via the `controllers` parameter: + +- `gc-controller`: Garbage collection controller +- `job-controller`: Job controller +- `jobflow-controller`: Job flow controller +- `jobtemplate-controller`: Job template controller +- `pg-controller`: PodGroup controller +- `queue-controller`: Queue controller + +Use `*` to enable all controllers, `+[controller-name]` to explicitly enable a specific controller, and `-[controller-name]` to explicitly disable a specific controller. + +#### gc-controller + +The Garbage Collector is a specialized controller responsible for cleaning up completed Job resources. It works by monitoring Job creation and update events, identifying those that have completed (Completed, Failed, or Terminated) and have a TTL set (via .spec.ttlSecondsAfterFinished). + +The controller maintains a work queue, adding Jobs that need cleanup and processing them at appropriate times. It calculates the time elapsed since a Job's completion, and when that time reaches or exceeds the specified TTL, it deletes these Jobs through the API server. For Jobs that haven't yet expired, the controller requeues them with a timer set to process them again when their TTL expires. + +This mechanism ensures that completed Jobs don't permanently occupy cluster resources, while providing a flexible resource reclamation strategy that allows users to retain Job history records for a specified period before automatic cleanup. + +#### job-controller + +The Job Controller is a core controller responsible for managing and coordinating the lifecycle of Job resources. It works by monitoring changes to Job, Pod, PodGroup, and other resources, handling related events, and maintaining Job states. + +The controller processes Jobs according to their current state and triggered events, calling appropriate state handling functions to synchronize Job resources, including creating Pods, checking Pod status, and updating Job status. + +The controller implements a work queue system, using a hashing algorithm to distribute Jobs across different work queues for parallel processing. It also includes a delayed action mechanism that allows certain operations to execute after a specific delay, such as handling Pod failures or retries. It implements error handling and retry mechanisms, requeuing requests when operations fail and terminating Jobs and releasing resources after exceeding the maximum retry count. + +#### jobflow-controller + +The JobFlow Controller is primarily responsible for managing and coordinating the lifecycle of JobFlow CR. It works by monitoring changes to JobFlow, JobTemplate, and Job resources, handling related events, and maintaining JobFlow states. + +When a JobFlow is created or updated, the controller adds the request to a work queue and then performs appropriate state transition operations, calling corresponding handler functions to synchronize JobFlow resources, including creating dependent Jobs, checking Job status, and updating JobFlow status. + +It also handles error conditions, including retrying failed requests and recording events to help users understand the JobFlow's operational status. + +#### jobtemplate-controller + +The JobTemplate Controller is responsible for managing JobTemplate resources. It works by monitoring the creation events of JobTemplate and Job resources, handling related operations, and maintaining JobTemplate states. + +During initialization, the controller sets up various informers to monitor resource changes and creates work queues to process these events. + +When a JobTemplate is created, the controller adds it to the work queue and then performs synchronization operations, which may include creating actual Job resources based on the template. Similarly, when a Job is created, the controller also checks whether related JobTemplate statuses need to be updated. + +The controller implements error handling and retry mechanisms, requeuing requests when operations fail until reaching the maximum retry count. It also records events to help users understand the processing status of JobTemplates. + +#### pg-controller + +The PodGroup Controller is a specialized controller responsible for automatically creating and managing PodGroup resources for Pods using the Volcano scheduler. It works by monitoring the creation and update events of Pods and ReplicaSets, identifying those that need PodGroups but aren't yet associated with one. + +The controller maintains a work queue, adding Pod requests that need processing. When it detects Pods using the Volcano scheduler without a specified PodGroup, the controller automatically creates corresponding PodGroup resources, ensuring these Pods can be correctly processed by the Volcano scheduling system. + +Additionally, when the workload support feature is enabled, the controller also monitors ReplicaSet resources, creating unified PodGroups for Pods belonging to the same ReplicaSet, thereby supporting more complex workload patterns. The controller can also inherit annotations from Pod owners based on configuration, implementing more flexible resource management strategies. + +#### queue-controller + +The Queue Controller is a core controller responsible for managing and maintaining queue states in the Volcano scheduling system. It works by monitoring changes to Queue, PodGroup, and Command resources, coordinating queue lifecycle and state transitions. + +The controller maintains two work queues: one for processing queue state change requests and another for handling queue commands. When a queue state needs to change (such as opening, closing, or synchronizing), the controller calls the appropriate state handling function to execute the state transition. The controller also maintains the mapping relationship between queues and PodGroups, ensuring correct implementation of resource allocation and scheduling policies. + +When the QueueCommandSync parameter is enabled, the controller also monitors Command resources, supporting dynamic control of queue behavior through commands, such as opening or closing queues. The controller implements error handling and retry mechanisms, requeuing requests when operations fail and recording events and abandoning processing after exceeding the maximum retry count. This design ensures the consistency and reliability of queue states and is an important component of the Volcano scheduling system. + +### Admission + +#### Introduction + +Volcano Admission is a key component of the Volcano system, responsible for validating and modifying resource objects submitted to the Kubernetes cluster. It is implemented through Kubernetes' Webhook mechanism, capable of intercepting creation, update, and deletion requests for specific resources, and validating or modifying them according to predefined rules. + +Admission supports admission control for various resources, including Jobs, PodGroups, Pods, and Queues. Through configuration of different admission paths, it can flexibly control which resources need validation or modification. By default, it processes Pod resources managed by the Volcano scheduler (default name "volcano"). + +This component provides an HTTPS service to receive admission requests from the Kubernetes API server and supports health check functionality for monitoring its operational status. + +#### Parameters + +##### Kubernetes Parameters + +| Parameter Name | Description | Default | Example | +| ---------------- | -------------------------------------------------------- | ------- | ----------------------------------------- | +| `master` | Kubernetes API server address (overrides kubeconfig) | Empty | `--master=https://kubernetes.default.svc` | +| `kubeconfig` | Path to kubeconfig file with auth and master server info | Empty | `--kubeconfig=/etc/kubernetes/admin.conf` | +| `kube-api-qps` | QPS limit for communication with Kubernetes API server | 50.0 | `--kube-api-qps=100` | +| `kube-api-burst` | Burst limit for communication with Kubernetes API server | 100 | `--kube-api-burst=200` | + +##### TLS Certificate Parameters + +| Parameter Name | Description | Default | Example | +| ---------------------- | ------------------------------------------------ | ------- | --------------------------------------------- | +| `tls-cert-file` | Path to x509 certificate file for HTTPS service | Empty | `--tls-cert-file=/etc/volcano/tls.crt` | +| `tls-private-key-file` | Path to x509 private key file matching cert file | Empty | `--tls-private-key-file=/etc/volcano/tls.key` | +| `ca-cert-file` | Path to CA certificate file for HTTPS service | Empty | `--ca-cert-file=/etc/volcano/ca.crt` | + +##### Service Configuration Parameters + +| Parameter Name | Description | Default | Example | +| ---------------- | ------------------------------------------ | ------- | -------------------------- | +| `listen-address` | Address for Admission Controller to listen | Empty | `--listen-address=0.0.0.0` | +| `port` | Port for Admission Controller to use | 8443 | `--port=8443` | +| `version` | Display version information and exit | false | `--version` | + +##### Webhook Configuration Parameters + +| Parameter Name | Description | Default | Example | +| ---------------------- | --------------------------- | ------- | ------------------------------------------------------------ | +| `webhook-namespace` | Namespace of the webhook | Empty | `--webhook-namespace=volcano-system` | +| `webhook-service-name` | Name of the webhook service | Empty | `--webhook-service-name=volcano-admission` | +| `webhook-url` | URL of the webhook | Empty | `--webhook-url=https://volcano-admission.volcano-system:8443` | +| `admission-conf` | Path to webhook config file | Empty | `--admission-conf=/etc/volcano/admission.conf` | + +##### Admission Control Parameters + +| Parameter Name | Description | Default | Example | +| ------------------- | ---------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------- | +| `enabled-admission` | Enabled admission webhook paths, separated by commas | "/jobs/mutate,/jobs/validate,/podgroups/mutate,/pods/validate,/pods/mutate,/queues/mutate,/queues/validate" | `--enabled-admission=/jobs/mutate,/pods/validate` | +| `scheduler-name` | Volcano will handle Pods with matching .spec.SchedulerName | ["volcano"] | `--scheduler-name=volcano,custom-scheduler` | + +##### Health Check Parameters + +| Parameter Name | Description | Default | Example | +| ----------------- | ---------------------------------------- | -------- | -------------------------- | +| `enable-healthz` | Whether to enable health check | false | `--enable-healthz=true` | +| `healthz-address` | Address and port for health check server | ":11251" | `--healthz-address=:11252` | + +### Vcctl + +#### Introduction + +`vcctl` is a command-line tool provided by Volcano for managing and operating resources in a Volcano cluster. It offers a set of intuitive commands that enable users to easily query, create, modify, and delete Volcano resources such as Jobs, Queues, and PodGroups. + +The tool supports various operations, including listing, creating, deleting, and managing Volcano jobs, controlling job lifecycles (suspend, resume, run), querying and managing queue resources, viewing PodGroup status and details, and interacting with the Volcano scheduler. Through the command-line interface, users can quickly perform common management tasks without directly manipulating Kubernetes APIs or YAML files. This makes Volcano resource management simpler and more efficient, particularly suitable for batch processing jobs and high-performance computing scenarios. + +The `vcctl` tool adopts a command structure similar to `kubectl`, allowing Kubernetes users to quickly get started. It supports detailed help information, which users can access via `vcctl -h` or `vcctl [command] -h` to obtain detailed usage and option descriptions for each command. As an important component of the Volcano ecosystem, `vcctl` provides users with a convenient interface, simplifying the management and operation process for complex batch workloads. + +#### Parameters + +vcctl does not require any additional parameters; it can be started directly. + +### Agent + +#### Introduction + +Agent is a component that runs on Kubernetes nodes, primarily responsible for resource monitoring and oversubscription management. It significantly improves cluster resource utilization by identifying idle resources on nodes and allowing reasonable overcommitment. + +The Agent continuously monitors node resource usage, providing accurate resource information to the Volcano scheduling system to support more intelligent scheduling decisions. During resource contention, it can perform resource reclamation operations to ensure that the performance of critical workloads is not affected. + +Through deep integration with the Kubernetes CGroup system, Agent implements fine-grained resource control. It is an important supporting component for Volcano's efficient batch scheduling, particularly suitable for high-performance computing and machine learning scenarios. + +#### Parameters + +##### Kubernetes Parameters + +| Parameter Name | Type | Default | Description | +| ---------------------- | ------ | ------------------------ | ------------------------------------------------------------ | +| `--kube-cgroup-root` | string | `""` | Kubernetes cgroup root path. If CgroupsPerQOS is enabled, this is the root of the QOS cgroup hierarchy | +| `--kube-node-name` | string | env `KUBE_NODE_NAME` | Name of the node where the Agent is running | +| `--kube-pod-name` | string | env `KUBE_POD_NAME` | Name of the Pod where the Agent is running | +| `--kube-pod-namespace` | string | env `KUBE_POD_NAMESPACE` | Namespace of the Pod where the Agent is running | + +##### Health Check Parameters + +| Parameter Name | Type | Default | Description | +| ------------------- | ------ | ------- | ----------------------------------------- | +| `--healthz-address` | string | `""` | Address for health check server to listen | +| `--healthz-port` | int | `3300` | Port for health check server to listen | + +##### Resource Oversubscription Parameters + +| Parameter Name | Type | Default | Description | +| --------------------------- | ------ | ---------- | ------------------------------------------------------------ | +| `--oversubscription-policy` | string | `"extend"` | Oversubscription policy, determining how oversubscribed resources are reported and used. Default is `extend`, meaning report as extended resources | +| `--oversubscription-ratio` | int | `60` | Oversubscription ratio, determining how much idle resource can be overcommitted, in percentage | +| `--include-system-usage` | bool | `false` | Whether to consider system resource usage when calculating oversubscription resources and performing evictions | + +##### Feature Parameters + +| Parameter Name | Type | Default | Description | +| ---------------------- | -------- | ------- | ------------------------------------------------------------ | +| `--supported-features` | []string | `["*"]` | List of supported features. `*` means support all features enabled by default, `foo` means support feature named `foo`, `-foo` means don't support feature named `foo` | + +### Network-qos + +#### Introduction + +The Network plugin is a network bandwidth management solution designed specifically for Kubernetes clusters, aimed at intelligently adjusting network resource allocation between different types of workloads. This plugin integrates with existing network plugins through the CNI mechanism, enabling fine-grained control over container network traffic. + +Its core functionality is to distinguish between online and offline workloads, and dynamically adjust the bandwidth limits for offline jobs based on the real-time bandwidth needs of online services. When the bandwidth usage of online services exceeds a preset watermark, the system automatically reduces the available bandwidth for offline jobs, ensuring the quality of service for critical business applications. When online service bandwidth demands are low, the system allows offline jobs to use more bandwidth resources, improving overall cluster resource utilization. + +The plugin is implemented based on Linux TC (Traffic Control) and eBPF technologies, providing efficient, low-overhead network traffic management capabilities. It is an important tool for ensuring service quality in hybrid deployment environments. + +#### Parameters + +| Parameter Name | Description | Default | Type | +| -------------------------- | ------------------------------------------------------------ | ------- | ------ | +| `CheckoutInterval` | Time interval for checking and updating bandwidth limits for offline jobs | None | string | +| `OnlineBandwidthWatermark` | Bandwidth threshold for online jobs, representing the maximum total bandwidth usage of all online Pods | None | string | +| `OfflineLowBandwidth` | Maximum network bandwidth that offline jobs can use when online job bandwidth usage exceeds the watermark | None | string | +| `OfflineHighBandwidth` | Maximum network bandwidth that offline jobs can use when online job bandwidth usage is below the watermark | None | string | +| `EnableNetworkQoS` | Whether to enable network QoS functionality | false | bool | diff --git a/content/zh/docs/architecture.md b/content/zh/docs/architecture.md index b2c4fc9e..03ae4b91 100644 --- a/content/zh/docs/architecture.md +++ b/content/zh/docs/architecture.md @@ -324,7 +324,7 @@ Admission 支持多种资源的准入控制,包括 Jobs、PodGroups、Pods 和 #### 参数 -vcctl不需要 +vcctl不需要其他额外参数,直接启动即可。 ### Agent From 41bc69d5f06be3aac4e30c4f8bddbcb6c409a6c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=8A=92=E6=83=85=E7=86=8A?= <2669184984@qq.com> Date: Sun, 3 Aug 2025 19:57:00 +0800 Subject: [PATCH 3/8] add architecture and component. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 抒情熊 <2669184984@qq.com> --- content/zh/docs/architecture.md | 116 +------------------------------- 1 file changed, 2 insertions(+), 114 deletions(-) diff --git a/content/zh/docs/architecture.md b/content/zh/docs/architecture.md index 03ae4b91..5999ea68 100644 --- a/content/zh/docs/architecture.md +++ b/content/zh/docs/architecture.md @@ -273,117 +273,5 @@ Admission 支持多种资源的准入控制,包括 Jobs、PodGroups、Pods 和 | `kube-api-qps` | 与 Kubernetes API 服务器通信时的 QPS 限制 | 50.0 | `--kube-api-qps=100` | | `kube-api-burst` | 与 Kubernetes API 服务器通信时的突发请求限制 | 100 | `--kube-api-burst=200` | -##### TLS 证书参数 - -| 参数名 | 描述 | 默认值 | 示例 | -| ---------------------- | ------------------------------------------- | ------ | --------------------------------------------- | -| `tls-cert-file` | HTTPS 服务的 x509 证书文件路径 | 空 | `--tls-cert-file=/etc/volcano/tls.crt` | -| `tls-private-key-file` | 与 `tls-cert-file` 匹配的 x509 私钥文件路径 | 空 | `--tls-private-key-file=/etc/volcano/tls.key` | -| `ca-cert-file` | HTTPS 服务的 CA 证书文件路径 | 空 | `--ca-cert-file=/etc/volcano/ca.crt` | - -##### 服务配置参数 - -| 参数名 | 描述 | 默认值 | 示例 | -| ---------------- | ------------------------------------- | ------ | -------------------------- | -| `listen-address` | Admission Controller 服务器监听的地址 | 空 | `--listen-address=0.0.0.0` | -| `port` | Admission Controller 服务器使用的端口 | 8443 | `--port=8443` | -| `version` | 显示版本信息并退出 | false | `--version` | - -##### Webhook 配置参数 - -| 参数名 | 描述 | 默认值 | 示例 | -| ---------------------- | ---------------------- | ------ | ------------------------------------------------------------ | -| `webhook-namespace` | Webhook 所在的命名空间 | 空 | `--webhook-namespace=volcano-system` | -| `webhook-service-name` | Webhook 服务的名称 | 空 | `--webhook-service-name=volcano-admission` | -| `webhook-url` | Webhook 的 URL | 空 | `--webhook-url=https://volcano-admission.volcano-system:8443` | -| `admission-conf` | Webhook 的配置文件路径 | 空 | `--admission-conf=/etc/volcano/admission.conf` | - -##### 准入控制参数 - -| 参数名 | 描述 | 默认值 | 示例 | -| ------------------- | ------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------- | -| `enabled-admission` | 启用的准入 Webhook 路径,多个路径用逗号分隔 | "/jobs/mutate,/jobs/validate,/podgroups/mutate,/pods/validate,/pods/mutate,/queues/mutate,/queues/validate" | `--enabled-admission=/jobs/mutate,/pods/validate` | -| `scheduler-name` | Volcano 将处理 `.spec.SchedulerName` 与此参数匹配的 Pod | ["volcano"] | `--scheduler-name=volcano,custom-scheduler` | - -##### 健康检查参数 - -| 参数名 | 描述 | 默认值 | 示例 | -| ----------------- | ------------------------------ | -------- | -------------------------- | -| `enable-healthz` | 是否启用健康检查 | false | `--enable-healthz=true` | -| `healthz-address` | 健康检查服务器监听的地址和端口 | ":11251" | `--healthz-address=:11252` | - -### Vcctl - -#### 介绍 - -`vcctl` 是 Volcano 提供的命令行工具,用于管理和操作 Volcano 集群中的资源。它提供了一组直观的命令,使用户能够轻松地查询、创建、修改和删除 Volcano 资源,如作业(Job)、队列(Queue)和 PodGroup 等。 - -该工具支持多种操作,包括列出、创建、删除和管理 Volcano 作业,控制作业的生命周期(挂起、恢复、运行),查询和管理队列资源,查看 PodGroup 状态和详情,以及与 Volcano 调度器交互。通过命令行界面,用户可以快速执行常见的管理任务,而无需直接操作 Kubernetes API 或 YAML 文件。这使得 Volcano 资源管理变得更加简单和高效,特别适合于批处理作业和高性能计算场景。 - -`vcctl` 工具采用了类似于 `kubectl` 的命令结构,使 Kubernetes 用户能够快速上手。它支持详细的帮助信息,用户可以通过 `vcctl -h` 或 `vcctl [command] -h` 获取各命令的详细用法和选项说明。作为 Volcano 生态系统的重要组成部分,`vcctl` 为用户提供了一个便捷的接口,简化了复杂批处理工作负载的管理和操作流程。 - -#### 参数 - -vcctl不需要其他额外参数,直接启动即可。 - -### Agent - -#### 介绍 - -Agent 是运行在 Kubernetes 节点上的组件,主要负责资源监控和过度订阅管理。它通过识别节点上的闲置资源并允许合理超卖,显著提高集群资源利用率。 - -Agent 持续监控节点资源使用情况,为 Volcano 调度系统提供准确的资源信息,支持更智能的调度决策。在资源紧张时,它能够执行资源回收操作,确保关键工作负载的性能不受影响。 - -通过与 Kubernetes CGroup 系统的深度集成,Agent 实现了精细化的资源控制,是 Volcano 高效批处理调度的重要支撑组件,特别适合高性能计算和机器学习等场景。 - -#### 参数 - -##### Kubernetes 参数 - -| 参数名 | 类型 | 默认值 | 描述 | -| ---------------------- | ------ | ----------------------------- | ------------------------------------------------------------ | -| `--kube-cgroup-root` | string | `""` | Kubernetes 的 cgroup 根路径。如果启用了 CgroupsPerQOS,这是 QOS cgroup 层次结构的根 | -| `--kube-node-name` | string | 环境变量 `KUBE_NODE_NAME` | Agent 运行所在的节点名称 | -| `--kube-pod-name` | string | 环境变量 `KUBE_POD_NAME` | Agent 所在 Pod 的名称 | -| `--kube-pod-namespace` | string | 环境变量 `KUBE_POD_NAMESPACE` | Agent 所在 Pod 的命名空间 | - -##### 健康检查参数 - -| 参数名 | 类型 | 默认值 | 描述 | -| ------------------- | ------ | ------ | ------------------------ | -| `--healthz-address` | string | `""` | 健康检查服务器监听的地址 | -| `--healthz-port` | int | `3300` | 健康检查服务器监听的端口 | - -##### 资源过度订阅参数 - -| 参数名 | 类型 | 默认值 | 描述 | -| --------------------------- | ------ | ---------- | ------------------------------------------------------------ | -| `--oversubscription-policy` | string | `"extend"` | 过度订阅策略,决定过度订阅资源的报告和使用方式。默认为 `extend`,表示报告为扩展资源 | -| `--oversubscription-ratio` | int | `60` | 过度订阅比率,决定有多少闲置资源可以被超卖,单位为百分比 | -| `--include-system-usage` | bool | `false` | 是否在计算过度订阅资源和执行驱逐时考虑系统资源使用情况 | - -##### 功能特性参数 - -| 参数名 | 类型 | 默认值 | 描述 | -| ---------------------- | -------- | ------- | ------------------------------------------------------------ | -| `--supported-features` | []string | `["*"]` | 支持的特性列表。`*` 表示支持所有默认启用的特性,`foo` 表示支持名为 `foo` 的特性,`-foo` 表示不支持名为 `foo` 的特性 | - -### Network-qos - -#### 介绍 - -Network插件是一个专为 Kubernetes 集群设计的网络带宽管理解决方案,旨在智能调节不同类型工作负载之间的网络资源分配。该插件通过 CNI 机制与现有网络插件链式组合,实现对容器网络流量的精细控制。 - -它的核心功能是区分在线和离线工作负载,并根据在线服务的实时带宽需求动态调整离线作业的带宽上限。当在线服务的带宽使用超过预设水位线时,系统会自动降低离线作业的可用带宽,确保关键业务服务质量;当在线服务带宽需求较低时,系统则允许离线作业使用更多带宽资源,提高集群整体资源利用率。 - -该插件基于 Linux TC(Traffic Control)和 eBPF 技术实现,提供高效、低开销的网络流量管理能力,是混合部署环境中保障服务质量的重要工具。 - -#### 参数 - -| 参数名称 | 说明 | 默认值 | 类型 | -| -------------------------- | ------------------------------------------------------------ | ------ | ------ | -| `CheckoutInterval` | 检查和更新离线作业带宽限制的时间间隔 | 无 | string | -| `OnlineBandwidthWatermark` | 在线作业的带宽阈值,是所有在线 Pod 带宽使用的总和上限 | 无 | string | -| `OfflineLowBandwidth` | 当在线作业带宽使用超过水位线时,离线作业可使用的最大网络带宽 | 无 | string | -| `OfflineHighBandwidth` | 当在线作业带宽使用未达到水位线时,离线作业可使用的最大网络带宽 | 无 | string | -| `EnableNetworkQoS` | 是否启用网络 QoS 功能 | false | bool | +- Vcctl +Volcano vcctl是Volcano的命令行客户端工具。 From af8068dfd300977eb7e9dfb16b92b59cad6dd8d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=8A=92=E6=83=85=E7=86=8A?= <2669184984@qq.com> Date: Sun, 3 Aug 2025 20:12:38 +0800 Subject: [PATCH 4/8] en version. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 抒情熊 <2669184984@qq.com> --- content/zh/docs/architecture.md | 114 ++++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) diff --git a/content/zh/docs/architecture.md b/content/zh/docs/architecture.md index 5999ea68..231a6baf 100644 --- a/content/zh/docs/architecture.md +++ b/content/zh/docs/architecture.md @@ -275,3 +275,117 @@ Admission 支持多种资源的准入控制,包括 Jobs、PodGroups、Pods 和 - Vcctl Volcano vcctl是Volcano的命令行客户端工具。 +##### TLS 证书参数 + +| 参数名 | 描述 | 默认值 | 示例 | +| ---------------------- | ------------------------------------------- | ------ | --------------------------------------------- | +| `tls-cert-file` | HTTPS 服务的 x509 证书文件路径 | 空 | `--tls-cert-file=/etc/volcano/tls.crt` | +| `tls-private-key-file` | 与 `tls-cert-file` 匹配的 x509 私钥文件路径 | 空 | `--tls-private-key-file=/etc/volcano/tls.key` | +| `ca-cert-file` | HTTPS 服务的 CA 证书文件路径 | 空 | `--ca-cert-file=/etc/volcano/ca.crt` | + +##### 服务配置参数 + +| 参数名 | 描述 | 默认值 | 示例 | +| ---------------- | ------------------------------------- | ------ | -------------------------- | +| `listen-address` | Admission Controller 服务器监听的地址 | 空 | `--listen-address=0.0.0.0` | +| `port` | Admission Controller 服务器使用的端口 | 8443 | `--port=8443` | +| `version` | 显示版本信息并退出 | false | `--version` | + +##### Webhook 配置参数 + +| 参数名 | 描述 | 默认值 | 示例 | +| ---------------------- | ---------------------- | ------ | ------------------------------------------------------------ | +| `webhook-namespace` | Webhook 所在的命名空间 | 空 | `--webhook-namespace=volcano-system` | +| `webhook-service-name` | Webhook 服务的名称 | 空 | `--webhook-service-name=volcano-admission` | +| `webhook-url` | Webhook 的 URL | 空 | `--webhook-url=https://volcano-admission.volcano-system:8443` | +| `admission-conf` | Webhook 的配置文件路径 | 空 | `--admission-conf=/etc/volcano/admission.conf` | + +##### 准入控制参数 + +| 参数名 | 描述 | 默认值 | 示例 | +| ------------------- | ------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------- | +| `enabled-admission` | 启用的准入 Webhook 路径,多个路径用逗号分隔 | "/jobs/mutate,/jobs/validate,/podgroups/mutate,/pods/validate,/pods/mutate,/queues/mutate,/queues/validate" | `--enabled-admission=/jobs/mutate,/pods/validate` | +| `scheduler-name` | Volcano 将处理 `.spec.SchedulerName` 与此参数匹配的 Pod | ["volcano"] | `--scheduler-name=volcano,custom-scheduler` | + +##### 健康检查参数 + +| 参数名 | 描述 | 默认值 | 示例 | +| ----------------- | ------------------------------ | -------- | -------------------------- | +| `enable-healthz` | 是否启用健康检查 | false | `--enable-healthz=true` | +| `healthz-address` | 健康检查服务器监听的地址和端口 | ":11251" | `--healthz-address=:11252` | + +### Vcctl + +#### 介绍 + +`vcctl` 是 Volcano 提供的命令行工具,用于管理和操作 Volcano 集群中的资源。它提供了一组直观的命令,使用户能够轻松地查询、创建、修改和删除 Volcano 资源,如作业(Job)、队列(Queue)和 PodGroup 等。 + +该工具支持多种操作,包括列出、创建、删除和管理 Volcano 作业,控制作业的生命周期(挂起、恢复、运行),查询和管理队列资源,查看 PodGroup 状态和详情,以及与 Volcano 调度器交互。通过命令行界面,用户可以快速执行常见的管理任务,而无需直接操作 Kubernetes API 或 YAML 文件。这使得 Volcano 资源管理变得更加简单和高效,特别适合于批处理作业和高性能计算场景。 + +`vcctl` 工具采用了类似于 `kubectl` 的命令结构,使 Kubernetes 用户能够快速上手。它支持详细的帮助信息,用户可以通过 `vcctl -h` 或 `vcctl [command] -h` 获取各命令的详细用法和选项说明。作为 Volcano 生态系统的重要组成部分,`vcctl` 为用户提供了一个便捷的接口,简化了复杂批处理工作负载的管理和操作流程。 + +#### 参数 + +vcctl不需要其他额外参数,直接启动即可。 + +### Agent + +#### 介绍 + +Agent 是运行在 Kubernetes 节点上的组件,主要负责资源监控和过度订阅管理。它通过识别节点上的闲置资源并允许合理超卖,显著提高集群资源利用率。 + +Agent 持续监控节点资源使用情况,为 Volcano 调度系统提供准确的资源信息,支持更智能的调度决策。在资源紧张时,它能够执行资源回收操作,确保关键工作负载的性能不受影响。 + +通过与 Kubernetes CGroup 系统的深度集成,Agent 实现了精细化的资源控制,是 Volcano 高效批处理调度的重要支撑组件,特别适合高性能计算和机器学习等场景。 + +#### 参数 + +##### Kubernetes 参数 + +| 参数名 | 类型 | 默认值 | 描述 | +| ---------------------- | ------ | ----------------------------- | ------------------------------------------------------------ | +| `--kube-cgroup-root` | string | `""` | Kubernetes 的 cgroup 根路径。如果启用了 CgroupsPerQOS,这是 QOS cgroup 层次结构的根 | +| `--kube-node-name` | string | 环境变量 `KUBE_NODE_NAME` | Agent 运行所在的节点名称 | +| `--kube-pod-name` | string | 环境变量 `KUBE_POD_NAME` | Agent 所在 Pod 的名称 | +| `--kube-pod-namespace` | string | 环境变量 `KUBE_POD_NAMESPACE` | Agent 所在 Pod 的命名空间 | + +##### 健康检查参数 + +| 参数名 | 类型 | 默认值 | 描述 | +| ------------------- | ------ | ------ | ------------------------ | +| `--healthz-address` | string | `""` | 健康检查服务器监听的地址 | +| `--healthz-port` | int | `3300` | 健康检查服务器监听的端口 | + +##### 资源过度订阅参数 + +| 参数名 | 类型 | 默认值 | 描述 | +| --------------------------- | ------ | ---------- | ------------------------------------------------------------ | +| `--oversubscription-policy` | string | `"extend"` | 过度订阅策略,决定过度订阅资源的报告和使用方式。默认为 `extend`,表示报告为扩展资源 | +| `--oversubscription-ratio` | int | `60` | 过度订阅比率,决定有多少闲置资源可以被超卖,单位为百分比 | +| `--include-system-usage` | bool | `false` | 是否在计算过度订阅资源和执行驱逐时考虑系统资源使用情况 | + +##### 功能特性参数 + +| 参数名 | 类型 | 默认值 | 描述 | +| ---------------------- | -------- | ------- | ------------------------------------------------------------ | +| `--supported-features` | []string | `["*"]` | 支持的特性列表。`*` 表示支持所有默认启用的特性,`foo` 表示支持名为 `foo` 的特性,`-foo` 表示不支持名为 `foo` 的特性 | + +### Network-qos + +#### 介绍 + +Network插件是一个专为 Kubernetes 集群设计的网络带宽管理解决方案,旨在智能调节不同类型工作负载之间的网络资源分配。该插件通过 CNI 机制与现有网络插件链式组合,实现对容器网络流量的精细控制。 + +它的核心功能是区分在线和离线工作负载,并根据在线服务的实时带宽需求动态调整离线作业的带宽上限。当在线服务的带宽使用超过预设水位线时,系统会自动降低离线作业的可用带宽,确保关键业务服务质量;当在线服务带宽需求较低时,系统则允许离线作业使用更多带宽资源,提高集群整体资源利用率。 + +该插件基于 Linux TC(Traffic Control)和 eBPF 技术实现,提供高效、低开销的网络流量管理能力,是混合部署环境中保障服务质量的重要工具。 + +#### 参数 + +| 参数名称 | 说明 | 默认值 | 类型 | +| -------------------------- | ------------------------------------------------------------ | ------ | ------ | +| `CheckoutInterval` | 检查和更新离线作业带宽限制的时间间隔 | 无 | string | +| `OnlineBandwidthWatermark` | 在线作业的带宽阈值,是所有在线 Pod 带宽使用的总和上限 | 无 | string | +| `OfflineLowBandwidth` | 当在线作业带宽使用超过水位线时,离线作业可使用的最大网络带宽 | 无 | string | +| `OfflineHighBandwidth` | 当在线作业带宽使用未达到水位线时,离线作业可使用的最大网络带宽 | 无 | string | +| `EnableNetworkQoS` | 是否启用网络 QoS 功能 | false | bool | From 68832cbccf9f6ad7e2df44fd14afadb955650612 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=8A=92=E6=83=85=E7=86=8A?= <2669184984@qq.com> Date: Sun, 17 Aug 2025 19:08:22 +0800 Subject: [PATCH 5/8] change picture,and bug fix. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 抒情熊 <2669184984@qq.com> --- content/en/docs/architecture.md | 12 +++++++----- content/zh/docs/architecture.md | 14 ++++++++------ static/img/arch_3.jpg | Bin 0 -> 226248 bytes 3 files changed, 15 insertions(+), 11 deletions(-) create mode 100644 static/img/arch_3.jpg diff --git a/content/en/docs/architecture.md b/content/en/docs/architecture.md index b9b31c62..25331474 100644 --- a/content/en/docs/architecture.md +++ b/content/en/docs/architecture.md @@ -18,10 +18,12 @@ linktitle = "Architecture" ## Overview -{{
}} +{{
}} Volcano is naturally compatible with Kubernetes, following its design philosophy and style while extending Kubernetes' native capabilities to provide comprehensive support for high-performance workloads such as machine learning, big data applications, scientific computing, and special effects rendering. Its architectural design fully considers scalability, high performance, and ease of use, built upon years of experience running various high-performance workloads at scale and incorporating best practices from the open-source community. +{{
}} + The core architecture consists of four main components: The Scheduler, as the system core, implements advanced features such as Gang scheduling and heterogeneous device scheduling through pluggable Actions and Plugins, providing fine-grained resource allocation for batch jobs; the ControllerManager is responsible for managing CRD resource lifecycles, containing three controllers—Queue, PodGroup, and VCJob—that respectively manage queue resources, Pod groups, and Volcano Jobs; the Admission component validates CRD API resources to ensure job configurations meet system requirements; while Vcctl serves as a command-line client tool, providing a friendly interface for managing and monitoring resources and jobs. Volcano's layered architectural design enables it to seamlessly connect with mainstream computing frameworks such as Spark, TensorFlow, PyTorch, and Flink, while providing unified scheduling capabilities. Its modular design allows users to extend functionality according to their needs by adding custom scheduling strategies and resource management capabilities. Through this architectural design, Volcano achieves efficient resource utilization, precise job scheduling, and reliable system operation, providing solid infrastructure support for high-performance computing and large-scale batch processing. @@ -367,17 +369,17 @@ Through deep integration with the Kubernetes CGroup system, Agent implements fin | ---------------------- | -------- | ------- | ------------------------------------------------------------ | | `--supported-features` | []string | `["*"]` | List of supported features. `*` means support all features enabled by default, `foo` means support feature named `foo`, `-foo` means don't support feature named `foo` | -### Network-qos +#### Network-qos -#### Introduction +##### Introduction -The Network plugin is a network bandwidth management solution designed specifically for Kubernetes clusters, aimed at intelligently adjusting network resource allocation between different types of workloads. This plugin integrates with existing network plugins through the CNI mechanism, enabling fine-grained control over container network traffic. +The Network plugin is a network bandwidth management solution designed specifically for Kubernetes clusters, Used in conjunction with the Agent component,aimed at intelligently adjusting network resource allocation between different types of workloads. This plugin integrates with existing network plugins through the CNI mechanism, enabling fine-grained control over container network traffic. Its core functionality is to distinguish between online and offline workloads, and dynamically adjust the bandwidth limits for offline jobs based on the real-time bandwidth needs of online services. When the bandwidth usage of online services exceeds a preset watermark, the system automatically reduces the available bandwidth for offline jobs, ensuring the quality of service for critical business applications. When online service bandwidth demands are low, the system allows offline jobs to use more bandwidth resources, improving overall cluster resource utilization. The plugin is implemented based on Linux TC (Traffic Control) and eBPF technologies, providing efficient, low-overhead network traffic management capabilities. It is an important tool for ensuring service quality in hybrid deployment environments. -#### Parameters +##### Parameters | Parameter Name | Description | Default | Type | | -------------------------- | ------------------------------------------------------------ | ------- | ------ | diff --git a/content/zh/docs/architecture.md b/content/zh/docs/architecture.md index 231a6baf..33eb61f6 100644 --- a/content/zh/docs/architecture.md +++ b/content/zh/docs/architecture.md @@ -19,11 +19,13 @@ linktitle = "架构" ## 概览 -{{
}} +{{
}} Volcano 与 Kubernetes 天然兼容,遵循其设计理念和风格,同时扩展了 Kubernetes 原生能力,为机器学习、大数据应用、科学计算和特效渲染等高性能工作负载提供完整支持机制。其架构设计充分考虑了可扩展性、高性能和易用性,建立在多年来大规模运行各种高性能工作负载的经验之上,并结合了开源社区的最佳实践。 -核心架构由四个主要组件构成:作为系统核心的 Scheduler 通过可插拔的 Action 和 Plugin 实现 Gang 调度、异构设备调度等高级特性,为批处理作业提供精细化资源分配;ControllerManager 负责管理 CRD 资源生命周期,包含 Queue、PodGroup 和 VCJob 三个控制器分别管理队列资源、Pod 组和 Volcano Job;Admission 组件对 CRD API 资源进行校验,确保作业配置符合系统要求;而 Vcctl 则作为命令行客户端工具,提供友好的接口管理和监控资源与作业。 +{{
}} + +Volcano由四个主要组件构成:作为系统核心的 Scheduler 通过可插拔的 Action 和 Plugin 实现 Gang 调度、异构设备调度等高级特性,为批处理作业提供精细化资源分配;ControllerManager 负责管理 CRD 资源生命周期,包含 Queue、PodGroup 和 VCJob 三个控制器分别管理队列资源、Pod 组和 Volcano Job;Admission 组件对 CRD API 资源进行校验,确保作业配置符合系统要求;而 Vcctl 则作为命令行客户端工具,提供友好的接口管理和监控资源与作业。 Volcano 的分层架构设计使其能够无缝对接 Spark、TensorFlow、PyTorch、Flink 等主流计算框架,同时提供统一的调度能力。其模块化设计允许用户根据需求扩展功能,添加自定义的调度策略和资源管理能力。通过这种架构设计,Volcano 实现了资源的高效利用、作业的精确调度和系统的可靠运行,为高性能计算和大规模批处理提供了坚实的基础设施支持。 @@ -370,17 +372,17 @@ Agent 持续监控节点资源使用情况,为 Volcano 调度系统提供准 | ---------------------- | -------- | ------- | ------------------------------------------------------------ | | `--supported-features` | []string | `["*"]` | 支持的特性列表。`*` 表示支持所有默认启用的特性,`foo` 表示支持名为 `foo` 的特性,`-foo` 表示不支持名为 `foo` 的特性 | -### Network-qos +#### Network-qos -#### 介绍 +##### 介绍 -Network插件是一个专为 Kubernetes 集群设计的网络带宽管理解决方案,旨在智能调节不同类型工作负载之间的网络资源分配。该插件通过 CNI 机制与现有网络插件链式组合,实现对容器网络流量的精细控制。 +Network插件是一个专为 Kubernetes 集群设计的网络带宽管理解决方案,与Agent组件一同使用,旨在智能调节不同类型工作负载之间的网络资源分配。该插件通过 CNI 机制与现有网络插件链式组合,实现对容器网络流量的精细控制。 它的核心功能是区分在线和离线工作负载,并根据在线服务的实时带宽需求动态调整离线作业的带宽上限。当在线服务的带宽使用超过预设水位线时,系统会自动降低离线作业的可用带宽,确保关键业务服务质量;当在线服务带宽需求较低时,系统则允许离线作业使用更多带宽资源,提高集群整体资源利用率。 该插件基于 Linux TC(Traffic Control)和 eBPF 技术实现,提供高效、低开销的网络流量管理能力,是混合部署环境中保障服务质量的重要工具。 -#### 参数 +###### 参数 | 参数名称 | 说明 | 默认值 | 类型 | | -------------------------- | ------------------------------------------------------------ | ------ | ------ | diff --git a/static/img/arch_3.jpg b/static/img/arch_3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..71e9a0033a5d7378231fa572104bf66bd43332f8 GIT binary patch literal 226248 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 Date: Sun, 17 Aug 2025 19:24:49 +0800 Subject: [PATCH 6/8] add helm value MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 抒情熊 <2669184984@qq.com> --- content/en/docs/architecture.md | 4 ++++ content/zh/docs/architecture.md | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/content/en/docs/architecture.md b/content/en/docs/architecture.md index 25331474..2c203ebf 100644 --- a/content/en/docs/architecture.md +++ b/content/en/docs/architecture.md @@ -388,3 +388,7 @@ The plugin is implemented based on Linux TC (Traffic Control) and eBPF technolog | `OfflineLowBandwidth` | Maximum network bandwidth that offline jobs can use when online job bandwidth usage exceeds the watermark | None | string | | `OfflineHighBandwidth` | Maximum network bandwidth that offline jobs can use when online job bandwidth usage is below the watermark | None | string | | `EnableNetworkQoS` | Whether to enable network QoS functionality | false | bool | + +## Helm + +If you need to view the complete Helm parameters, you can obtain them through [Volcano Helm](https://github.com/volcano-sh/volcano/blob/master/installer/helm/chart/volcano/values.yaml). diff --git a/content/zh/docs/architecture.md b/content/zh/docs/architecture.md index 33eb61f6..ac5e651b 100644 --- a/content/zh/docs/architecture.md +++ b/content/zh/docs/architecture.md @@ -391,3 +391,7 @@ Network插件是一个专为 Kubernetes 集群设计的网络带宽管理解决 | `OfflineLowBandwidth` | 当在线作业带宽使用超过水位线时,离线作业可使用的最大网络带宽 | 无 | string | | `OfflineHighBandwidth` | 当在线作业带宽使用未达到水位线时,离线作业可使用的最大网络带宽 | 无 | string | | `EnableNetworkQoS` | 是否启用网络 QoS 功能 | false | bool | + +## Helm + +如果需要查看完整的Helm参数,可以通过这里[Volcano Helm](https://github.com/volcano-sh/volcano/blob/master/installer/helm/chart/volcano/values.yaml)获取 From 4fda52171c897d01a42439977c69b1e930427913 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=8A=92=E6=83=85=E7=86=8A?= <2669184984@qq.com> Date: Sun, 17 Aug 2025 19:29:30 +0800 Subject: [PATCH 7/8] change picture,and bug fix. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 抒情熊 <2669184984@qq.com> --- content/en/docs/architecture.md | 2 +- content/zh/docs/architecture.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/content/en/docs/architecture.md b/content/en/docs/architecture.md index 2c203ebf..edbaf424 100644 --- a/content/en/docs/architecture.md +++ b/content/en/docs/architecture.md @@ -18,7 +18,7 @@ linktitle = "Architecture" ## Overview -{{
}} +{{
}} Volcano is naturally compatible with Kubernetes, following its design philosophy and style while extending Kubernetes' native capabilities to provide comprehensive support for high-performance workloads such as machine learning, big data applications, scientific computing, and special effects rendering. Its architectural design fully considers scalability, high performance, and ease of use, built upon years of experience running various high-performance workloads at scale and incorporating best practices from the open-source community. diff --git a/content/zh/docs/architecture.md b/content/zh/docs/architecture.md index ac5e651b..430bfe56 100644 --- a/content/zh/docs/architecture.md +++ b/content/zh/docs/architecture.md @@ -19,7 +19,7 @@ linktitle = "架构" ## 概览 -{{
}} +{{
}} Volcano 与 Kubernetes 天然兼容,遵循其设计理念和风格,同时扩展了 Kubernetes 原生能力,为机器学习、大数据应用、科学计算和特效渲染等高性能工作负载提供完整支持机制。其架构设计充分考虑了可扩展性、高性能和易用性,建立在多年来大规模运行各种高性能工作负载的经验之上,并结合了开源社区的最佳实践。 From c177874c6f4102ba4a3a4e7f8b2f2a45c13cc6a6 Mon Sep 17 00:00:00 2001 From: Bearix <2669184984@qq.com> Date: Fri, 21 Nov 2025 18:41:40 +0800 Subject: [PATCH 8/8] Update content/zh/docs/architecture.md Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- content/zh/docs/architecture.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/zh/docs/architecture.md b/content/zh/docs/architecture.md index 430bfe56..56d630a7 100644 --- a/content/zh/docs/architecture.md +++ b/content/zh/docs/architecture.md @@ -33,7 +33,7 @@ Volcano 的分层架构设计使其能够无缝对接 Spark、TensorFlow、PyTor Volcano由以下几个组件构成: -- **Scheduler**:通过一系列action和plugin调度Job并匹配最适节点,区别于Kubernetes原生调度器,支持多种Job专用调度算法 +- **Scheduler**:通过一系列 action 和 plugin 调度 Job 并匹配最适节点,区别于Kubernetes原生调度器,支持多种Job专用调度算法 - **Controller**:管理CRD资源生命周期,由多个控制器组成 - **Admission**:负责CRD API资源的校验工作 - **Vcctl**:Volcano的命令行客户端工具