跳转到内容

从未上线的站点

于 2026-07-28 从本部署的一个 CE 上采集。sitecli/capture-manifest.json 记录了采集自哪个节点,scripts/capture-sitecli.sh --check 会针对实时 CE 重新校验命令接口。

  1. 确认你查询的租户是否正确。 这只需一条命令,之所以放在首位,是因为一旦搞错,后续每一步都会 给你错误的结论:在你没有查看的那个租户中运行良好的机群,与一个从未注册过的机群在表现上无从区分。

    Terminal window
    cd terraform
    terraform output -raw xc_tenant # the tenant this deployment belongs to
    terraform output -raw xc_env_tenant # the tenant your shell is exporting
    f5-sales-demo
    f5-sales-demo

    两者不一致,或者你认为有效的凭据却返回了一个裸的 401?这正是为另一个租户签发的令牌所表现出的 症状,它已经让本部署付出了一次完整重建的代价(issue 696)。

  2. 确认租户端的认知。 站点未出现在站点列表中,与出现但状态不是 ONLINE,是两个不同的问题。

    Terminal window
    curl -sS -H "Authorization: APIToken $XCSH_API_TOKEN" \
    "$XCSH_API_URL/api/config/namespaces/system/sites" | jq -r '.items[].name'

    如果站点存在且报告为 ONLINE,说明注册已成功,你走错了排查流程。

  3. 找到该站点的注册记录及其状态。 一个节点可能已完成注册但仍在等待审批,从外部看起来与失败完全一样。

    Terminal window
    curl -sS -H "Authorization: APIToken $XCSH_API_TOKEN" \
    "$XCSH_API_URL/api/register/namespaces/system/registrations_by_site/<site>" \
    | jq -r '.items[] | "\(.name) \(.object.status.current_state) \(.object.spec.gc_spec.infra.hostname)"'
    r-a97e20c8-b7e1-483d-bd76-34a64ff8bc78 ONLINE f5-xc-ce-vm-01

    完全没有条目意味着节点尚未注册 —— 请前往串行控制台。存在条目但状态不是 ONLINE, 意味着它已注册而之后的某个环节失败了,那属于另一项排查。

    若要在整个命名空间中排查所有等待审批的项,listregistrationsbystatePOST 请求体的形式接收状态:

    Terminal window
    curl -sS -X POST -H "Authorization: APIToken $XCSH_API_TOKEN" \
    -H "Content-Type: application/json" \
    -d '{"namespace":"system","state":"PENDING"}' \
    "$XCSH_API_URL/api/register/namespaces/system/listregistrationsbystate" | jq -r '.items[].name'

    在健康的机群上,该命令不返回任何内容,因为审批是自动化的。

  4. 确认虚拟机确实在运行,不要先假定是软件故障。

    Terminal window
    az vm list -d -g <resource-group> --query "[].{name:name,power:powerState}" -o table
    Name Power
    ---------------- ----------
    f5-xc-ce-vm-01 VM running
    f5-xc-ce-vm-02 VM running
    f5-xc-ce-vm-03 VM running
    mcn-ce-ha-client VM running
  5. 接入串行控制台。 交互式使用需要一个真实终端;接入过程本身也可以改用 websocket 脚本化 —— 参见 串行控制台

    Terminal window
    az serial-console connect -g <resource-group> -n <vm-name>

    如果连接被拒绝,请先检查该虚拟机是否已启用引导诊断,再断定节点不可达;该前置条件及其失败模式在 串行控制台页面中有说明。

  6. 按此顺序阅读控制台输出。 先看 cloud-init —— 一个 cloud-init 从未完成的节点没有任何可用于注册的配置。 然后看注册尝试本身,接着看 DNS:如果节点无法解析 register.ves.volterra.io,后续的一切都无法工作。

  7. 一旦节点变为 ONLINE,用 health 进行验证, 并预期看到 state: PROVISIONED

  • 你指向了错误的租户,因此一个正常的机群看起来像不存在。见步骤 1。
  • cloud-init 未完成,因此 /etc/vpm/config.yaml 缺失或有误。
  • 注册令牌已过期、已被使用,或来自另一个租户。
  • 没有到 register.ves.volterra.io 的出站路由。
  • 时钟偏差过大导致证书失效 —— 之后可以用 chronyc-sources 快速排除,但在节点上线前无法执行。 在可以使用 SSH 时,SSH 登录横幅会在你运行任何命令之前报告 NTP: Synced 以及解析器的状态。