Google Distributed Cloud 中的節點發生故障時 (可能是因為儲存空間、網路或 OS 設定錯誤),您需要有效還原叢集健康狀態。叢集健康狀態恢復後,即可排解節點故障問題。本文說明如何透過重設節點,從節點故障情境中復原,以及如何視需要強制移除節點。
如要在節點未發生故障時新增或移除叢集中的節點,請參閱「更新叢集」。
重設節點
如果 Google Distributed Cloud 中的節點因硬體故障、磁碟損毀或作業系統問題而失敗,您必須先還原叢集健康狀態,才能排解基礎電腦的問題。
節點復原架構
Google Distributed Cloud 中的實體節點設計為可拋棄式基礎架構單元。如果節點的作業系統損毀,您必須從叢集中徹底移除節點、重新安裝全新的 Linux 基礎作業系統,然後將節點重新加入叢集。
請勿嘗試從主機層級的 OS 映像檔備份或磁碟快照還原節點。從先前的 OS 狀態還原節點,會導致控制層節點上的 Raft 共識損毀,並在工作站節點上發生 Dataplane V2 IP 位址衝突。如要進一步瞭解備份和災難復原的限制,請參閱「使用 bmctl 備份及還原叢集」。
如果節點發生故障,有時您無法在節點上執行重設指令 (如果節點無法連線)。你可能需要從叢集中強制移除節點。
當您清除重設節點並更新叢集時,會發生下列動作:
- 節點會重設 (類似於
kubeadm reset),機器則會還原為預先安裝的狀態。 - 節點的相關參照會從節點集區和叢集自訂資源中移除。
在下列部分 bmctl 指令中,--force 參數會指出是否應略過重設指令 (步驟 1)。如果使用 --force 參數,bmctl 只會執行移除步驟 (步驟 2),不會執行重設指令。
移除 worker 節點
如要從叢集移除 worker 節點,請完成下列步驟:
請嘗試徹底重設節點。節點重設後,系統會從叢集中移除節點:
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
如果裝置上的基礎作業系統毀損或無法復原:
- 抹除機器的本機儲存空間磁碟機。
- 安裝支援的全新 Linux 作業系統,並設定「作業系統設定需求」和「工作站和節點必要條件」中說明的節點必要條件。
- 按照「更新叢集」一文的說明,將健康狀態良好的節點重新新增至叢集。
移除單一控制層節點
程序與工作站節點相同。如果是控制層節點,bmctl
也會清除 etcd 成員資格。
移除失敗的節點後,叢集會停止處於高可用性 (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
如果裝置上的基礎作業系統毀損或無法復原:
- 抹除機器的本機儲存空間磁碟機。
- 安裝支援的全新 Linux 作業系統,並設定「作業系統設定需求」和「工作站和節點必要條件」中說明的節點必要條件。
- 按照「更新叢集」一文的說明,將健康狀態良好的節點重新新增至叢集。
無法存取控制層時重設節點
如果無法存取叢集控制層,可以執行下列指令,將機器還原為預先安裝的狀態:
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 檔案的路徑。
如要復原失去法定人數的叢集,請在剩餘的健全節點上執行下列指令:
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 設定。
修正意外還原的 OS 映像檔
如果實體節點是從 OS 層級的映像檔備份或快照還原,且導致叢集不穩定、發生 etcd 共識錯誤或 Dataplane V2 IP 位址衝突,請完成下列步驟來恢復叢集健康狀態:
- 立即中斷或關閉受影響的節點,防止叢集狀態進一步損毀。
- 在管理員工作站中執行
bmctl reset nodes --force指令,從叢集中移除節點的自訂資源。 - 清除電腦上的實體硬碟。
- 按照作業系統設定需求,安裝乾淨的 Linux 基本作業系統。
- 按照「更新叢集」一文的說明,將節點重新新增至叢集。
後續步驟
如要進一步瞭解如何在沒有故障的情況下新增或移除叢集中的節點,以及如何檢查節點狀態,請參閱「更新叢集」。
如需其他協助,請與 Cloud Customer Care 團隊聯絡。如要進一步瞭解支援資源,包括下列項目,請參閱「取得支援」: