更新 Azure 叢集參數
本頁說明如何更新 Azure 上的 GKE 叢集設定。您可以按照這些操作說明更新叢集中任何可更新的設定,包括 Kubernetes 版本。由於升級版本是最常見的叢集更新作業之一,因此我們在升級叢集頁面中,另外說明如何升級叢集版本。
更新叢集的原因
更新叢集的原因可能如下:
- 更新叢集的說明。
- 更新叢集的註解。
- 更新叢集的管理員使用者清單。
- 更新叢集的記錄設定。
- 更新叢集的 VM 大小。
- 更新叢集的 AzureClient。
- 如要將叢集的驗證方式從 AzureClient 更新為工作負載身分聯盟,請按照下列步驟操作。
您也可以更新叢集中的其他欄位,不限於此處列出的欄位。
如需可更新的完整欄位清單,請參閱 gcloud container azure clusters update
和 projects.locations.azureClusters.patch
說明文件。
必要條件
如要更新叢集的任何欄位,您必須具備
gkemulticloud.googleapis.com/azureClusters.update
Identity and Access Management 權限。
更新程序
Azure 上的 GKE 更新叢集的方式,會因更新類型而異。對於某些變更,GKE on Azure 可以更新叢集,而不必重新啟動或重新建立任何資源,例如更新叢集的說明。GKE on Azure 會立即套用這些變更。
其他變更則需要重新啟動控制層節點,例如更新 VM 大小或 Kubernetes 版本。對於這類更新,GKE on Azure 會執行「滾動更新」,包含下列步驟:
- 選擇要更新的控制層執行個體。GKE on Azure 會先更新健康狀態不良的執行個體 (如有),再更新健康狀態良好的執行個體。
- 刪除執行個體。GKE on Azure 會重建執行個體,並以新設定啟動執行個體。
- 對新執行個體執行健康狀態檢查。
- 如果健康狀態檢查成功,請選取另一個執行個體,並對其執行相同步驟。重複這個週期,直到所有執行個體都重新啟動或重新建立為止。
如果健康狀態檢查失敗,Azure 上的 GKE 會將叢集置於
DEGRADED
狀態,並停止更新。詳情請參閱下節。
更新失敗時
更新後,Azure 上的 GKE 會對叢集執行健康狀態檢查。
如果健康狀態檢查失敗,叢集會標示為 DEGRADED
。您可以使用下列 Google Cloud CLI 指令,顯示叢集狀態:
gcloud container azure 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 Azure 知道要更新哪個叢集。在下列指令中,請只納入要更新的欄位,並在執行指令前移除其他欄位。
gcloud container azure clusters update CLUSTER_NAME \
--location=GOOGLE_CLOUD_LOCATION \
--cluster-version=CLUSTER_VERSION \
--admin-users=USERNAME_LIST \
--client=CLIENT_NAME \
--vm-size=VM_SIZE
更改下列內容:
CLUSTER_NAME
:叢集名稱GOOGLE_CLOUD_LOCATION
(必要):管理叢集的支援 Google Cloud 區域,例如us-west1
CLUSTER_VERSION
:新的支援叢集版本USERNAME_LIST
:以逗號分隔的使用者名稱清單,例如「kai@example.com,hao@example.com,kalani@example.com」。這些是您要授予這個叢集管理員權限的使用者電子郵件地址。這項設定中的名稱會取代叢集上先前的任何管理員使用者清單。CLIENT_NAME
:您的 AzureClientVM_SIZE
:新支援的 VM 大小
如要將叢集的驗證方式從 AzureClient 更新為工作負載身分聯盟,請執行下列指令:
gcloud container azure clusters update CLUSTER_NAME \
--location=GOOGLE_CLOUD_LOCATION \
--azure-tenant-id="${TENANT_ID}" \
--azure-application-id="${APPLICATION_ID}" \
--clear-client
API
使用 GKE Multi-Cloud API 更新叢集時,您一律必須在 HTTP 要求中加入CLUSTER_NAME
和GOOGLE_CLOUD_LOCATION
欄位。這些欄位會告知 Azure 上的 GKE 要更新哪個叢集。此外,您也必須在要求中加入 API 端點。建立 JSON 檔案,並填入要更新的欄位。JSON 檔案和 UPDATE_MASK
中只須包含要更新的欄位。
以下範例說明如何透過 API 更新叢集。
如要瞭解詳情 (包括可更新的欄位清單),請參閱 projects.locations.azureClusters.patch
方法說明文件。
建立名為
cluster_update.json
的 JSON 檔案,其中包含要更新的欄位。- 使用工作負載身分聯盟時,JSON 檔案應如下所示:
{ "description": "CLUSTER_DESCRIPTION", "controlPlane": { "version": "CLUSTER_VERSION", "vm_size": "VM_SIZE }, "azureServicesAuthentication": { "tenantId": "TENANT_ID", "applicationId": "APPLICATION_ID" }, "authorization": { "adminUsers": [ { "username": USERNAME1, "username": USERNAME2, "username": USERNAME3 } ] } }
- 使用 Azure 用戶端時,JSON 檔案應如下所示:
{ "description": "CLUSTER_DESCRIPTION", "controlPlane": { "version": "CLUSTER_VERSION", "vm_size": "VM_SIZE }, "azureClient": "CLIENT_NAME", "authorization": { "adminUsers": [ { "username": USERNAME1, "username": USERNAME2, "username": USERNAME3 } ] } }
更改下列內容:
CLUSTER_VERSION
:新的支援叢集版本。請注意,升級叢集時,您必須逐一升級所有子版本CLUSTER_DESCRIPTION
:新的叢集說明USERNAME1
、USERNAME2
、USERNAME3
: 您要授予這個叢集管理權限的使用者電子郵件地址。這些欄位中的名稱會取代叢集上先前的管理員使用者清單。CLIENT_NAME
:您的 AzureClient 名稱TENANT_ID
:Azure 租用戶 IDAPPLICATION_ID
:在「建立 Azure Active Directory 應用程式」中建立的 Azure 應用程式 IDVM_SIZE
:新的 VM 大小
- 使用工作負載身分聯盟時,JSON 檔案應如下所示:
使用下列指令,透過 GKE Multi-Cloud API 更新這些設定。
curl -d @cluster_update.json -X PATCH \ ENDPOINT/projects/PROJECT_ID/locations/GOOGLE_CLOUD_LOCATION/azureClusters/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
- control_plane.vm_size
- azure_client
- azure_services_authentication.tenant_id
- azure_services_authentication.application_id
如要將叢集的驗證方式從 AzureClient 更新為工作負載身分聯盟,請在 update_mask
欄位中新增 azure_client
、azure_services_authentication.tenant_id
和 azure_services_authentication.application_id
。
更新記錄設定
您可以使用 Google Cloud CLI 更新叢集的 Cloud Logging 設定。如要更新記錄設定,請執行下列指令:
gcloud container azure 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 azure clusters update
參考說明文件。 - 請參閱
projects.locations.azureClusters.patch
REST API 說明文件。