自動修復節點


本頁面說明節點自動修復功能的運作方式,以及如何將這項功能用於標準 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 配量節點自動修復」。

為現有標準節點集區啟用自動修復功能

您可以針對「每個節點集區」啟用節點自動修復功能。

如果標準叢集中現有節點集區的自動修復功能已停用,請按照下列操作說明啟用:

控制台

  1. 前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。

    前往「Google Kubernetes Engine」

  2. 在叢集清單中,按一下您要修改的叢集名稱。

  3. 按一下「Nodes」(節點) 分頁標籤。

  4. 在「Node Pools」(節點集區) 下方,按一下要修改的節點集區名稱。

  5. 在「Node pool details」(節點集區詳細資料) 頁面中,按一下 「Edit」(編輯)

  6. 在「管理」下方,勾選「啟用自動修復功能」核取方塊。

  7. 按一下 [儲存]

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 控制台,確認叢集中的節點集區是否已啟用節點自動修復功能。

控制台

  1. 前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。

    前往「Google Kubernetes Engine」

  2. 在「Google Kubernetes Engine」頁面,按一下要檢查節點集區的叢集名稱。

  3. 按一下「Nodes」(節點) 分頁標籤。

  4. 在「Node Pools」(節點集區) 下方,按一下要檢查的節點集區名稱。

  5. 在「管理」下方的「自動修復」欄位中,確認自動修復功能已啟用。

gcloud

描述節點集區:

gcloud container node-pools describe NODE_POOL_NAME \
--cluster=CLUSTER_NAME

如果已啟用節點自動修復功能,指令輸出內容會包含下列幾行:

management:
  ...
  autoRepair: true

停用節點自動修復功能

如要停用標準叢集中現有節點集區的節點自動修復功能,請使用 gcloud CLI 或 Google Cloud 控制台。

控制台

  1. 前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。

    前往「Google Kubernetes Engine」

  2. 在叢集清單中,按一下您要修改的叢集名稱。

  3. 按一下「Nodes」(節點) 分頁標籤。

  4. 在「Node Pools」(節點集區) 下方,按一下要修改的節點集區名稱。

  5. 在「Node pool details」(節點集區詳細資料) 頁面中,按一下 「Edit」(編輯)

  6. 在「管理」下方,取消勾選「啟用自動修復功能」核取方塊。

  7. 按一下 [儲存]

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 位置。為地區叢集提供地區,或為區域叢集提供區域。

後續步驟