排解 Distributed Cloud connected 問題

Google 會從遠端監控及維護 Google Distributed Cloud 連結網路方案硬體。為此,Google 工程師可透過安全殼層 (SSH) 存取 Distributed Cloud Connected 硬體。如果 Google 偵測到問題,Google 工程師會與您聯絡,協助排解及解決問題。如果自行發現問題,請立即與 Google 支援團隊聯絡,以便診斷及解決問題。

Distributed Cloud connected 軟體升級

本節說明如何使用 Metrics Explorer,檢查 Distributed Cloud 連線叢集是否正在進行軟體升級。

這個程序會使用下列監控指標:

  • 目前叢集版本 (/edge_cluster/current_cluster_version):指出叢集上執行的 Distributed Cloud 連結軟體目前版本。

  • 目標叢集版本 (/edge_cluster/target_cluster_version):指出叢集升級的 Distributed Cloud connected 目標版本。

如要完成本節中的步驟,必須符合下列必要條件:

  1. 存取 Google Cloud 控制台和 Distributed Cloud 連線 Google Cloud 專案。
  2. Monitoring 檢視者 IAM 角色,可讓您查看 Monitoring 指標。
  3. (選用) 目標 Distributed Cloud connected 機器的 machine_id 值,用於篩選傳回的結果。

使用 Metrics Explorer 檢查叢集目前的軟體版本和目標軟體版本

  1. 前往 Metrics Explorer:

    1. 在 Google Cloud 控制台中,前往「Monitoring」部分。

    2. 在左側導覽樹狀結構中,按一下「Metrics Explorer」

  2. 選取目標資源類型:

    1. 在 Metrics Explorer 頁面中,前往「Configuration」頁面。

    2. 按一下「Select a metric」(選取指標)

    3. 使用搜尋列搜尋「叢集」資源類型。您也可以使用完整資源 ID edgecontainer.googleapis.com/Cluster

    4. 在傳回的結果中,按一下「叢集」資源類型。

  3. 取得叢集的目前軟體版本:

    1. 在「指標」部分,搜尋 current_cluster_version 值。

    2. 選取「機器正常運作時間」指標。完整路徑為 edgecontainer.googleapis.com/edge_cluster/current_cluster_version

    3. (選用) 使用「Filter」(篩選器) 區段,依目標 machine_id 值篩選。

  4. 取得叢集的目標軟體版本:

    1. 按一下「新增查詢」

    2. 在「指標」部分,搜尋 target_cluster_version 值。

    3. 選取「目標叢集版本」指標。完整路徑為 edgecontainer.googleapis.com/edge_cluster/target_cluster_version

    4. (選用) 使用「Filter」(篩選器) 區段,依目標 machine_id 值篩選。

  5. 在隨即顯示的圖表中,查看叢集的軟體升級狀態。

    • 如果「目前的叢集版本」和「目標叢集版本」行顯示的值不同,表示叢集正在進行軟體升級。

    • 如果「目前的叢集版本」和「目標叢集版本」行顯示相同的值,表示叢集未進行軟體升級。

  6. 使用下列指令驗證上一個步驟的結果:

    gcloud edge-cloud container clusters describe CLUSTER_ID --location=REGION
    

    更改下列內容:

    • CLUSTER_ID:目標叢集的 ID。
    • REGION:叢集建立所在的 Google Cloud 區域。

    在指令輸出中,請記下下列欄位的值:

    • 如果 status 欄位的值為 UPDATING,表示叢集正在進行軟體升級。
    • 如果 clusterVersiontargetVersion 欄位的值不同,請根據 Metrics Explorer 傳回的值檢查這些欄位。

解讀結果

下表說明 Metrics Explorer 和 gcloud 指令傳回的結果。

叢集狀態 診斷 解析度
正常
currentVersiontargetVersion 值相符
`status` 值為 RUNNING
叢集執行的是目標版本的 Distributed Cloud connected 軟體。
升級
currentVersion 值低於 targetVersion
`status` 值為 UPDATING
叢集正在升級至 Distributed Cloud 連線軟體的目標版本。 在 Metrics Explorer 中監控叢集,直到目前和目標叢集版本值相符為止。
卡住
currentVersion 值無限期低於 targetVersion
`status` 值無限期為 UPDATING
叢集至少有一個節點無法升級至目標版本的 Distributed Cloud 連線軟體。 檢查機器連線和系統記錄,並向 Google 尋求協助。
回溯
currentVersion 值高於 targetVersion
`status` 值為 UPDATING
叢集正在還原至舊版 Distributed Cloud 連結軟體。 請與 Google 聯絡,瞭解復原原因。

