重設 Google Distributed Cloud 中失敗的節點

Google Distributed Cloud 中的節點發生故障時 (可能是因為儲存空間、網路或 OS 設定錯誤),您需要有效還原叢集健康狀態。叢集健康狀態恢復後,即可排解節點故障問題。本文說明如何透過重設節點,從節點故障情境中復原,以及如何視需要強制移除節點。

如要在節點未發生故障時新增或移除叢集中的節點,請參閱「更新叢集」。

重設節點

如果 Google Distributed Cloud 中的節點因硬體故障、磁碟損毀或作業系統問題而失敗,您必須先還原叢集健康狀態,才能排解基礎電腦的問題。

節點復原架構

Google Distributed Cloud 中的實體節點設計為可拋棄式基礎架構單元。如果節點的作業系統損毀,您必須從叢集中徹底移除節點、重新安裝全新的 Linux 基礎作業系統,然後將節點重新加入叢集。

請勿嘗試從主機層級的 OS 映像檔備份或磁碟快照還原節點。從先前的 OS 狀態還原節點,會導致控制層節點上的 Raft 共識損毀,並在工作站節點上發生 Dataplane V2 IP 位址衝突。如要進一步瞭解備份和災難復原的限制,請參閱「使用 bmctl 備份及還原叢集」。

如果節點發生故障,有時您無法在節點上執行重設指令 (如果節點無法連線)。你可能需要從叢集中強制移除節點。

當您清除重設節點並更新叢集時,會發生下列動作:

  1. 節點會重設 (類似於 kubeadm reset),機器則會還原為預先安裝的狀態。
  2. 節點的相關參照會從節點集區和叢集自訂資源中移除。

在下列部分 bmctl 指令中,--force 參數會指出是否應略過重設指令 (步驟 1)。如果使用 --force 參數,bmctl 只會執行移除步驟 (步驟 2),不會執行重設指令。

移除 worker 節點

如要從叢集移除 worker 節點,請完成下列步驟:

  1. 請嘗試徹底重設節點。節點重設後,系統會從叢集中移除節點:

    bmctl reset nodes \
        --addresses COMMA_SEPARATED_IPS \
        --cluster CLUSTER_NAME \
        --kubeconfig ADMIN_KUBECONFIG
    

    更改下列內容:

    • COMMA_SEPARATED_IP:要重設的節點 IP 位址,例如 10.200.0.8,10.200.0.9。
    • CLUSTER_NAME:包含失敗節點的目標叢集名稱。
    • ADMIN_KUBECONFIG:管理員叢集 kubeconfig 檔案的路徑。

    如果指令成功執行,您現在可以診斷節點,並修正導致初始失敗的任何設定錯誤。略過本節的其餘步驟。

  2. 如果上一個步驟重設節點失敗,請強制從叢集中移除節點。強制移除會略過上一個步驟 (執行重設指令),只會執行從節點集區和叢集自訂資源中移除節點相關參照的步驟:

    bmctl reset nodes \
        --addresses COMMA_SEPARATED_IPS \
        --cluster CLUSTER_NAME \
        --kubeconfig ADMIN_KUBECONFIG \
        --force
    

    現在可以診斷節點,並修正導致初始失敗的任何錯誤設定。

  3. 如果您在先前的步驟中強制從節點叢集中移除節點,請再次執行 bmctl reset 指令來重設節點:

    bmctl reset nodes \
        --addresses COMMA_SEPARATED_IPS \
        --cluster CLUSTER_NAME \
        --kubeconfig ADMIN_KUBECONFIG
    

如果裝置上的基礎作業系統毀損或無法復原:

  1. 抹除機器的本機儲存空間磁碟機。
  2. 安裝支援的全新 Linux 作業系統,並設定「作業系統設定需求」和「工作站和節點必要條件」中說明的節點必要條件。
  3. 按照「更新叢集」一文的說明,將健康狀態良好的節點重新新增至叢集。

移除單一控制層節點

程序與工作站節點相同。如果是控制層節點,bmctl 也會清除 etcd 成員資格。

移除失敗的節點後,叢集會停止處於高可用性 (HA) 狀態。如要返回高可用性狀態,請將健全節點新增至叢集。

如要從叢集中移除節點,請完成下列步驟:

  1. 請嘗試徹底重設節點。節點重設後,系統會從叢集中移除節點:

    bmctl reset nodes \
        --addresses COMMA_SEPARATED_IPS \
        --cluster CLUSTER_NAME \
        --kubeconfig ADMIN_KUBECONFIG
    

    替換下列值:

    • COMMA_SEPARATED_IP:要重設的節點 IP 位址,例如 10.200.0.8,10.200.0.9。
    • CLUSTER_NAME:包含失敗節點的目標叢集名稱。
    • ADMIN_KUBECONFIG:管理員叢集 kubeconfig 檔案的路徑。

    如果指令成功執行,您現在可以診斷節點,並修正導致初始失敗的任何設定錯誤。略過本節的其餘步驟。

  2. 如果重設節點的先前步驟失敗,您可以強制從叢集中移除節點。強制移除會略過上一個步驟 (執行重設指令),只會執行從節點集區和叢集自訂資源中移除節點相關參照的步驟:

    bmctl reset nodes \
      --addresses COMMA_SEPARATED_IPS \
      --cluster CLUSTER_NAME \
      --kubeconfig ADMIN_KUBECONFIG \
      --force
    

    現在可以診斷節點,並修正導致初始失敗的任何錯誤設定。

  3. 如果您在先前的步驟中強制從節點叢集中移除節點,請再次執行 bmctl reset 指令來重設節點:

    bmctl reset nodes \
      --addresses COMMA_SEPARATED_IPS \
      --cluster CLUSTER_NAME \
      --kubeconfig ADMIN_KUBECONFIG
    

