跳到內容

序列主控台

擷取自本部署環境中某一台 CE,時間為 2026-07-28。sitecli/capture-manifest.json 記錄了是哪一個節點,而 scripts/capture-sitecli.sh --check 會針對執行中的 CE 重新驗證指令介面。

Azure 序列主控台透過 Azure 平台掛接到節點的模擬序列埠。它不會經過 F5 Distributed Cloud 控制平面、節點的資料平面,或任何由節點掌控的網路路徑——這正是為什麼在其他方式都失效時, 它依然能運作。

當某台 CE 從未成功啟動時就該動用它:註冊失敗、租戶中找不到該站點, 或節點雖已啟動卻沒有對外路由。在上述所有情況下, 除錯 API 都沒有可轉送的通道。SSH 在註冊失敗後仍可使用, 但前提是其金鑰已在首次開機時寫入,且你能從 VNet 內部連到節點的內部位址—— 對於一台你初次接觸的節點,這兩點都不成立。

如果節點還有任何可用的網路路徑,請先嘗試 Site Console: 它同樣能在註冊失敗後使用、不需要金鑰,也不會把已在查看該節點的人踢下線。 序列主控台是在網路路徑本身就是故障點時所剩的最後手段。

Azure 要求 VM 必須啟用開機診斷,才會掛接序列主控台。 這已由 terraform/modules/ce-node 啟用:

boot_diagnostics {}

空白區塊表示選用 Azure 代管的儲存體,因此不需要自行管理診斷儲存體帳戶、 生命週期政策或存取金鑰。在節點上確認:

Terminal window
az vm show -g <resource-group> -n <vm-name> --query diagnosticsProfile
{ "bootDiagnostics": { "enabled": true } }

掛接需要互動式工作階段,但要判斷它是否能掛接只需兩個 API 呼叫。 兩者在健康檢查中都很有用。

該服務必須在訂閱層級為啟用狀態——管理員可以在整個租戶範圍停用它:

Terminal window
az rest --method get --url \
"https://management.azure.com/subscriptions/<sub>/providers/Microsoft.SerialConsole/consoleServices/default?api-version=2018-05-01"
{ "properties": { "disabled": false } }

接著請求連線到特定節點的序列埠:

Terminal window
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——表示主控台現在就可以掛接。 在啟用開機診斷之前,此呼叫沒有任何可掛接的對象。

  1. 安裝擴充功能(僅需一次):

    Terminal window
    az extension add --name serial-console
  2. 掛接:

    Terminal window
    az serial-console connect -g <resource-group> -n <vm-name>
  3. 你會抵達節點自己的登入提示字元,而不是 shell,且位於設備的稽核橫幅之後。 序列主控台證明的是通道可用;它不會繞過身分驗證。

擷取自 f5-xc-ce-vm-01,中段 systemd unit 輸出因無額外資訊而省略:

+-----------------------------------------------+
Connected to the serial port of the VM.
If no login prompt is displayed, press ENTER.
+-----------------------------------------------+
Probing EDD (edd=off to disable)... ok
Memory 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 PROHIBITED
All actions performed on this device are audited
f5-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 ],這是雙執行環境行為在開機時的 證據,而該行為常讓人在 crictldocker 中感到意外。
  • VP Manager image loadArgo Watch service——vpm 與 Argo 正在啟動。
  • 提示字元是節點自己的,位於其稽核橫幅之後。序列主控台給你的是登入提示字元, 不是一個工作階段。

在這裡能看到、但 API 無法呈現的內容

Section titled “在這裡能看到、但 API 無法呈現的內容”
  • cloud-init 正在執行、失敗,或從未啟動——這是節點從未註冊成功的常見原因。
  • 針對 register.ves.volterra.io註冊嘗試,包括設定錯誤 或租戶拒絕的 token。
  • 任何代理程式尚未執行之前的核心與開機訊息
  • 節點完全沒有可用網路路徑時的狀態,而這種情況會讓其他所有途徑失效。

對於處於 ONLINE 狀態的節點,請優先使用除錯 API:它可指令碼化、 能產生可重複執行的證據,且不會佔用唯一的序列埠。