本頁說明如何更新 GKE on AWS 叢集的設定。您可以按照這些操作說明更新叢集中任何可更新的設定,包括 Kubernetes 版本。由於升級版本是最常見的叢集更新作業之一,因此我們在升級叢集頁面中,另外說明如何升級叢集版本。
更新叢集的原因
更新叢集的原因可能如下:
- 更新叢集的說明。
- 更新叢集的註解。
- 更新叢集的管理員使用者清單。
- 更新叢集的記錄設定。
- 如要輪替加密金鑰。
- 更新叢集控制層的安全性群組。
您也可以更新叢集中的其他欄位,不限於此處列出的欄位。
如需可更新的完整欄位清單,請參閱 gcloud container aws clusters update
和 projects.locations.awsClusters.patch
說明文件。
必要條件
如要更新叢集的任何欄位,您必須具備
gkemulticloud.googleapis.com/awsClusters.update
Identity and Access Management 權限。如要更新叢集的安全性群組,叢集的控制層角色必須具備
ec2:ModifyNetworkInterfaceAttribute
權限。詳情請參閱「建立控制層角色」。此外,如要更新叢集的標記,叢集的 API 角色必須具備下列 AWS 權限:
autoscaling:CreateOrUpdateTags
autoscaling:DeleteTags
ec2:CreateTags
ec2:DescribeLaunchTemplates
ec2:DescribeSecurityGroupRules
ec2:DeleteTags
elasticloadbalancing:AddTags
elasticloadbalancing:RemoveTags
請參閱「建立 AWS IAM 角色」,瞭解如何建立叢集的 API 角色並新增權限。
更新程序
GKE on AWS 更新叢集的程序會因更新類型而異。對於某些變更,GKE on AWS 可以更新叢集,而不必重新啟動或重新建立任何資源,例如更新叢集的說明。GKE on AWS 會立即套用這些變更。
其他變更則需要重新啟動控制層節點,例如更新 Kubernetes 版本。對於這類更新,GKE on AWS 會執行「滾動更新」,包含下列步驟:
- 選擇要更新的控制層執行個體。GKE on AWS 會先更新健康狀態不良的執行個體 (如有),再更新健康狀態良好的執行個體。
- 為執行個體建立新的啟動範本。
- 更新 Auto Scaling 群組的啟動範本。
- 刪除執行個體。AWS 會重建執行個體,並以新設定啟動執行個體。
- 對新執行個體執行健康狀態檢查。
- 如果健康狀態檢查成功,請選取另一個執行個體,並對其執行相同步驟。重複這個週期,直到所有執行個體都重新啟動或重新建立為止。如果健康狀態檢查失敗,AWS 上的 GKE 會將叢集設為
DEGRADED
狀態,並停止更新。詳情請參閱下節。 - 刪除原始啟動範本。
更新失敗時
更新後,GKE on AWS 會檢查叢集的健康狀態。
如果健康狀態檢查失敗,叢集會標示為 DEGRADED
。您可以使用下列 Google Cloud CLI 指令,顯示叢集狀態:
gcloud container aws clusters describe CLUSTER_NAME \
--location=GOOGLE_CLOUD_LOCATION
更改下列內容:
CLUSTER_NAME
:叢集名稱GOOGLE_CLOUD_LOCATION
:管理叢集的 Google Cloud 區域
更新叢集
您可以使用 Google Cloud 控制台、Google Cloud CLI 或 GKE Multi-Cloud API,一次更新多個叢集欄位。
選擇更新方法
您可以透過控制台、gcloud CLI 或 GKE Multi-Cloud API 更新大部分欄位。部分欄位只能透過其中一種機制更新。如要使用控制台更新叢集,請先選擇並設定登入叢集的驗證方法。詳情請參閱「連線至叢集並進行驗證」。
控制台
在 Google Cloud 控制台中,前往「Google Kubernetes Engine clusters overview」(Google Kubernetes Engine 叢集總覽) 頁面。
選取叢集所在的 Google Cloud 專案。
在叢集清單中選取叢集名稱,然後在側邊面板中選取「查看詳細資料」。
在「詳細資料」分頁中,選取要變更的欄位,然後按一下「編輯」圖示
。舉例來說,如要將叢集管理員權限授予其他使用者,請選取「管理員使用者」旁的「編輯」
,然後輸入使用者的電子郵件地址。完成變更後,選取「完成」。
gcloud
使用 gcloud CLI 更新叢集時,一律須加入 CLUSTER_NAME
和 GOOGLE_CLOUD_LOCATION
欄位,讓 GKE on AWS 知道要更新哪個叢集。在下列指令中,請只納入要更新的欄位,並在執行指令前移除其他欄位。
gcloud container aws clusters update CLUSTER_NAME \
--location=GOOGLE_CLOUD_LOCATION \
--cluster-version=CLUSTER_VERSION \
--admin-users=USERNAME_LIST \
--root-volume-iops=ROOT_VOLUME_IOPS \
--root-volume-size=ROOT_VOLUME_SIZE \
--root-volume-type=ROOT_VOLUME_TYPE \
--security-group-ids=SECURITY_GROUP_IDS
更改下列內容:
CLUSTER_NAME
:叢集名稱GOOGLE_CLOUD_LOCATION
(必要):管理叢集的支援 Google Cloud 區域,例如us-west1
CLUSTER_VERSION
:新的支援叢集版本USERNAME_LIST
:以逗號分隔的使用者名稱清單,例如「kai@example.com,hao@example.com,kalani@example.com」。這些是您要授予這個叢集管理員權限的使用者電子郵件地址。這項設定中的名稱會取代叢集上先前的任何管理員使用者清單。ROOT_VOLUME_IOPS
:根磁碟區每秒的 I/O 作業數上限ROOT_VOLUME_SIZE
:根磁碟區的大小 (Gb)ROOT_VOLUME_TYPE
:根磁碟區的 AWS EBS 磁碟區類型SECURITY_GROUP_IDS
:要新增至叢集控制層執行個體的 AWS 安全性群組 IDSECURITY_GROUP_IDS
:要新增至叢集控制層執行個體的 AWS 安全性群組 ID
API
使用 GKE Multi-Cloud API 更新叢集時,您一律必須在 HTTP 要求中加入CLUSTER_NAME
和GOOGLE_CLOUD_LOCATION
欄位。這些欄位會告知 GKE on AWS 要更新哪個叢集。此外,您也必須在要求中加入 API 端點。建立 JSON 檔案,並填入要更新的欄位。JSON 檔案和 UPDATE_MASK
中只須包含要更新的欄位。
以下範例說明如何透過 API 更新叢集。
如要瞭解詳情 (包括可更新的欄位清單),請參閱 projects.locations.awsClusters.patch
方法說明文件。
建立名為
cluster_update.json
的 JSON 檔案,其中包含要更新的欄位。{ "controlPlane": { "version": "CLUSTER_VERSION", }, "description": "CLUSTER_DESCRIPTION", "authorization": { "adminUsers": [ { "username": USERNAME1, "username": USERNAME2, "username": USERNAME3 } ] } }
更改下列內容:
CLUSTER_VERSION
:新的支援叢集版本。請注意,升級叢集時,您必須逐一升級所有子版本CLUSTER_DESCRIPTION
:新的叢集說明USERNAME1
、USERNAME2
、USERNAME3
: 您要授予這個叢集管理權限的使用者電子郵件地址。這些欄位中的名稱會取代叢集上先前的管理員使用者清單。
使用下列指令,透過 GKE Multi-Cloud API 更新這些設定。
curl -d @cluster_update.json -X PATCH \ ENDPOINT/projects/PROJECT_ID/locations/GOOGLE_CLOUD_LOCATION/awsClusters/CLUSTER_NAME?update_mask=UPDATE_MASK
更改下列內容:
ENDPOINT
(必要):您的 Google Cloud 服務端點PROJECT_ID
(必填):您的 Google Cloud 專案GOOGLE_CLOUD_LOCATION
(必要):管理叢集的支援 Google Cloud 區域,例如us-west1
CLUSTER_NAME
(必要):叢集名稱UPDATE_MASK
(必填):以半形逗號分隔的一或多個下列旗標清單,指出要更新的欄位。在本範例中,請指定下列項目。- controlPlane.version
- 說明
- authorization.admin_users
更新叢集的安全性群組
如要更新叢集的安全性群組,叢集的控制層角色必須具備 ec2:ModifyNetworkInterfaceAttribute
權限。詳情請參閱「建立控制層角色」。
您可以使用 gcloud container aws clusters update
指令,將其他安全性群組新增至叢集控制層。
gcloud container aws clusters update CLUSTER_NAME \
--location=GOOGLE_CLOUD_LOCATION \
--security-group-ids=SECURITY_GROUP_IDS
更改下列內容:
CLUSTER_NAME
:叢集名稱GOOGLE_CLOUD_LOCATION
:管理叢集的支援 Google Cloud 區域,例如us-west1
SECURITY_GROUP_IDS
:要新增至叢集控制層執行個體的 AWS 安全性群組 ID
移除叢集安全群組
您可以使用 Google Cloud CLI,從叢集中移除所有非預設的安全群組。如要更新叢集,請執行:
gcloud container aws clusters update CLUSTER_NAME \
--location=GOOGLE_CLOUD_LOCATION \
--clear-security-group-ids
更改下列內容:
CLUSTER_NAME
:叢集名稱GOOGLE_CLOUD_LOCATION
:管理叢集的支援 Google Cloud 區域,例如us-west1
更新叢集磁碟區資訊
您可以使用 Google Cloud CLI 更新叢集的控制層磁碟區。如要更新磁碟區 KMS 金鑰,請參閱「金鑰輪替」一文。
如要更新磁碟區大小、類型或 IOPS,請執行下列指令:
gcloud container aws clusters update CLUSTER_NAME \
--location=GOOGLE_CLOUD_LOCATION \
--root-volume-iops=ROOT_VOLUME_IOPS
--root-volume-size=ROOT_VOLUME_SIZE
--root-volume-type=ROOT_VOLUME_TYPE
更改下列內容:
CLUSTER_NAME
:叢集名稱GOOGLE_CLOUD_LOCATION
:管理叢集的支援 Google Cloud 區域,例如us-west1
ROOT_VOLUME_IOPS
:根磁碟區每秒的 I/O 作業數ROOT_VOLUME_SIZE
:根磁碟區的大小 (Gb)ROOT_VOLUME_TYPE
:根磁碟區的 AWS EBS 磁碟區類型。
更新記錄設定
您可以使用 Google Cloud CLI 更新叢集的 Cloud Logging 設定。如要更新記錄設定,請執行下列指令:
gcloud container aws clusters update CLUSTER_NAME \
--location=GOOGLE_CLOUD_LOCATION \
--logging=LOGGING_CONFIG \
更改下列內容:
CLUSTER_NAME
:叢集名稱GOOGLE_CLOUD_LOCATION
:管理叢集的支援 Google Cloud 區域,例如us-west1
LOGGING_CONFIG
:[SYSTEM] 或 [SYSTEM,WORKLOAD]
後續步驟
- 如要更新磁碟區 KMS 金鑰,請參閱「金鑰輪替」一文
- 如要進一步瞭解可更新的欄位,請參閱
gcloud container aws clusters update
參考說明文件。 - 請參閱
projects.locations.awsClusters.patch
REST API 說明文件。