叢集建立完成後,您可以修改節點集區。只有節點集區的特定參數可以更新,例如大小、加密金鑰和安全性群組。本文將說明如何執行這些更新,以及節點集區的其他常見更新。
不過,本文並未完整列出更新指令。
如要更新本文件未說明的參數,請參閱 gcloud container aws node-pools
update
和 projects.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-nodes
和 max-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
。
請注意,取消進行中的節點集區更新作業,不會還原已完成的節點更新。這可能會導致節點集區部分更新。