如果叢集的軟體升級失敗,或叢集已復原為先前的軟體版本,請檢查下列事項:

  • 節點健康狀態。確認每個實體 Distributed Cloud 連線機器都有網路連線,並回報正常運作時間,如下一節所述。
  • 維護期間。確認軟體升級是否因維護作業排除時段而暫停。
  • 系統記錄。檢查系統記錄,找出軟體升級失敗的可能原因,例如 Pod 驅逐逾時。

如果表格中列出的解決步驟無法解決問題,請與 Google 支援聯絡,並提供受影響機器的 machine_id 值和服務中斷時間戳記。

Distributed Cloud connected 機器重新啟動

本節說明如何使用 Metrics Explorer,檢查 Distributed Cloud 連線實體機器是否已重新啟動,並判斷重新啟動的原因。監控重新啟動作業有助於判斷這些作業是否為計畫性維護的一部分,或是硬體故障或電力中斷所致。

這個程序會使用下列監控指標:

  • 機器運作時間 (/machine/uptime):表示自上次重新啟動以來經過的時間 (以秒為單位)。

  • 裝置重新啟動 (/machine/restart_count):顯示目標裝置自部署以來重新啟動的總次數。

如要完成本節中的步驟,必須符合下列必要條件:

  1. 存取 Google Cloud 控制台和 Distributed Cloud 連線 Google Cloud 專案。
  2. Monitoring 檢視者 IAM 角色,可讓您查看 Monitoring 指標。
  3. (選用) 目標 Distributed Cloud connected 機器的 machine_id 值,用於篩選傳回的結果。

使用 Metrics Explorer 檢查機器運作時間和重新啟動次數

  1. 前往 Metrics Explorer:

    1. 在 Google Cloud 控制台中,前往「Monitoring」部分。

    2. 在左側導覽樹狀結構中,按一下「Metrics Explorer」

  2. 選取目標資源類型:

    1. 在 Metrics Explorer 頁面中,前往「Configuration」頁面。

    2. 按一下「Select a metric」(選取指標)

    3. 使用搜尋列搜尋「機器」資源類型。您也可以使用完整資源 ID edgecontainer.googleapis.com/Machine

    4. 在傳回的結果中,按一下「Machine」(機器) 資源類型。

  3. 檢查機器的運作時間:

    1. 在「指標」部分,搜尋 uptime 值。

    2. 選取「機器正常運作時間」指標。完整路徑為 edgecontainer.googleapis.com/machine/uptime

    3. (選用) 使用「Filter」(篩選器) 區段,依目標 machine_id 值篩選。

    4. 在顯示的時間圖表中,確認運作時間圖表持續上升。如果正常運作時間值在任何時間點降至零並重新啟動,表示機器已重新啟動。

  4. 檢查裝置的重新啟動次數:

    1. 在「指標」部分,搜尋 restart_count 值。

    2. 選取「裝置重新啟動」指標。完整路徑為 edgecontainer.googleapis.com/machine/restart_count

    3. (選用) 使用「Filter」(篩選器) 區段,依目標 machine_id 值篩選。

    4. 在顯示的時間圖表中,確認圖表線維持在 0,這表示沒有發生重新啟動。如果這條線在任何時間點突然飆升至 1,表示電腦已重新啟動;請記下重新啟動的確切時間戳記,以利進一步排解問題。

    5. (選用) 如要查看個別事件而非圖表,請前往頁面的「彙整」部分,將「對齊週期」欄位設為 1 minute,並將「每個序列的對齊器」欄位設為「Delta」

解讀結果

下表說明 Metrics Explorer 傳回的結果。

機器狀態 診斷 解析度
穩定
「機器正常運作時間」指標穩定上升
「機器重新啟動」指標差異為 0
機器尚未重新啟動。
重新啟動電腦
「電腦正常運作時間」指標降至 0
「電腦重新啟動次數」指標飆升至 1
機器已成功重新啟動,並重新連線至 Google Cloud。 查看系統記錄,找出重新啟動的原因。
電源故障
「機器正常運作時間」指標圖表出現中斷,沒有資料
「機器重新啟動」指標在機器正常運作時間中斷期間沒有變化
電腦在重新啟動前沒電或失去網路連線。 檢查電源線和網路線、本機網路設定、LED 指示燈狀態。
間歇性
「已連線的機器」指標值在 01 之間交替
「網路連線」指標值在 01 之間交替
網路連線不穩定、封包遺失或延遲時間過長。 檢查本機網路是否壅塞或有硬體故障。

