更新 Azure 叢集參數

本頁說明如何更新 Azure 上的 GKE 叢集設定。您可以按照這些操作說明更新叢集中任何可更新的設定,包括 Kubernetes 版本。由於升級版本是最常見的叢集更新作業之一,因此我們在升級叢集頁面中,另外說明如何升級叢集版本。

更新叢集的原因

更新叢集的原因可能如下:

  • 更新叢集的說明。
  • 更新叢集的註解。
  • 更新叢集的管理員使用者清單。
  • 更新叢集的記錄設定。
  • 更新叢集的 VM 大小。
  • 更新叢集的 AzureClient。
  • 如要將叢集的驗證方式從 AzureClient 更新為工作負載身分聯盟,請按照下列步驟操作。

您也可以更新叢集中的其他欄位,不限於此處列出的欄位。 如需可更新的完整欄位清單,請參閱 gcloud container azure clusters updateprojects.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 會執行「滾動更新」,包含下列步驟:

  1. 選擇要更新的控制層執行個體。GKE on Azure 會先更新健康狀態不良的執行個體 (如有),再更新健康狀態良好的執行個體。
  2. 刪除執行個體。GKE on Azure 會重建執行個體,並以新設定啟動執行個體。
  3. 對新執行個體執行健康狀態檢查。
  4. 如果健康狀態檢查成功,請選取另一個執行個體,並對其執行相同步驟。重複這個週期,直到所有執行個體都重新啟動或重新建立為止。 如果健康狀態檢查失敗,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 更新大部分欄位。部分欄位只能透過其中一種機制更新。如要使用控制台更新叢集,請先選擇並設定登入叢集的驗證方法。詳情請參閱「連線至叢集並進行驗證」。

控制台

  1. 在 Google Cloud 控制台中,前往「Google Kubernetes Engine clusters overview」(Google Kubernetes Engine 叢集總覽) 頁面。

    前往 GKE 叢集

  2. 選取叢集所在的 Google Cloud 專案。

  3. 在叢集清單中選取叢集名稱,然後在側邊面板中選取「查看詳細資料」

  4. 在「詳細資料」分頁中,選取要變更的欄位,然後按一下「編輯」圖示

    舉例來說,如要將叢集管理員權限授予其他使用者,請選取「管理員使用者」旁的「編輯」,然後輸入使用者的電子郵件地址。

  5. 完成變更後,選取「完成」

gcloud

使用 gcloud CLI 更新叢集時,請務必一併加入 CLUSTER_NAMEGOOGLE_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:您的 AzureClient
  • VM_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_NAMEGOOGLE_CLOUD_LOCATION欄位。這些欄位會告知 Azure 上的 GKE 要更新哪個叢集。此外,您也必須在要求中加入 API 端點。建立 JSON 檔案,並填入要更新的欄位。JSON 檔案和 UPDATE_MASK 中只須包含要更新的欄位。

以下範例說明如何透過 API 更新叢集。 如要瞭解詳情 (包括可更新的欄位清單),請參閱 projects.locations.azureClusters.patch 方法說明文件。

  1. 建立名為 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:新的叢集說明
    • USERNAME1USERNAME2USERNAME3: 您要授予這個叢集管理權限的使用者電子郵件地址。這些欄位中的名稱會取代叢集上先前的管理員使用者清單。
    • CLIENT_NAME:您的 AzureClient 名稱
    • TENANT_ID:Azure 租用戶 ID
    • APPLICATION_ID:在「建立 Azure Active Directory 應用程式」中建立的 Azure 應用程式 ID
    • VM_SIZE:新的 VM 大小
  2. 使用下列指令,透過 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_clientazure_services_authentication.tenant_idazure_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]

後續步驟