排解 Distributed Cloud connected 問題

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

Distributed Cloud connected 電腦連線

本節說明如何使用 Cloud Monitoring 的指標探索器功能,檢查 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% Unhealthy,表示機器在該時間點失去網際網路連線。

瞭解驗證結果

下表說明指標探索工具傳回的結果。

機器狀態 診斷 解析度
正常
「已連線的機器」指標值為 1
「網路連線」指標值為 1
正常運作。
已中斷連線
「已連線的機器」指標值為 0
「網路連線」指標值為 1
電腦已連上網際網路,但無法連線至 Google Cloud。 檢查 Google 服務和 API 端點的 [防火牆規則](distributed-cloud/connected/latest/docs/requirements#connected_management_and_monitoring_traffic)。確認 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