跳到主要内容
版本:Next

操作指南:通过控制平面灰度发布作业

把你在本地调试好的同一份声明式作业,运行到由控制平面 Hub 管理的计算节点机群上。

前提条件

组成部分​

┌─────────┐   submit    ┌─────┐   assign    ┌───────┐   run   ┌──────┐
│ You │────────────▶│ Hub │────────────▶│ Agent │────────▶│ Kernel│
└─────────┘ └─────┘ └───────┘ └──────┘
  • Hub —— 控制平面服务端。存储期望的作业状态、为节点发放租约、分配作业并执行调和。
  • Agent —— 运行在每个计算节点上。接收分配并驱动统一执行内核。
  • 本地校验通过的作业在机群上原样运行,因为两条路径使用的是同一个 JobSpec。

1. 在本地调试作业​

./target/release/arkflow --config examples/jobs_local.yaml --validate
./target/release/arkflow --config examples/jobs_local.yaml

预期结果:校验通过且作业在本地运行——这正是 Hub 将分发的那个 JobSpec。

2. 启动 Hub 并注册 Agent​

examples/control_plane_hub.yaml 配置了一个 Hub 及其 API 与健康检查端点;examples/control_plane_example.yaml 展示了 Agent 侧的部署配置:

# 终端 1 —— Hub
./target/release/arkflow --config examples/control_plane_hub.yaml

# 终端 2+ —— 每个计算节点一个 Agent
./target/release/arkflow --config examples/control_plane_example.yaml

预期结果:每个 Agent 都会作为持有租约的节点出现在 Hub 的机群 API(/api/v1)中。 失联的节点仍会出现在机群中,但在租约刷新之前不再接收新的分配。

3. 提交作业并验证​

通过控制平面 HTTP API 提交作业规格。期望状态由 Hub 存储;Agent 领取分配、通过内核运行作业并上报观测状态。 可以通过杀掉一个 Agent 来观察调和过程:Hub 会注意到过期的租约,并把作业重新分配到健康节点。

运维细节——部署、定向到特定节点以及完整的 HTTP API——见 控制平面概览与运维指南。

故障排查​

  • 作业一直处于 pending —— 没有健康的 Agent 持有租约;检查 Agent 日志与机群列表。
  • 更新时版本冲突 —— 作业版本是单调递增的;提交时请将 version 递增。