如果表格中列出的解決步驟無法解決問題,請與 Google 支援聯絡,並提供受影響機器的 machine_id 值和服務中斷時間戳記。

Distributed Cloud connected 機台連線

本節說明如何使用 Cloud Monitoring 的 Metrics Explorer 功能,檢查 Distributed Cloud 連線機器的網際網路和 Google Cloud 連線狀態。

這個程序會使用下列監控指標:

  • 已連線的健身器材 (/machine/connected):指出健身器材是否已連線至 Google Cloud。

  • 網路連線 (/machine/network/connectivity):指出電腦的主要網路介面是否已連上網際網路。

如要完成本節中的步驟,必須符合下列必要條件:

  1. 存取 Google Cloud 控制台和 Distributed Cloud 連線 Google Cloud 專案。
  2. Monitoring 檢視者 IAM 角色,可讓您查看 Monitoring 指標。
  3. (選用) 目標 Distributed Cloud connected 機器的 machine_id 值,用於篩選傳回的結果。

使用 Metrics Explorer 檢查機器連線

  1. 前往 Metrics Explorer:

    1. 在 Google Cloud 控制台中,前往「Monitoring」部分。

    2. 在左側導覽樹狀結構中,按一下「Metrics Explorer」

  2. 選取目標資源類型:

    1. 在「Metrics Explorer」頁面中,前往「Queries」頁面。

    2. 使用搜尋列搜尋「機器」資源類型。您也可以使用完整資源 ID edgecontainer.googleapis.com/Machine

    3. 在傳回的結果中,按一下「Machine」(機器) 資源類型。

  3. 檢查機器是否已連上 Google Cloud:

    1. 在「指標」部分,搜尋 connected 值。

    2. 選取「已連結的機器」指標。完整路徑為 edgecontainer.googleapis.com/machine/connected

    3. (選用) 使用「Filter」(篩選器) 區段,依目標 machine_id 值篩選。

    4. 在顯示的時間圖表中,確認「健康狀態良好」線持續維持在 100%。如果這個值在任何時間點為 0% 或「不正常」,表示機器在該時間點與 Google Cloud 失去連線。

  4. 檢查機器的網際網路連線:

    1. 在「指標」部分,搜尋 connectivity 值。

    2. 選取「網路連線」指標。完整路徑為 edgecontainer.googleapis.com/machine/network/connectivity

    3. (選用) 使用「Filter」(篩選器) 區段,依目標 machine_id 值篩選。

    4. 在顯示的時間圖表中,確認「健康狀態良好」線持續維持在 100%。如果這個值在任何時間點為 0%「不正常」,表示機器在該時間點失去網際網路連線。

解讀結果

下表說明 Metrics Explorer 傳回的結果。

機器狀態 診斷 解析度
正常
「已連線的機器」指標值為 1
「網路連線」指標值為 1
正常運作。
已中斷連線
「已連線的機器」指標值為 0
「網路連線」指標值為 1
電腦已連上網際網路,但無法連線至 Google Cloud。 檢查 Google 服務和 API 端點的防火牆規則。確認 Distributed Cloud 連線代理程式是否正在機器上執行。
已隔離
「已連線的機器」指標值為 0
「網路連線」指標值為 0
電腦沒有網際網路連線。 檢查電源線和網路線、本機網路設定、LED 指示燈狀態。驗證 VLAN 和路由設定。
間歇性
「已連線的機器」指標值在 01 之間交替
「網路連線」指標值在 01 之間交替
網路連線不穩定、封包遺失或延遲時間過長。 檢查本機網路是否壅塞或有硬體故障。

如果發現任一指標的 0 值持續偏高,請按照表格中說明的疑難排解步驟解決問題。如果問題仍未解決,請與 Google 支援團隊聯絡,並提供受影響機器的 machine_id 值和中斷時間戳記。

虛擬機器停滯在 Pending 狀態

如果發生下列任一情況,虛擬機器工作負載可能會停留在 Pending 狀態,且無法排定在節點上執行:

  • Distributed Cloud Connected 無法將要求的資源 (例如 CPU 時間、記憶體或磁碟空間) 分配給虛擬機器。
  • 虛擬機器的設定有誤。
  • 虛擬機器的儲存空間有問題。
  • 目標節點已遭汙染。

