跳到內容

Customer Edge 診斷

Customer Edge(CE)是本儲存庫佈建至 Azure 的 F5 Distributed Cloud 節點 — terraform/modules/ce-node,以 volterraedgeservices/volterra-node Marketplace 映像檔建置。

它執行資料平面(Argo)、控制平面(Vega)、一個 Envoy Proxy、一套 Kubernetes 堆疊,以及 vpm —— 負責註冊節點並管理節點上其他所有項目的代理程式。

當 CE 出現異常時,Site CLI 就是診斷工具。第一個決定是判斷適用哪一種存取路徑, 選錯會浪費時間,而且症狀看起來就像節點壞掉一樣。

四種存取路徑,彼此並不可互換

Section titled “四種存取路徑,彼此並不可互換”

Debug API 透過 F5 Distributed Cloud 控制平面連上節點。 這正是這項區分之所以重要的原因:只有在節點已註冊並回報 ONLINE 之後,API 才能回應。

註冊失敗的節點 —— cloud-init 有誤、權杖過期、無法路由至 register.ves.volterra.io —— 正是你最需要診斷的情況, 也正是 API 無法提供服務的情況。

當你想使用 F5 自家的疑難排解 UI,而非執行特定指令時,Site Console 是首選。它對你的要求最少 —— 不需要金鑰、不需要跳板主機、節點也不需要公用 IP —— 因為誰可以連線變成一項 Azure RBAC 決策,而且無論站台是否已註冊它都能回應。它需要 Azure Bastion, 本部署以 enable_bastion 控管,且預設不會佈建。

SSH 是唯一能觸及設備完整指令介面的途徑 —— Debug API 只公開 34 個指令,而節點本身提供的遠不止於此。有兩項限制。 sshd 僅在節點的內部(SLI)位址上回應,因此需要一台位於 VNet 內的主機; 此外金鑰是由 cloud-init 在首次開機時寫入的,因為站台物件上的 ssh_key 欄位是無效的 —— vpm 會略過 admin 使用者,永遠不會套用它。因此若要在執行中的節點上啟用,就必須將其汰換重建。

所以:如果站台為 ONLINE 且 34 個指令已足夠,請使用 Debug API。若需要 UI,或節點從未註冊 但仍有網路路徑,請使用 Site Console。如果你需要其餘的指令介面且能連到 VNet,請使用 SSH。 如果節點完全沒有可用的網路路徑,序列主控台是唯一的進入途徑。

以下規則適用於下列各頁的每一個指令。

  • 除非你有十足把握,否則只做唯讀操作。 指令介面分為兩個權限層級,而 Exec 層級要麼會變更節點狀態,要麼會讀取狀態標記。這些頁面上沒有任何內容會執行 Exec 指令,擷取工具也不會。
  • 切勿從指令名稱推斷它是安全的。 ip-link-set 讀起來像查詢,實際上會關閉介面。 systemctl-restart-crio 會在資料平面運作中重啟容器執行環境。
  • 優先選擇能回答問題的最小範圍指令。 healthdiagnosis 能以低成本摘要節點狀態;flow-l 會傾印每一條即時流量,而 flow-l-match 則針對單一連線回答同樣的問題。
  • CE 承載實際流量。 這些是共用的展示環境。請假設有人正在使用你正在除錯的站台進行簡報。

本租戶所執行的軟體版本上,所有可透過 Debug API 存取的指令,每一個都附有從實際節點擷取的輸出, 而非從別處轉錄而來。

指令參考列出全部指令及其類別、權限層級與傳輸方式; 工作流程則將它們串接成你在出問題時實際會使用的操作序列。

Site CLI 中僅限於節點本機的部分 —— configureconfigure-networkfactory-resetupgrade 以及約六十個其他 ExecCLI 指令 —— 並未涵蓋在內, 因為它們的輸出並未像下列各頁那樣從實際節點擷取。

不過,它們已不再遙不可及。scripts/sitecli_ssh_harvest.py 會透過 SSH 驅動設備自身的自動完成選單,並記錄設備對每個指令所給出的說明, 如此一來這個指令介面就能被實際量測,而非靠猜測。它的執行採預設拒絕 —— 它會列舉所有項目,但只執行允許清單中的指令 —— 因為未經驗證的指令語法,以及未經驗證的指令作用,正是本文件存在所要避免重蹈覆轍的缺陷。