Google Distributed Cloud 中的節點發生故障時 (可能是因為儲存空間、網路或 OS 設定錯誤等問題),您會希望有效還原叢集健康狀態。叢集健康狀態恢復後,即可排解節點故障問題。本文將說明如何透過重設節點,從節點故障情境中復原,以及如何在必要時強制移除節點。
如要在節點未發生故障時新增或移除叢集中的節點,請參閱更新叢集。
重設節點
節點發生故障時,您可能無法在節點上執行重設指令,因為節點可能無法連線。你可能需要強制從叢集中移除節點。
當您清除重設節點並更新叢集時,會發生下列情況:
- 節點會重設 (類似於
kubeadm reset
),機器則會還原為預先安裝的狀態。 - 節點的相關參照會從節點集區和叢集自訂資源中移除。
在下列部分 bmctl
指令中,--force
參數會指出是否應略過重設指令 (步驟 1)。如果使用 --force
參數,bmctl
只會執行移除步驟 (步驟 2),不會執行重設指令。
移除工作站節點
如要從叢集中移除工作節點,請完成下列步驟:
請嘗試徹底重設節點。節點重設後,系統會從叢集中移除該節點:
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
檔案的路徑。
如果指令成功執行,您現在可以診斷節點,並修正導致初始失敗的任何設定錯誤。略過本節的其餘步驟。
如果上一個步驟無法重設節點,請強制從叢集中移除節點。強制移除會略過上一個步驟 (執行重設指令),只會執行從節點集區和叢集自訂資源中移除節點相關參照的步驟:
bmctl reset nodes \ --addresses COMMA_SEPARATED_IPS \ --cluster CLUSTER_NAME \ --kubeconfig ADMIN_KUBECONFIG \ --force
現在可以診斷節點,並修正導致初始失敗的任何錯誤設定。
如果您在先前的步驟中強制從節點叢集中移除節點,請再次執行
bmctl reset
指令來重設節點:bmctl reset nodes \ --addresses COMMA_SEPARATED_IPS \ --cluster CLUSTER_NAME \ --kubeconfig ADMIN_KUBECONFIG
移除單一控制層節點
程序與工作站節點相同。如果是控制層節點,也會清除 etcd
成員資格。bmctl
移除失敗的節點後,叢集會停止處於高可用性 (HA) 狀態。如要返回高可用性狀態,請將健全節點新增至叢集。
如要從叢集中移除節點,請完成下列步驟:
請嘗試徹底重設節點。節點重設後,系統會從叢集中移除該節點:
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
檔案的路徑。
如果指令成功執行,您現在可以診斷節點,並修正導致初始失敗的任何設定錯誤。略過本節的其餘步驟。
如果重設節點的先前步驟失敗,您可以強制從叢集中移除節點。強制移除會略過上一個步驟 (執行重設指令),只會執行從節點集區和叢集自訂資源中移除節點相關參照的步驟:
bmctl reset nodes \ --addresses COMMA_SEPARATED_IPS \ --cluster CLUSTER_NAME \ --kubeconfig ADMIN_KUBECONFIG \ --force
現在可以診斷節點,並修正導致初始失敗的任何錯誤設定。
如果您在先前的步驟中強制從節點叢集中移除節點,請再次執行
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
檔案的路徑。
如要復原失去仲裁的叢集,請在剩餘的健全節點上執行下列指令:
bmctl restore --control-plane-node CONTROL_PLANE_NODE \ --cluster CLUSTER_NAME \ [--kubeconfig KUBECONFIG_FILE]
更改下列內容:
CONTROL_PLANE_NODE
:仍屬於叢集且健康狀態良好的節點 IP 位址。CLUSTER_NAME
:包含失敗節點的目標叢集名稱。KUBECONFIG_FILE
:如果是復原使用者叢集,則為使用者叢集kubeconfig
檔案的路徑。
復原失敗的節點後,請執行
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 團隊聯絡。如要進一步瞭解支援資源,包括下列項目,請參閱「取得支援」: