更新節點集區

叢集建立完成後,您可以修改節點集區。只有節點集區的特定參數可以更新,例如大小、加密金鑰和安全性群組。本文將說明如何執行這些更新,以及節點集區的其他常見更新。

不過,本文並未完整列出更新指令。 如要更新本文件未說明的參數,請參閱 gcloud container aws node-pools updateprojects.locations.awsNodePools.patch 說明文件。

事前準備

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

如需權限管理操作說明,請參閱授予使用者 IAM 角色

更新節點集區

下列各節說明如何更新節點集區。節點集區是叢集中具有相同配置的一組節點。叢集中的所有節點都必須屬於節點集區。

您可以在同一個指令中指定節點集區的多個參數,同時更新這些參數。但為求清楚,本文件會說明如何一次更新一個參數。

變更節點集區版本

在 GKE on AWS 中,變更節點集區版本是指變更該節點集區中節點執行的 GKE 版本。

如要變更節點集區版本,請在下列指令中使用 node-version 旗標指定新版本:

gcloud container aws node-pools update NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --location GOOGLE_CLOUD_LOCATION \
    --node-version NODE_POOL_VERSION

更改下列內容:

  • NODE_POOL_NAME:要更新的節點集區名稱。
  • CLUSTER_NAME:要將節點集區附加至的叢集名稱。
  • GOOGLE_CLOUD_LOCATION:管理叢集的支援 Google Cloud 區域。例如:us-west1
  • NODE_POOL_VERSION:新的支援節點集區版本

更新節點集區執行個體類型

節點集區執行個體類型是指用於在節點集區中建立節點的 AWS EC2 執行個體類型。舉例來說,m5.xlarge 執行個體類型具有 4 個 vCPU、16 GB 記憶體和 32 GB SSD 儲存空間。

如要變更節點集區的執行個體類型,請在下列指令中使用 instance-type 標記指定新的執行個體類型:

gcloud container aws node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --location=GOOGLE_CLOUD_LOCATION \
    --instance-type=INSTANCE_TYPE

更改下列內容:

  • NODE_POOL_NAME:節點集區的名稱。
  • CLUSTER_NAME:叢集名稱。
  • GOOGLE_CLOUD_LOCATION:管理叢集的 Google Cloud 區域。
  • INSTANCE_TYPE:這個節點集區的新 AWS 機器執行個體類型。例如:m5.xlarge

更新節點集區執行個體類型時,不得變更 EC2 執行個體的底層 CPU 架構。舉例來說,如果原始節點集區使用搭載 x86 CPU 的執行個體,更新後的執行個體類型就必須繼續使用 x86 CPU,而非其他架構。

如需支援的執行個體及其基礎架構的完整清單,請參閱支援的 AWS 執行個體類型

輪替節點集區的加密金鑰

如要瞭解如何更新節點集區的 KMS 加密金鑰,請參閱金鑰輪替

更換節點集區安全性群組

如要更新附加至節點集區的安全群組,請執行下列指令:

gcloud container aws node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --location=GOOGLE_CLOUD_LOCATION \
    --security-group-ids=SECURITY_GROUP_IDS

更改下列內容:

  • NODE_POOL_NAME:要更新的節點集區名稱。
  • CLUSTER_NAME:叢集名稱。
  • GOOGLE_CLOUD_LOCATION:管理叢集的 Google Cloud 區域。
  • SECURITY_GROUP_IDS:以半形逗號分隔的安全性群組清單,可附加至節點集區。

如果叢集執行的是 GKE 1.25 以上版本,更新作業可以動態執行,不必重新啟動節點。如果叢集使用 GKE 1.25 以上版本,建議採用這種做法。

如要執行動態更新,API 服務代理程式角色必須具備下列 AWS IAM 權限:

  • ec2:ModifyInstanceAttribute
  • ec2:DescribeInstances

如果您在建立叢集時選擇預設 API 服務代理程式角色,系統會自動將這些權限指派給 API 服務代理程式角色。

如果叢集執行的是舊版 GKE,或是執行 1.25 以上版本但 API 服務代理程式沒有權限執行動態更新,系統會使用滾動更新執行更新。滾動式更新會重新啟動節點,動態更新則不會,因此滾動式更新的干擾程度比動態更新更高。如要進一步瞭解滾動更新,請參閱「節點數擴充升級功能」。

移除節點集區安全群組

您可以執行下列指令,移除附加至節點集區的所有非預設安全群組。如要進一步瞭解預設安全性群組,請參閱「節點集區安全性群組」。

gcloud container aws node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --location=GOOGLE_CLOUD_LOCATION \
    --clear-security-group-ids

更改下列內容:

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

調整節點集區的大小

如要變更節點集區的大小 (也就是節點集區中的節點數量),請在下列指令中為 min-nodesmax-nodes 旗標指派新值:

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

更改下列內容:

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

進一步瞭解如何調整節點集區大小

調整節點集區大小前,請務必評估對工作負載的潛在影響。

調整大小的動作和後果

調整節點集區大小時,系統會根據新設定和節點的目前狀態觸發不同動作。請務必瞭解這些動作及其影響:

  • 沒有變更:如果目前的節點數量已符合新指定的範圍,GKE on AWS 就不會調整節點數量。
  • 增加下限:如果新的節點數量下限高於現有數量,GKE on AWS 會逐步新增節點,直到達到新定義的下限為止。
  • 減少節點數上限:如果將節點數上限變更為低於現有節點數的值,GKE on AWS 會執行下列動作:
    • 停用叢集自動配置器。
    • 將節點集區的 Auto Scaling 群組設為指定大小下限。
    • 選取要移除的個別節點。每個節點都會被封鎖、清空工作,然後終止。這個程序會持續進行,直到達到指定的大小上限為止。
    • 修改節點集區的 Auto Scaling 群組,以符合新的最大大小。
    • 達到大小上限後,重新啟用叢集自動配置器。

如要進一步瞭解叢集自動配置器,請參閱「關於叢集自動配置器」。

調整大小期間的工作負載防護

為確保節點集區大小調整期間工作負載持續可用,AWS 上的 GKE 提供下列安全措施:

  • 在節點排空期間,GKE on AWS 最多會遵守 PodDisruptionBudget 設定一小時。如果節點上仍有 Pod,系統會在該段時間過後刪除。

  • 節點設定為重新啟動或移除時,AWS 上的 GKE 會確保節點正常關機,並等待最多兩小時。如果 Pod 在這段時間後仍留在節點上,系統會刪除基礎虛擬機器執行個體。

檢查節點集區的狀態

如要確認更新是否成功,請執行下列指令,檢查節點集區的狀態:

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

更改下列內容:

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

GKE on AWS 會嘗試對節點集區執行要求的更新,然後執行健康狀態檢查。如果任何更新步驟失敗,節點集區狀態會標示為 DEGRADED

取消更新作業

如要取消進行中的節點集區更新,請先判斷進行中作業的名稱。如要列出進行中的作業及其名稱,請執行下列指令:

gcloud container aws operations list--filter="status=PENDING OR status=RUNNING"
    --location GOOGLE_CLOUD_LOCATION

GOOGLE_CLOUD_LOCATION 替換為管理叢集的支援 Google Cloud 區域。例如:us-west1

在指令輸出中,尋找要取消更新的 OPERATION_NAME。如需作業清單,請參閱 gcloud container aws operations list

找出 OPERATION_NAME 後,即可使用下列指令取消作業:

gcloud container aws operations cancel OPERATION_NAME
    --location GOOGLE_CLOUD_LOCATION

更改下列內容:

  • OPERATION_NAME:更新作業的名稱。
  • GOOGLE_CLOUD_LOCATION:管理叢集的支援 Google Cloud 區域。例如:us-west1

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