在 Google Distributed Cloud 中重設失敗的節點

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

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

重設節點

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

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

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

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

移除工作站節點

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

  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
    

移除單一控制層節點

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

移除失敗的節點後,叢集會停止處於高可用性 (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
    

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

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

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 金鑰檔案的路徑。

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

高可用性控制層失去仲裁

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

需要還原管理叢集時,請勿在重設指令中提供 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 設定。

後續步驟

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

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