HashiCorp 集成
平台的云原生底座由 HashiCorp 三件套 构成:Nomad 负责调度编排,Consul 负责服务治理,Vault 负责零信任安全。三者协同,把分散在各地的供应商 GPU 机器,凝聚成一朵可调度、可观测、可信任的算力云。本页面向想深入理解底层机制的进阶用户。
⬡ Nomad — 调度编排
平台不重写调度引擎,而是把 Nomad 作为调度层,ark-api 通过其 HTTP API(:4646,携带 X-Nomad-Token)下发与查询作业。供应商节点运行 nomad agent -client,通过 retry_join 出站接入 Server(RPC :4647、Serf :4648),无需开放入站端口。
client meta 协议:精确放置
每个节点接入时由 setup.sh 生成稳定的节点 ID 写入 /etc/ark/node-id,作为 Nomad client 的 meta.node-id。平台据此把作业精确约束到"用户在市场选中的那台机器",而非交给 Nomad 自由选择:
constraint {
attribute = "${meta.node-id}"
value = "<目标节点ID>"
}按卡 GPU 分配
用户租用 N 张卡时,作业请求对应数量的 GPU 设备,由节点的 nvidia 设备插件把具体物理卡分配给容器;多租户节点上不同租用获得不同的卡,互不干扰:
resource {
device "nvidia/gpu" {
count = N
}
}两类作业
- 交互式实例为
service作业:动态端口避免冲突、cloudflared sidecar 暴露隧道、持久卷挂在节点本地(如/ark/instances/<id>)、复用 Nomad 健康检查与重启策略。 - 批处理任务为
batch作业:执行到结束后查看日志。
⬡ Consul — 服务治理
Consul 是平台的服务网格与健康中枢。它让数百上千台分散节点变成一张可观测、可治理的服务网格——这是算力市场"哪台机器现在可用"的事实来源。
职责:
- 服务发现:节点与实例服务自动注册到目录,Nomad 与平台据此寻址。
- 健康检查:周期探活,节点掉线秒级感知,直接驱动市场的
connection_status与节点offline判定。 - KV 配置:集中下发节点运行参数,无需逐台改配置。
节点的"在线/离线"不是平台轮询猜的,而是 Consul 健康检查的权威结论——这让可靠性评分与市场排序有了可信数据源。
⬡ Vault — 零信任安全
Vault 是平台的零信任密钥中枢。所有敏感凭证都由 Vault 动态签发、短期有效、可吊销、全程审计,杜绝长期密钥散落在配置文件与环境变量里。
签发的凭证类型:
- 节点接入凭证:节点身份与接入认证,替代静态长期密钥。
- mTLS PKI 证书:控制平面与节点间双向 TLS 的证书自动签发与轮换。
- 私有镜像仓库凭证:拉取用户私有镜像、推送 commit 镜像所需的短期凭证。
价值:凭证短期、动态、可审计,任一节点失陷的爆炸半径被限制在凭证有效期内,满足合规与安全审计要求。
三者协同:状态同步
平台后端 poller 周期性向 Nomad 查询分配(allocation)状态、结合 Consul 健康结论,把容器运行态映射回租用的 instance_status,并驱动计费按分钟刷新;期间所需的一切凭证由 Vault 即时签发。
历史说明:编排层早期为 Bacalhau,现已整体迁移到 HashiCorp Nomad 体系,节点不再使用 NATS。
更多放置与可达性细节见 网络与隧道。