如要解決這個問題,請按照下列步驟操作:

  1. 如「取得叢集憑證」一文所述,取得叢集憑證。

  2. 取得受影響虛擬機器的相關資訊:

    kubectl describe virtualmachine VM_NAME -n NAMESPACE
    

    更改下列內容:

    • VM_NAME:目標虛擬機器的名稱。
    • NAMESPACE:目標虛擬機器的命名空間。

    指令會傳回類似以下內容的輸出結果:

    Status:
    ...
    State:                    Pending
    ...
    Events:
    Type     Reason                  Age   From                       Message
    ----     ------                  ----  ----                       -------
    Normal   SuccessfulCreate        15m   virtualmachine-controller  Created virtual machine my-stuck-vm
    Warning  DiskProvisioningFailed  14m   virtualmachine-controller  Failed to provision disk: DataVolume my-stuck-vm-data-disk not ready
    Warning  PVCNotBound             14m   virtualmachine-controller  PersistentVolumeClaim my-stuck-vm-data-disk is in phase Pending
    Warning  VMINotCreated           10m   virtualmachine-controller  VirtualMachineInstance cannot be created: dependencies not ready
    

    指令輸出內容包含的訊息可能指出資源限制、排程失敗、儲存空間故障和其他問題。

  3. 檢查輸出內容,找出排程失敗的原因,詳情請參閱下幾節。

資源不足

您可能會看到資源不足的訊息,例如 CPU、記憶體或磁碟空間不足。例如:

5/8 nodes are available: 3 Insufficient memory, 3 Insufficient CPU.

如要解決這個問題,請檢查分配給受影響虛擬機器和節點上排定其他工作負載的資源,然後視業務需求執行下列操作:

  • 縮減節點上排定的其他工作負載,
  • 減少分配給受影響虛擬機器的資源量,
  • 在受影響的叢集中新增更多機器。

遭汙染的節點

系統可能會顯示訊息,指出目標節點已遭汙染。例如:

5/8 nodes are available: 3 node(s) had taint {<taint-key>:<taint-value>}, that the pod didn't tolerate.

如要解決這個問題,請按照下列步驟操作:

  1. 使用下列指令檢查節點上的汙點:

    kubectl get nodes -o custom-columns=NAME:.metadata.name,TAINTS:.spec.taints
    

    指令會傳回類似以下內容的輸出結果:

    NAME                           TAINTS
    node-name-1   [map[effect:PreferNoSchedule key:node-role.kubernetes.io/master] map[effect:PreferNoSchedule key:node-role.kubernetes.io/control-plane]]
    node-name-2   <none>
    
  2. 執行下列其中一個步驟:

    • 如要移除非預期的汙點,請按照「汙點和容許度」一文的說明操作。
    • 如要處理預期的汙點,請按照「汙點和容忍度」一文所述,在虛擬機器的設定中加入對應的容忍度。

儲存空間故障

系統可能會顯示訊息,指出虛擬機器的儲存空間發生故障。例如:

5/8 nodes are available: 3 node(s) had volume node affinity conflict, 3 node(s) had unbound immediate PersistentVolumeClaims.

這則訊息可能表示對應的永久磁碟區無法掛接至目標節點。

如要解決這個問題,請按照下列步驟操作:

  1. 使用下列指令,取得受影響虛擬機器命名空間中永久磁碟區聲明 (PVC) 的狀態:

    kubectl get pvc -n NAMESPACE
    

    NAMESPACE 替換為目標命名空間的名稱。

    指令會傳回類似以下內容的輸出結果:

    NAME                                               STATUS    VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS            AGE
    windows-robin-disk-0                               Bound     pvc-b1a1d264-84bf-4e58-857d-f37f629d5082   25Gi       RWX            robin-block-immediate   30h
    windows-robin-disk-1                               Bound     pvc-0130b9a8-7fed-4df0-8226-d79273792a16   25Gi       RWX            robin-block-immediate   30h
    windows-robin-vm-0-restored-windows-robin-disk-0   Pending                                                                        gce-pd-gkebackup-in     26m
    
  2. 確認對應的 PVC 處於 Bound 狀態;如果狀態為 Pending,表示儲存子系統無法佈建磁碟區。 在這種情況下,您必須排解儲存子系統設定問題,並確保可使用適當的 StorageClass