内容提要
本系列从源码角度解析 KubeRay 与 Volcano。先介绍 Ray、Kubernetes、KubeRay 与 Volcano 的职责与架构;KubeRay 部分涵盖组件分工、Reconcile 协调、并发管理、Operator 重启恢复与高可用;Volcano 部分涵盖 Job、PodGroup、Queue 架构、Gang 调度、队列资源竞争与抢占,以及 KubeRay 接入和生命周期协作;最后总结 Operator 设计。
延伸解读
系列定位与阅读路径
本系列面向希望理解系统原理的使用者,从源码角度解析 KubeRay 与 Volcano。文章建议:初次接触可从第 0 篇背景导引开始;熟悉基础概念的读者可从第 1 篇直接进入源码;希望先建立整体认识,也可先读第 10 篇总结。源码用于说明机制及其成立条件,而非逐行解读。
KubeRay 部分的核心线索
KubeRay 部分围绕集群管理、协调与恢复展开。第 1 篇以一次 RayJob 提交说明资源用途与分工;第 2 篇跟踪从 Pod 变化到 Reconcile 的协调过程;第 3 篇以 100 个 RayCluster 推演并发管理;第 4、5 篇分别分析 Operator 重启恢复与高可用,涵盖主备切换和 Ray 服务恢复。
Volcano 部分与接入协作
Volcano 部分从 Pod 争用资源切入,第 6 篇区分 Job、PodGroup、Queue 及组件协作;第 7 篇沿三成员 PodGroup 说明 Gang 调度与绑定;第 8 篇用两个 Queue 解释资源份额、抢占与回收;第 9 篇对比默认流程与 Volcano 接入流程,跟踪 RayCluster Controller 创建成员 Pod 的路径及生命周期协作。
源码阅读的总结视角
第 10 篇总结从 KubeRay 与 Volcano 看 Operator 设计,归纳资源建模与协调逻辑、并发控制、恢复和高可用设计,以及 Kubernetes 和 controller-runtime 提供的支撑机制。这为读者提供了一个跨项目的设计对比框架,而非仅停留在单个组件的实现细节。
Q&A
KubeRay 和 Volcano 分别解决什么问题?
KubeRay 负责 Ray 集群的管理、协调与恢复,包括组件分工、Reconcile 协调、并发管理、Operator 重启恢复与高可用;Volcano 负责批调度,包括 Job、PodGroup、Queue 架构、Gang 调度、队列资源竞争与抢占,以及 KubeRay 接入和生命周期协作。
KubeRay 的 Reconcile 协调过程是怎样的?
从 worker Pod 的状态变化进入监听、缓存和工作队列,跟踪一次 Reconcile,以及事件、延时和错误怎样触发下一轮协调。
KubeRay Operator 重启后如何恢复工作?
把中断放在资源创建与状态写回之间,沿持久化身份、对象查询和重试分支,分析 Operator 重启后的恢复依据与防重边界。
Volcano 的 Gang 调度是如何工作的?
沿一个三成员 PodGroup 走过准入、试分配、Gang 检查、提交与异步绑定,说明资源不足和部分绑定失败时会发生什么。
Volcano 中队列资源竞争和抢占是如何处理的?
用两个 Queue 说明 Volcano 怎样计算资源份额、选择下一项工作,以及资源占满后怎样在 Queue 内抢占或跨 Queue 回收。
KubeRay 如何与 Volcano 集成?
对比默认流程与 Volcano 接入流程,跟踪 RayCluster Controller 创建成员 Pod 的路径,再说明参数传递和生命周期协作。