更新 AWS 叢集參數

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

更新叢集的原因

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

  • 更新叢集的說明。
  • 更新叢集的註解。
  • 更新叢集的管理員使用者清單。
  • 更新叢集的記錄設定。
  • 如要輪替加密金鑰
  • 更新叢集控制層的安全性群組。

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

  1. 選擇要更新的控制層執行個體。GKE on AWS 會先更新健康狀態不良的執行個體 (如有),再更新健康狀態良好的執行個體。
  2. 為執行個體建立新的啟動範本。
  3. 更新 Auto Scaling 群組的啟動範本。
  4. 刪除執行個體。AWS 會重建執行個體,並以新設定啟動執行個體。
  5. 對新執行個體執行健康狀態檢查。
  6. 如果健康狀態檢查成功,請選取另一個執行個體,並對其執行相同步驟。重複這個週期,直到所有執行個體都重新啟動或重新建立為止。如果健康狀態檢查失敗,AWS 上的 GKE 會將叢集設為 DEGRADED 狀態,並停止更新。詳情請參閱下節。
  7. 刪除原始啟動範本。

更新失敗時

更新後,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 更新大部分欄位。部分欄位只能透過其中一種機制更新。如要使用控制台更新叢集,請先選擇並設定登入叢集的驗證方法。詳情請參閱「連線至叢集並進行驗證」。

控制台

  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 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 安全性群組 ID
  • SECURITY_GROUP_IDS:要新增至叢集控制層執行個體的 AWS 安全性群組 ID

API

使用 GKE Multi-Cloud API 更新叢集時,您一律必須在 HTTP 要求中加入CLUSTER_NAMEGOOGLE_CLOUD_LOCATION欄位。這些欄位會告知 GKE on AWS 要更新哪個叢集。此外,您也必須在要求中加入 API 端點。建立 JSON 檔案,並填入要更新的欄位。JSON 檔案和 UPDATE_MASK 中只須包含要更新的欄位。

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

  1. 建立名為 cluster_update.json 的 JSON 檔案,其中包含要更新的欄位。

    {
        "controlPlane": {
           "version": "CLUSTER_VERSION",
        },
        "description": "CLUSTER_DESCRIPTION",
        "authorization": {
            "adminUsers": [
                {
                "username": USERNAME1,
                "username": USERNAME2,
                "username": USERNAME3
                }
            ]
        }
    }
    

    更改下列內容:

    • CLUSTER_VERSION:新的支援叢集版本。請注意,升級叢集時,您必須逐一升級所有子版本
    • CLUSTER_DESCRIPTION:新的叢集說明
    • USERNAME1USERNAME2USERNAME3: 您要授予這個叢集管理權限的使用者電子郵件地址。這些欄位中的名稱會取代叢集上先前的管理員使用者清單。
  2. 使用下列指令,透過 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

更改下列內容:

更新叢集磁碟區資訊

您可以使用 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]

後續步驟