如果裝置上的基礎作業系統毀損或無法復原:

  1. 抹除機器的本機儲存空間磁碟機。
  2. 安裝支援的全新 Linux 作業系統,並設定「作業系統設定需求」和「工作站和節點必要條件」中說明的節點必要條件。
  3. 按照「更新叢集」一文的說明,將健康狀態良好的節點重新新增至叢集。

無法存取控制層時重設節點

如果無法存取叢集控制層,可以執行下列指令,將機器還原為預先安裝的狀態:

bmctl reset nodes \
    --addresses NODE_IP_ADDRESSES \
    --ssh-private-key-path SSH_PRIVATE_KEY_PATH \
    --login-user LOGIN_USER \
    --gcr-service-account-key AR_SERVICE_ACCOUNT_KEY

更改下列內容:

  • NODE_IP_ADDRESSES:以半形逗號分隔的節點 IP 位址清單,每個節點對應一個 IP 位址。

  • SSH_PRIVATE_KEY_PATH:安全殼層私密金鑰檔案的路徑。

  • LOGIN_USER:用於無密碼 SUDO 存取節點機器的使用者名稱。除非您在叢集設定 (nodeAccess.loginUser) 中明確指定節點存取的非根使用者名稱,否則系統會使用 root。

  • AR_SERVICE_ACCOUNT_KEY:Artifact Registry 服務帳戶 JSON 金鑰檔案的路徑。

這個指令不會從節點集區和叢集自訂資源中移除節點參照。還原叢集控制層的存取權後,如要保留叢集,請強制從叢集中移除節點。

HA 控制層失去仲裁

如果高可用性叢集中有太多控制層節點進入失敗狀態,叢集就會失去法定人數,無法使用。

需要還原管理叢集時,請勿在重設指令中提供 kubeconfig 檔案。如果您提供管理叢集的 kubeconfig 檔案,系統會強制新叢集執行重設作業。還原使用者叢集時,請提供 kubeconfig 檔案的路徑。

  1. 如要復原失去法定人數的叢集,請在剩餘的健全節點上執行下列指令:

    bmctl restore --control-plane-node CONTROL_PLANE_NODE \
        --cluster CLUSTER_NAME \
        [--kubeconfig KUBECONFIG_FILE]
    

    更改下列內容:

    • CONTROL_PLANE_NODE:仍屬於叢集的健全節點 IP 位址。
    • CLUSTER_NAME:包含失敗節點的目標叢集名稱。
    • KUBECONFIG_FILE:如果是復原使用者叢集,則為使用者叢集 kubeconfig 檔案的路徑。
  2. 復原失敗的節點後,請執行 bmctl reset 指令來重設節點:

    bmctl reset nodes \
       --addresses COMMA_SEPARATED_IPS \
       --cluster CLUSTER_NAME \
       [--kubeconfig KUBECONFIG_FILE]
    

    更改下列內容:

    • COMMA_SEPARATED_IP:要重設的節點 IP 位址,例如 10.200.0.8,10.200.0.9。
    • CLUSTER_NAME:包含失敗節點的目標叢集名稱。
    • KUBECONFIG_FILE:管理員叢集 kubeconfig 檔案的路徑。

    如果失敗的節點屬於負載平衡器節點集區,節點復原後可能會爭用控制層虛擬 IP 位址,導致新叢集不穩定。節點復原後,請盡快對失敗的節點執行重設指令。

這個程序只會處理 3 節點控制層高可用性部署的災難復原。這項程序不支援復原 5 個以上節點的 HA 設定。

修正意外還原的 OS 映像檔

如果實體節點是從 OS 層級的映像檔備份或快照還原,且導致叢集不穩定、發生 etcd 共識錯誤或 Dataplane V2 IP 位址衝突,請完成下列步驟來恢復叢集健康狀態:

  1. 立即中斷或關閉受影響的節點,防止叢集狀態進一步損毀。
  2. 在管理員工作站中執行 bmctl reset nodes --force 指令,從叢集中移除節點的自訂資源。
  3. 清除電腦上的實體硬碟。
  4. 按照作業系統設定需求,安裝乾淨的 Linux 基本作業系統。
  5. 按照「更新叢集」一文的說明,將節點重新新增至叢集。

後續步驟

如要進一步瞭解如何在沒有故障的情況下新增或移除叢集中的節點,以及如何檢查節點狀態,請參閱「更新叢集」。

如需其他協助,請與 Cloud Customer Care 團隊聯絡。如要進一步瞭解支援資源,包括下列項目,請參閱「取得支援」:

  • 開啟支援案件的必要條件。
  • 工具:協助您排解問題,例如環境設定、記錄和指標。
  • 支援的元件。