確保節點升級所需的資源


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

節點升級所需的資源

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

GKE 建立的所有節點 (包括用於升級的節點),都會受到專案的資源配額資源可用性預訂容量限制,適用於具有特定預訂相依性的節點集區。

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

不同升級策略所需的資源

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

節點數擴充升級資源

預設的節點升級策略是升級。由於節點數擴充升級功能會在排除和刪除舊節點之前建立額外的 VM (如果 maxSurge 設為大於零),所以如果專案沒有足夠的資源,升級作業可能會失敗。

如果可用資源少於 maxSurge 中指定的節點數,則平行升級次數會少於 maxSurgemaxUnavailable 兩者相加的數量。如果沒有額外容量,請參閱這篇文章,瞭解如何在資源受限的環境中升級。

下表列出多個示例來說明不同的升級行為:

升級設定 可用資源允許增加的節點數 結果
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:您的 Google Cloud 專案 ID。
  • 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) 容量有限,建議您使用預留項目,確保有足夠的資源。如果資源不足,您可能無法升級節點,除非您能存取更多容量 (如果現有容量沒有預留)。

如果無法取得額外容量,就無法使用藍綠升級。如要進行節點數擴充升級, maxSurge 需要額外節點。使用 maxUnavailable 時,如果容量不是來自預留項目,GKE 會在升級節點時暫時釋出節點容量,也就是說,如果容量有限,您可能會失去容量。

請根據您是否為需要升級的節點集區預留資源,按照下列指示操作。

升級至容量有限的方案,無需預訂

如果節點集區的節點沒有預留項目,建議您建立預留項目。不過,如果無法這麼做,建議使用 maxSurge=1;maxUnavailable=0預設設定進行突波升級。使用這項設定時,您不會有失去現有容量的風險。不過,只有在容量足夠時,節點數擴充升級功能才會建立節點數擴充節點。因此,如果沒有可用容量,升級作業可能需要較長時間,且節點集區可能會維持部分升級狀態,直到確保有足夠容量可升級每個節點為止。

建議您建立預訂增加現有預訂的大小

預約升級 (容量有限)

如果節點集區的節點有預留容量,您可以在容量受限的環境中升級節點集區,並調整節點數擴充升級設定,兼顧速度和可靠性

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

如果沒有額外容量,可以使用 maxUnavailable,並搭配 maxSurge=0;maxUnavailable=1 等設定,因為容量已保留。這項設定一次會中斷一個節點,並重新建立節點來更新。

後續步驟