確保節點升級資源

本頁面說明如何確保您可以使用節點升級策略變更叢集節點。建議您確認專案是否有足夠資源,可根據所選策略更新 Google Kubernetes Engine (GKE) Standard 節點集區。

節點升級所需的資源

視您選擇的節點策略和設定而定,GKE 可能需要暫時建立額外節點,才能升級節點。因此,GKE 可能需要額外資源才能升級節點集區。

GKE 建立的所有節點 (包括用於升級的節點) 都受限於專案的資源配額、資源可用性,以及預留容量 (適用於具有特定預留項目相似度的節點集區)。

如果您有特殊機型需求和容量限制,強烈建議您確認資源是否充足。您可能需要設定資源需求較少的策略,確保能升級節點,或採取其他動作,例如建立預留項目。詳情請參閱「在資源受限的環境中升級」。

不同升級策略所需的資源

以下章節說明使用可用升級策略時所需的額外資源。如果遇到升級問題,請查看升級作業,並按照操作說明解決升級錯誤。

節點數擴充升級的資源

預設的節點升級策略是升級期間增加節點。節點數擴充升級會建立額外的 VM (如果 maxSurge 設為大於零),然後才會清空及刪除舊節點,因此如果專案資源不足,升級可能會失敗。

如果可用資源少於 maxSurge 中指定的節點數量,則平行升級數量會少於 maxSurge 加上 maxUnavailable。如果沒有額外容量,請參閱「在資源受限的環境中升級」。

下表列舉不同升級行為的範例:

升級設定 可用資源允許的額外節點數量 結果
maxSurge:5 maxUnavailable:0 5 平行升級 5 個節點。
maxSurge:5 maxUnavailable:0 2 僅平行升級 2 個節點。
maxSurge:5 maxUnavailable:0 0 升級失敗,因為無法啟動其他節點,且升級設定禁止重新啟動現有節點。GKE 會持續嘗試自動升級,直到作業成功為止。
maxSurge:5 maxUnavailable:1 5 平行升級 6 個節點,同時確保節點集區只會因升級作業暫時失去一個節點。
maxSurge:5 maxUnavailable:1 2 僅平行升級 3 個節點,同時確保節點集區不會因升級作業而少去超過一個節點。
maxSurge:5 maxUnavailable:1 0 一次只升級 1 個節點,方法是以滾動式升級方式重新建立每個節點。

藍綠升級資源

藍綠升級會暫時將節點集區中的節點數量增加一倍,這表示節點集區暫時需要兩倍的資源。如果可用資源不足,且您已將節點集區設定為使用這項策略,請改為設定大量升級,以解除升級封鎖。設定這項策略時,請務必設定節點數擴充升級參數,以便與節點集區節點的可用資源搭配使用。詳情請參閱上一節「節點數擴充升級的資源」。

檢查升級作業,確認是否有資源相關的失敗情形

您可以檢查升級作業物件,進一步瞭解升級作業,以及升級失敗情況與原因的相關資訊。如要列出升級作業物件,請執行下列指令:

gcloud container operations list \
    --filter="STATUS=DONE AND TYPE=UPGRADE_NODES AND targetLink:https://container.googleapis.com/v1/projects/PROJECT_ID/zones/COMPUTE_ZONE/clusters/CLUSTER_NAME"

更改下列內容:

  • PROJECT_ID:專案的 ID。 Google Cloud
  • COMPUTE_ZONE:叢集的 Compute Engine 可用區。
  • CLUSTER_NAME:叢集名稱。

如果最近一次升級因資源配額不足而失敗,輸出內容會類似於下列內容:

gcloud container operations describe operation-1234567891234-1abc2d3e
detail: "Insufficient quota to satisfy the request: waiting on IG: instance https://www.googleapis.com/compute/v1/projects/my-project-123/zones/us-central1-a/instances/gke-my-cluster-default-pool-123ab45c-de67\
  \ is still CREATING. Last attempt errors: [QUOTA_EXCEEDED] Instance 'gke-my-cluster-default-pool-123ab45c-de67'\
  \ creation failed: Quota 'IN_USE_ADDRESSES' exceeded.  Limit: 50.0 in region us-central1.\
...

如果原因是預留項目不足,輸出內容會與下列內容相似:

gcloud container operations describe operation-1234567891234-1abc2d3e
detail: "Reservation does not have enough resources for the request: waiting on IG:\
  \ instance https://www.googleapis.com/compute/v1/projects/my-project-123/zones/us-central1-a/instances/gke-my-cluster-default-pool-123ab45c-de67\
  \ is still CREATING. Last attempt error: [CONDITION_NOT_MET] Instance 'gke-my-cluster-default-pool-123ab45c-de67'\
  \ creation failed: Specified reservation 'foo' does not have available resources\
  \ for the request."

如果原因是容量不足,您會看到資源可用性錯誤訊息。

出現升級錯誤時的處理方式

如果資源不足導致升級失敗,請嘗試下列步驟:

  1. 建議您採用較不耗用資源的升級策略。如果您使用的是藍綠升級,請考慮改用激增升級。
  2. 檢查專案中是否有任何耗用資源且不再需要的 Compute Engine 資源。如果有,請移除那些資源,然後再次進行升級作業。
  3. 如果前兩個步驟無法解除升級封鎖,請要求提高配額,或增加特定預訂的規模。
  4. 如果您在資源受限的環境中運作,例如有特殊機型需求和容量限制,請參閱下一節,瞭解如何解除升級封鎖。

在資源受限的環境中升級

如果 Google Cloud 的特定資源容量有限,而節點集區正在使用該資源,建議您預留 GPU 和 TPU。 如果節點集區僅含 CPU,建議您使用固定容量升級 CPU。

這兩種策略有助於確保您有足夠的資源執行版本升級。如果資源不足,您可能需要取得更多容量,才能升級節點。

如果沒有額外容量,就無法使用藍綠升級。

在資源受限的環境中使用激增升級時,請注意下列事項:

請根據您是否為需要升級的節點集區預留資源,採取下列指引。

升級並採用固定容量

如果是 CPU,如要在資源受限的環境中升級,請使用固定容量。如要這麼做,請使用激增升級,並將 maxUnavailable 設定設為大於零的值。詳情請參閱「maxUnavailable:GKE 會讓現有節點無法使用,以便重新建立節點」。

使用固定容量升級時,您可以在無法取得任何額外容量的情況下執行升級,並避免在升級期間失去現有容量。

透過預留項目升級,但容量有限

如要在容量受限的環境中升級 GPU 和 TPU,請使用預留項目,並調整激增升級設定,以提升速度和穩定性。

如果預留項目還有額外容量,可以使用 maxSurge 建立激增節點。請根據一次要中斷的節點數量,以及額外容量多寡,設定 maxSurge。舉例來說,如果您一次只想中斷一個節點,或是只能建立一個額外節點,請設定 maxSurge=1;maxUnavailable=0。

如果沒有額外運算資源,您可以使用 maxUnavailable 搭配 maxSurge=0;maxUnavailable=1 等設定,因為運算資源已預留。這項設定會一次中斷一個節點,並重新建立節點來進行更新。建議您採用這種方法,為執行訓練和推論工作負載的節點執行主機維護作業。

後續步驟