跳转到内容

一个已注册的节点未列出

Symptom

安装程序在机器上已完成,但仪表板中的 节点 未列出它 — 或者列出了它但从未变为就绪状态。GET /api/v1/nodes 也没有返回它,所以这不是显示问题。

Diagnose

  1. 机器上的容器运行时是否正在运行?

    docker info

    期望看到一个带有版本的服务器部分。Cannot connect to the Docker daemon 意味着代理程序没有可驱动的内容,它将不会报告就绪。

  2. 代理程序是否启动了,它说了什么?

    sudo journalctl -u odysseus-agent --since "10 minutes ago"

    期望看到启动行,然后是成功的注册。身份验证失败、连接超时和运行时 API 错误都会在此处自行命名。

  3. 注册令牌是否已被使用? 令牌为一次性使用且会过期。第二次运行相同的安装命令会被拒绝,如果无人查看日志,该拒绝看起来就像静默失败。

  4. 机器能否连接到控制平面? 代理程序维持一个出站连接;一个注册后就不再活动的节点通常是出站问题,而非注册问题。

Odysseus 仪表板中的节点列表,显示每台已注册机器的状态、VPN 状态、调度状态、容器数量和容量——这是安装完成的机器应该出现的地方,也是未就绪的机器显示原因的地方。

Resolve

  • 运行时未运行: 启动它,然后重启代理程序。代理程序无需重新注册。
  • 令牌已用尽或过期: 从 节点 → 注册节点 处签发新令牌并运行新命令。 不要重新运行旧命令:它携带的是已消耗的令牌。
  • 出站流量被阻止: 打开到控制平面的出站 HTTPS 连接。平台侧无法 补偿无法向外呼叫的机器。
  • 在错误的租户下注册: 一个节点属于一个租户且不可移动。将其移除, 然后从正确的租户重新注册。

Prevent

在运行命令时立即从仪表板注册,这样令牌就是最新的,并在关闭 shell 前检查节点是否已就绪。注册失败的机器通常会在大约一分钟内失败,而说明原因的日志行只有在它是最后一行时才容易找到。