前置
- Kubernetes 集群(GPU 节点装好 device plugin);
- KubeRay operator(helm 安装,v1.4+);
- 对象存储(必需:作业包经预签名 URL 分发进容器);
- GPU 节点按卡型打标签:
kubectl label node <n> starforge/gpu-series=h200。
配置
语义要点
Job Capsule 分发
Job Capsule 分发
Console 把用户代码、权威 JobSpec、manifest 与
runner.pex 组装成内容寻址 Capsule 并上传对象存储。HTTPS 归档走 Ray runtimeEnvYAML.working_dir;仅 HTTP 的对象存储由每个 Ray Pod 的 init container 先校验 transport SHA-256,再以相同 file:// 路径交给 runtime-env agent。训练镜像无需平台 bootstrap 包。RayJob 形态
RayJob 形态
head = 主池 machine zero;多池作业每池一个 worker group(nodeSelector 按卡型、Ray 自定义资源 pin)。
shutdownAfterJobFinishes=true + backoffLimit=0:训练不盲目重试。终态日志归档后平台立即删除 RayJob;TTL 是异常兜底。容量与调度
容量与调度
集群容量从节点
nvidia.com/gpu 容量 + 卡型标签实时统计;不可调度节点计入 blocked。页面显示的分卡型容量与调度器实际可落的节点同源。卡在 Pending 的排查
卡在 Pending 的排查
真正原因只在 K8s Event 里(拉镜像失败 / 无满足 nodeSelector 的节点 / GPU 不足)——作业详情的事件视图直接展示;超过 preRunning 期限自动判失败,不会无限占队列。
无 GPU 集群(仅测试)
无 GPU 集群(仅测试)
FORGE_K8S_GPU_PASSTHROUGH=0:Pod 不请求 nvidia.com/gpu,Ray 逻辑资源照常。kind/CI 跑闭环用,生产保持默认。