本頁說明如何確保您可以使用節點升級策略,變更叢集的節點。建議您根據所選策略,確認專案是否有足夠資源來更新 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
:您的 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."
如果原因是容量不足,則會看到資源可用性錯誤訊息。
出現升級錯誤時的處理方式
如果升級作業因資源不足而失敗,請嘗試下列步驟:
- 建議您採用資源密集度較低的升級策略。如果您使用藍綠升級,請考慮採用突波升級。
- 檢查專案中是否有任何不再需要的 Compute Engine 資源正在耗用資源。如果有,請移除那些資源,然後再次進行升級作業。
- 如果前兩個步驟無法解除封鎖升級作業,請申請提高配額或增加指定保留項目的大小。
- 如果您在資源受限的環境中運作,例如有特殊的機器類型需求和容量限制,請參閱下一節的步驟,解除升級封鎖。
在資源受限的環境中升級
如果 Google Cloud 的特定資源 (例如 GPU 或 TPU) 容量有限,建議您使用預留項目,確保有足夠的資源。如果資源不足,您可能無法升級節點,除非您能存取更多容量 (如果現有容量沒有預留)。
如果無法取得額外容量,就無法使用藍綠升級。如要進行節點數擴充升級,
maxSurge
需要額外節點。使用 maxUnavailable
時,如果容量不是來自預留項目,GKE 會在升級節點時暫時釋出節點容量,也就是說,如果容量有限,您可能會失去容量。
請根據您是否為需要升級的節點集區預留資源,按照下列指示操作。
升級至容量有限的方案,無需預訂
如果節點集區的節點沒有預留項目,建議您建立預留項目。不過,如果無法這麼做,建議使用 maxSurge=1;maxUnavailable=0
的預設設定進行突波升級。使用這項設定時,您不會有失去現有容量的風險。不過,只有在容量足夠時,節點數擴充升級功能才會建立節點數擴充節點。因此,如果沒有可用容量,升級作業可能需要較長時間,且節點集區可能會維持部分升級狀態,直到確保有足夠容量可升級每個節點為止。
預約升級 (容量有限)
如果節點集區的節點有預留容量,您可以在容量受限的環境中升級節點集區,並調整節點數擴充升級設定,兼顧速度和可靠性。
如果預留項目有額外容量,您可以使用 maxSurge
建立尖峰節點。根據您要一次中斷的節點數量,以及額外容量,設定 maxSurge
。舉例來說,如果您一次只想要中斷一個節點,或是只有容量可建立一個額外節點,請設定 maxSurge=1;maxUnavailable=0
。
如果沒有額外容量,可以使用 maxUnavailable
,並搭配 maxSurge=0;maxUnavailable=1
等設定,因為容量已保留。這項設定一次會中斷一個節點,並重新建立節點來更新。