本頁面說明節點自動修復功能的運作方式,以及如何將這項功能用於標準 Google Kubernetes Engine (GKE) 叢集。
「節點自動修復」功能可讓 GKE 叢集中的節點維持在良好的運作狀態。啟用這項功能之後,GKE 會定期檢查叢集中每個節點的健康狀態。如果節點長時間持續未通過健康狀態檢查,GKE 就會針對該節點啟動修復程序。
Autopilot 和 Standard 的設定
Autopilot 叢集一律會自動修復節點。您無法停用這項設定。
在 Standard 叢集中,新的節點集區預設會啟用節點自動修復功能。您可以停用現有節點集區的自動修復功能,但建議保留預設設定。
修復條件
GKE 會根據節點的健康狀態來決定是否要修復節點。系統會將狀態回報為 Ready
的節點判定健康狀態良好。如果節點在指定的時間門檻內持續回報為健康狀態不佳,GKE 就會觸發修復動作。
健康狀態不佳可能代表下列意義:
- 節點在指定時間門檻 (約 10 分鐘) 內的連續狀態檢查狀態都回報為
NotReady
。 - 節點在指定時間門檻 (約 10 分鐘) 內未回報任何狀態。
- 節點在延長時間範圍 (約 30 分鐘) 內,開機磁碟的磁碟空間已用盡。
- Autopilot 叢集中的節點遭到封鎖的時間超過指定時間門檻 (約 10 分鐘)。
您可以隨時使用 kubectl get nodes
指令,手動檢查節點的健康狀態信號。
節點修復程序
如果 GKE 偵測到節點需要修復,該節點就會遭到排除並重新建立。這個程序會保留節點的原始名稱。 GKE 會等待一小時,讓排空作業完成。如果排空作業未完成,節點就會關閉,並建立新節點。
如果有多個節點需要修復,GKE 可能會採用平行修復的方式。GKE 會根據叢集大小和毀損的節點數量,平衡修復數量。在較大的叢集上,GKE 會平行修復更多節點,但隨著不正常的節點數量增加,修復的節點數量會減少。
如果在修復過程中停用節點自動修復功能,系統「不會」取消進行中的修復作業,會繼續修復任何節點。
節點修復記錄
GKE 會為自動修復事件產生記錄項目。您可以執行下列指令來檢查記錄:
gcloud container operations list
TPU 節點中的節點自動修復功能
如果多主機 TPU 配量節點集區中的 TPU 配量節點健康狀態不良,需要自動修復,系統會重新建立整個節點集區。如要進一步瞭解 TPU 配量節點條件,請參閱「TPU 配量節點自動修復」。
為現有標準節點集區啟用自動修復功能
您可以針對「每個節點集區」啟用節點自動修復功能。
如果標準叢集中現有節點集區的自動修復功能已停用,請按照下列操作說明啟用:
控制台
前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。
在叢集清單中,按一下您要修改的叢集名稱。
按一下「Nodes」(節點) 分頁標籤。
在「Node Pools」(節點集區) 下方,按一下要修改的節點集區名稱。
在「Node pool details」(節點集區詳細資料) 頁面中,按一下 edit「Edit」(編輯)。
在「管理」下方,勾選「啟用自動修復功能」核取方塊。
按一下 [儲存]。
gcloud
gcloud container node-pools update POOL_NAME \
--cluster CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--enable-autorepair
更改下列內容:
POOL_NAME
:節點集區的名稱。CLUSTER_NAME
:標準叢集名稱。CONTROL_PLANE_LOCATION
:叢集控制層的 Compute Engine 位置。為地區叢集提供地區,或為區域叢集提供區域。
確認標準節點集區已啟用節點自動修復功能
節點自動修復功能會依「每個節點集區」啟用。您可以使用 Google Cloud CLI 或 Google Cloud 控制台,確認叢集中的節點集區是否已啟用節點自動修復功能。
控制台
前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。
在「Google Kubernetes Engine」頁面,按一下要檢查節點集區的叢集名稱。
按一下「Nodes」(節點) 分頁標籤。
在「Node Pools」(節點集區) 下方,按一下要檢查的節點集區名稱。
在「管理」下方的「自動修復」欄位中,確認自動修復功能已啟用。
gcloud
描述節點集區:
gcloud container node-pools describe NODE_POOL_NAME \
--cluster=CLUSTER_NAME
如果已啟用節點自動修復功能,指令輸出內容會包含下列幾行:
management:
...
autoRepair: true
停用節點自動修復功能
如要停用標準叢集中現有節點集區的節點自動修復功能,請使用 gcloud CLI 或 Google Cloud 控制台。
控制台
前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。
在叢集清單中,按一下您要修改的叢集名稱。
按一下「Nodes」(節點) 分頁標籤。
在「Node Pools」(節點集區) 下方,按一下要修改的節點集區名稱。
在「Node pool details」(節點集區詳細資料) 頁面中,按一下 edit「Edit」(編輯)。
在「管理」下方,取消勾選「啟用自動修復功能」核取方塊。
按一下 [儲存]。
gcloud
gcloud container node-pools update POOL_NAME \
--cluster CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--no-enable-autorepair
更改下列內容:
POOL_NAME
:節點集區的名稱。CLUSTER_NAME
:標準叢集名稱。CONTROL_PLANE_LOCATION
:叢集控制層的 Compute Engine 位置。為地區叢集提供地區,或為區域叢集提供區域。