更新節點集區

本主題說明如何更新節點集區。您可以基於下列原因更新節點集區:

  • 如要升級節點集區版本
  • 如要變更節點集區中的節點數量
  • 如要變更節點集區註解 (只能透過 API 更新)

您也可以變更節點集區中未列於上方的其他參數。 如需可更新的完整參數清單,請參閱 gcloud container azure node-pools updateprojects.locations.azureNodePools.patch 說明文件。

更新程序

本節說明 GKE on Azure 更新節點集區的程序。視節點集區需要變更的程度而定,程序會有所不同。

僅更新設定

如果 GKE on Azure 可以在不重新啟動或重新建立任何資源的情況下更新節點集區,就會進行這些變更。舉例來說,更新節點集區的註解不會重新啟動任何執行個體。

滾動式更新

如果節點集區的變更需要重新啟動現有虛擬機器 (例如更新 Kubernetes 版本),GKE on Azure 會執行下列步驟:

  1. 使用新設定修改節點集區的虛擬機器規模集。
  2. 選擇要更新的節點基礎執行個體。
  3. Azure 上的 GKE 會封鎖並清空節點。此時無法在目標節點上排定新的 Pod。目標節點上的現有 Pod 物件會重新排程到其他節點。如果 Pod 無法重新排程到任何現有節點,就會停留在待處理階段,直到可以排程為止。
  4. 更新執行個體,從虛擬機器規模集取得最新設定。
  5. 重新建立映像檔並重新啟動執行個體。
  6. 等待這個節點集區中的所有節點恢復正常運作。
  7. 如果這個節點集區中的所有節點都正常運作,請選取其他節點,直到所有節點都更新完畢。如有任何節點不正常,Azure 上的 GKE 會將節點集區設為 DEGRADED 狀態。詳情請參閱「更新失敗」。

在節點集區滾動更新期間保護工作負載

在節點集區滾動式更新期間,節點開始排空後的一小時內,Azure 上的 GKE 會遵守 PodDisruptionBudget
設定。一小時後,Azure 上的 GKE 會刪除節點上所有剩餘的 Pod。

在滾動式更新期間,GKE on Azure 會盡可能在最多兩小時內,正常關閉要重新啟動或移除的節點。兩小時後,如果節點上仍有任何 Pod 物件,Azure 上的 GKE 會刪除節點,並重新建立基礎虛擬機器執行個體。

調整節點集區大小

Azure 上的 GKE 節點集區預設會啟用叢集自動配置器。叢集自動調整器會根據工作負載需求,自動調整節點集區大小。如要進一步瞭解叢集自動配置器,請參閱「叢集自動配置器」。

變更節點集區中的節點數量上限和下限時,Azure 上的 GKE 會根據新設定和節點集區目前的節點數量採取不同動作。這些動作包括:

  • 如果節點集區目前的節點數量已在新範圍內,Azure 上的 GKE 就不會變更集區中的節點數量。

  • 如果新的節點數量下限高於節點集區目前的節點數量,Azure 上的 GKE 會新增更多節點,直到節點集區達到新的下限大小為止。

  • 如果新的節點數量上限小於節點集區目前的節點數量,Azure 上的 GKE 會執行下列動作,縮減節點集區大小:

    1. 更新節點集區中虛擬機器擴展集的自動調度資源設定
    2. 選取要移除的節點
    3. 封鎖並清空節點
    4. 刪除基礎虛擬機器執行個體
    5. 等待虛擬機器完全刪除
    6. 對整個節點集區執行健康狀態檢查
    7. 重複上述步驟,直到節點數量達到所需數量為止

Azure 上的 GKE 如何在節點集區大小調整期間保護工作負載

在節點集區調整大小期間,節點開始排空後的一小時內,Azure 上的 GKE 會遵守 PodDisruptionBudget 設定。一小時後,Azure 上的 GKE 會刪除節點上所有剩餘的 Pod 物件。

在調整節點集區大小期間,Azure 上的 GKE 會正常關閉任何要重新啟動或移除的節點,並等待最多兩小時。兩小時後,如果節點上仍有任何 Pod 物件,GKE on Azure 就會刪除基礎虛擬機器執行個體。

檢查更新失敗狀態

如果 GKE on Azure 在更新後執行健康狀態檢查,且檢查失敗,節點集區就會標示為 DEGRADED。您可以使用下列 Google Cloud CLI 指令,查看叢集狀態資訊:

gcloud container azure node-pools describe NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --location GOOGLE_CLOUD_LOCATION

更改下列內容:

  • NODE_POOL_NAME:節點集區的名稱
  • CLUSTER_NAME:叢集名稱
  • GOOGLE_CLOUD_LOCATION:管理叢集的 Google Cloud 區域

輸出內容會包含節點集區的狀態和設定相關資訊。

必要條件

如要更新節點集區,您必須具備 gkemulticloud.googleapis.com/azureNodePools.update Identity and Access Management 權限。

更新節點集區

您可以使用 Google Cloud CLI 更新節點集區。如要更新節點集區,請執行:

gcloud container azure node-pools update NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --location GOOGLE_CLOUD_LOCATION \
    --node-version NODE_POOL_VERSION \
    --min-nodes MIN_NODES \
    --max-nodes MAX_NODES     

更改下列內容:

  • NODE_POOL_NAME:要更新的節點集區名稱
  • CLUSTER_NAME:要將節點集區附加至的叢集名稱
  • GOOGLE_CLOUD_LOCATION:管理叢集的支援 Google Cloud 區域,例如 us-west1
  • NODE_POOL_VERSION:新的 支援的節點集區版本
  • MIN_NODES:節點集區可包含的新節點數量下限。不得小於 0
  • MAX_NODES:節點集區可包含的節點數量上限。至少須為 1MIN_NODES 的值。

取消更新作業

如要取消進行中的節點集區更新作業,請執行下列指令:

gcloud container azure operations cancel OPERATION_NAME

OPERATION_NAME 替換為更新作業的名稱。

請注意,取消進行中的節點集區更新作業,不會還原已完成的節點更新。這可能會導致節點集區部分更新。

後續步驟