串行控制台
于 2026-07-28 从本部署的某个 CE 上采集。sitecli/capture-manifest.json
记录了采集自哪个节点,scripts/capture-sitecli.sh --check 会针对运行中的 CE
重新校验命令接口。
Azure 串行控制台通过 Azure 平台连接到节点的模拟串行端口。它不会穿越 F5 分布式云控制平面、 节点的数据平面,或任何由节点控制的网络路径 —— 这正是它在其他一切手段都失效时仍然可用的原因。
当某个 CE 从未启动成功时使用它:注册失败、站点在租户中不存在,或节点已启动但没有出口路由。 在所有这些情况下,调试 API 都没有可用于中继的隧道。SSH 在注册失败后仍然可用,但前提是其密钥已在首次引导时写入,且你能从 VNet 内部访问节点的内部地址 —— 对于一个你初次接触的节点来说,这两点都不成立。
如果节点还有任何可用的网络路径,请先尝试 站点控制台:它同样能在注册失败后使用、 不需要密钥,也不会把已经在查看该节点的人挤下线。串行控制台是当网络路径本身就是故障所在时, 你所剩下的唯一手段。
前提条件:引导诊断
Section titled “前提条件:引导诊断”Azure 要求虚拟机启用引导诊断,才会为其连接串行控制台。
该功能由 terraform/modules/ce-node 启用:
boot_diagnostics {}空块表示选择由 Azure 托管的存储,因此不存在需要自行管理的诊断存储账户、生命周期策略或访问密钥。 在节点上确认:
az vm show -g <resource-group> -n <vm-name> --query diagnosticsProfile{ "bootDiagnostics": { "enabled": true } }无需终端即可检查可用性
Section titled “无需终端即可检查可用性”连接需要交互式会话,但判断它是否能够连接只需两次 API 调用。两者在健康检查中都很有用。
该服务必须为订阅启用 —— 管理员可以在整个租户范围内禁用它:
az rest --method get --url \ "https://management.azure.com/subscriptions/<sub>/providers/Microsoft.SerialConsole/consoleServices/default?api-version=2018-05-01"{ "properties": { "disabled": false } }然后请求连接到某个特定节点的串行端口:
az rest --method post \ --headers "Content-Type=application/json" --body '{}' --url \ "https://management.azure.com/subscriptions/<sub>/resourceGroups/<rg>/providers/Microsoft.Compute/virtualMachines/<vm>/providers/Microsoft.SerialConsole/serialPorts/0/connect?api-version=2018-05-01"以 wss:// 开头的 connectionString —— 在本部署中为
eastus.gateway.serialconsole.azure.com —— 表示控制台此刻可以连接。
在启用引导诊断之前,该调用没有任何可连接的目标。
-
安装一次扩展:
Terminal window az extension add --name serial-console -
连接:
Terminal window az serial-console connect -g <resource-group> -n <vm-name> -
你会到达节点自身的登录提示符,而不是 shell,并且位于该设备的审计横幅之后。 串行控制台证明了通道可用;它并不绕过身份验证。
采集自 f5-xc-ce-vm-01,中间部分已省略,因为 systemd 单元输出没有额外信息:
+-----------------------------------------------+Connected to the serial port of the VM.If no login prompt is displayed, press ENTER.+-----------------------------------------------+
Probing EDD (edd=off to disable)... okMemory KASLR using RDRAND RDTSC...init_cea_offsets KASLR using RDRAND RDTSC...Poking KASLR using RDRAND RDTSC...
Welcome to Red Hat Enterprise Linux 9.2024.6.3 (Plow) dracut-057-44.git20230822.el9 (Initramfs)!
[ OK ] Started Dispatch Password …ts to Console Directory Watch.
... [320 lines of systemd unit output elided]
[ OK ] Started Serial Getty on ttyS0.[ OK ] Reached target Login Prompts.[ OK ] Started OpenSSH server daemon.[ OK ] Started Container Runtime Interface for OCI (CRI-O).[ 19.960784] cloud-init[1311]: Cloud-init v. 23.1.1-12.el9_3 running 'modules:config' at Sun, 26 Jul 2026 13:13:54 +0000. Up 19.84 seconds.[ OK ] Finished Apply the settings specified in cloud-config. Starting Execute cloud user/final scripts...[ OK ] Started Docker Application Container Engine. Starting Argo Watch service... Starting VP Manager image load...[ OK ] Started Argo Watch service.[ 21.544663] cloud-init[1512]: Cloud-init v. 23.1.1-12.el9_3 running 'modules:final' at Sun, 26 Jul 2026 13:13:56 +0000. Up 21.41 seconds.[ 22.751629] cloud-init[1512]: Cloud-init v. 23.1.1-12.el9_3 finished at Sun, 26 Jul 2026 13:13:57 +0000. Datasource DataSourceAzure [seed=/var/lib/waagent]. Up 22.37 seconds[ OK ] Finished Execute cloud user/final scripts.[ OK ] Started libcontainer conta…f4b59f3b96c31ee10cd95f6eb371c.
UNAUTHORIZED ACCESS TO THIS DEVICE IS PROHIBITEDAll actions performed on this device are auditedf5-xc-ce-vm-01 login: [ 123.107074] Warning: Deprecated Driver is detected: iptables will not be maintained in a future major release and may be disabled[ 123.144641] Warning: Deprecated Driver is detected: ip6tables will not be maintained in a future major release and may be disabled该记录中有四点值得注意,因为它们回答了调试 API 无法回答的问题:
- cloud-init 已完成 ——
Datasource DataSourceAzure,在 22.37 秒时结束。 从未注册成功的节点通常在这里失败,而这里正是你能看到它的地方。 - 两个容器运行时都已启动。
Container Runtime Interface for OCI (CRI-O)和Docker Application Container Engine各自都是[ OK ],这是双运行时行为在引导阶段的证据 —— 该行为常让人们在 crictl 和 docker 中感到意外。 VP Manager image load与Argo Watch service——vpm与 Argo 正在启动。- 提示符属于节点自身,位于其审计横幅之后。串行控制台给你的是登录提示符,而不是会话。
在这里你能看到 API 无法展示的内容
Section titled “在这里你能看到 API 无法展示的内容”- cloud-init 正在运行、失败或从未启动 —— 节点从未注册成功的常见原因。
- 针对
register.ves.volterra.io的注册尝试,包括配置错误或被租户拒绝的令牌。 - 任何代理运行之前的内核与引导消息。
- 节点没有任何可用网络路径时的状态,这种情况会让其他所有途径失效。
对于状态确实为 ONLINE 的节点,请优先使用调试 API:它可脚本化、能产生可重复执行的证据,
而且不会占用唯一的串行端口。