Skip to content

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 自由选择:

hcl
constraint {
  attribute = "${meta.node-id}"
  value     = "<目标节点ID>"
}

按卡 GPU 分配

用户租用 N 张卡时,作业请求对应数量的 GPU 设备,由节点的 nvidia 设备插件把具体物理卡分配给容器;多租户节点上不同租用获得不同的卡,互不干扰:

hcl
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。

更多放置与可达性细节见 网络与隧道

基于 MIT License 发布