更新叢集

本文說明如何執行叢集更新,但不包含版本變更。

叢集更新是指變更叢集設定。

叢集升級是叢集更新的特例,包括變更控制層版本或節點集區版本。如要瞭解如何升級,請參閱升級 Google Distributed Cloud

檢查防火牆規則

在 1.29 以上版本中,伺服器端預檢檢查功能預設為啟用。 伺服器端預檢需要額外的防火牆規則。在「管理員叢集適用的防火牆規則」中,搜尋「Preflight checks」,並確認已設定所有必要的防火牆規則。

透過伺服器端預檢,當您使用 gkectl 更新使用者叢集時,預檢會在管理員叢集上執行,而不是在管理員工作站上本機執行。使用 Google Cloud 控制台、Google Cloud CLI 或 Terraform 更新叢集時,系統會在管理叢集上執行伺服器端預檢。

更新管理員叢集時,Google Distributed Cloud 會部署 Kubernetes in Docker (kind) 叢集,暫時託管更新管理員叢集所需的 Kubernetes 控制器。這個暫時性叢集稱為「啟動叢集」。更新管理員叢集時,系統會在啟動叢集上執行伺服器端預檢。

可更新的資訊

部分叢集功能和設定可以更新,但叢集建立後,其他功能和設定就無法更新。如要查看可更新的功能,請參閱管理員叢集設定檔使用者叢集設定檔的參考頁面。可更新的欄位會標示為「可變動」,不可更新的欄位則會標示為「不可變動」

您也可以執行 gkectl 指令,查看可更新的功能和設定。

如要查看管理員叢集可更新的項目,請按照下列步驟操作:

gkectl update admin --help

輸出內容範例:

Update the admin cluster. Only the following updates are supported and they can
only be updated one at a time:
- Enabling/Disabling Vsphere Resource Metrics
- Adding static IPs
- Updating vCenter CA certificate
- Registering Admin Cluster
- Enabling/Disabling Cloud Audit Logging
- Enabling/Disabling Stackdriver
- Enabling/Disabling Auto Repair
- Enabling/Disabling Auto Resize for Addon Nodes
- Enabling/Disabling GKE OnPrem API
- Updating OS Image Type
- Enabling/Disabling AntiAffinityGroups
- Update Secrets Encryption Configuration
- [Preview] Enabling/Disabling Cluster Backup
- [Preview] Update Cluster Backup configs

如要查看使用者叢集可更新的項目,請執行下列操作:

gkectl update cluster --help

輸出內容範例:

Update a GKE On-Prem cluster. Only the following updates are supported and they
can only be updated one at a time:
- Adding static IPs
- Updating node pool
- Updating user master cpu and memory
- Enabling/Disabling Vsphere Resource Metrics
- Enabling/Disabling vSphere CSI deployment
- Enabling/Disabling Auto Repair
- Enabling/Disabling Cloud Audit Logging
- Enabling/Disabling Stackdriver
- Enabling/Disabling GKE OnPrem API
- Registering User Cluster
- Updating vCenter CA certificate
- Updating MetalLB Address Pools
- Enabling/Disabling Auto Resizing on user master
- Updating NodePoolUpdatePolicy
- Enabling/Disabling AntiAffinityGroups
- [Preview] Enabling/Disabling Node Network Policy
- Updating Secrets Encryption
- Enabling/Disabling DataplaneV2 forwardMode

一次更新一項資訊

一次只能更新一項功能或設定。舉例來說,假設您想更新主要執行個體的 CPU 和記憶體,並停用自動修復

然後分別更新主節點 CPU 和記憶體,以及自動修復。請先確認第一次更新成功,再進行第二次更新。

更新程序

您可以使用 gkectl、 Google Cloud 控制台或 Google Cloud CLI 更新使用者叢集。如果您是使用 Terraform 建立使用者叢集,則可以透過 Terraform 更新叢集。在幾乎所有情況下,您都必須使用 gkectl 更新管理員叢集。

如果您使用 gkectl 更新叢集,請確認管理工作站已安裝所需版本的 gkectl。一般而言,您使用的 gkectl 版本會與要更新的叢集版本相同。更新期間會強制執行下列版本規則:

  • gkectl 次要版本不得低於叢集次要版本。 舉例來說,您無法使用 gkectl 1.29 版更新 1.30 版的叢集。修補程式版本不重要。舉例來說,您可以使用 gkectl 1.29.0-gke.1456 版,將叢集更新為較高的修補程式版本,例如 1.29.1000-gke.94。

  • gkectl 次要版本不得高於叢集版本超過兩個次要版本。舉例來說,如果您要更新 1.28 叢集,gkectl 版本可以是 1.29 或 1.30。但您無法使用 gkectl 1.31 版,因為該版本比叢集版本高出三個子版本。

如有需要,請參閱「下載 gkectl」一文,瞭解如何取得支援的 gkectl 版本。

下列範例說明如何更新叢集。

gkectl

gkectl update 指令的格式如下:

管理員叢集範例 (gkectl update admin)

假設您想在管理員叢集中,將 gkeOnPremAPI.enabled 的值從 false 變更為 true,首先,請編輯管理員叢集設定檔,並將值設為 true

gkeOnPremAPI:
  enabled: true

然後更新管理員叢集:

gkectl update admin --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config ADMIN_CLUSTER_CONFIG

更改下列內容:

  • ADMIN_CLUSTER_KUBECONFIG:管理員叢集 kubeconfig 檔案的路徑

  • ADMIN_CLUSTER_CONFIG:管理員叢集設定檔的路徑

使用者叢集範例 (gkectl update cluster)

假設您想在使用者叢集中,將 stackdriver.vSphereDisableResourceMetrics 的值從 false 變更為 true。首先,請編輯使用者叢集設定檔,並將值設為 true

stackdriver:
  disableVsphereResourceMetrics: true

然後更新使用者叢集:

gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG

更改下列內容:

  • ADMIN_CLUSTER_KUBECONFIG:管理員叢集 kubeconfig 檔案的路徑

  • USER_CLUSTER_CONFIG:使用者叢集設定檔的路徑

使用者叢集範例 (gkectl update credentials)

假設您想變更使用者叢集用於呼叫 vCenter Server 的憑證。

使用者叢集設定檔具有 vCenter.credentials.fileRef.path 欄位,指向憑證設定檔。在憑證設定檔中,更新 usernamepassword 的值。例如:

items:
- name: "vcenter-creds"
  username: "new-vcenter-account"
  password: "U$icUKEW#INE"

然後更新憑證:

gkectl update credentials vsphere \
    --config USER_CLUSTER_CONFIG \
    --kubeconfig ADMIN_CLUSTER_KUBECONFIG

更改下列內容:

  • USER_CLUSTER_CONFIG:使用者叢集設定檔的路徑

  • ADMIN_CLUSTER_KUBECONFIG:管理員叢集 kubeconfig 檔案的路徑

控制台

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

    前往 GKE 叢集

  2. 選取 Google Cloud 專案,然後選取要更新的叢集。

  3. 在「詳細資料」面板中,按一下「瞭解詳情」

  4. 可在 Google Cloud 控制台中更新的欄位會顯示鉛筆圖示。按一下其中一個鉛筆圖示。在隨即開啟的方塊中,視需要變更欄位值,然後按一下「完成」

  5. 按一下頁面頂端進度列中的「顯示詳細資料」。等待更新完成。

gcloud CLI

執行適用的更新指令。請僅指定要修改的設定標記:

更新使用者叢集的管理員

每個叢集的 Kubernetes API 伺服器都必須能夠授權收到的要求。如要設定授權,您必須在每個叢集上設定 Kubernetes 角色型存取權控管 (RBAC) 政策。管理員使用者是指在使用者叢集中獲派 cluster-admin 角色的使用者。這個角色會授予使用者叢集的完整管理存取權。

假設 Alice 和 Bob 是 us-west1 地區中,名為 cluster-1 的使用者叢集上唯一的管理員使用者。假設 Alice 想將 Trent 新增為額外的管理員使用者,Alice 可以執行下列指令:

gcloud container vmware clusters update cluster-1 \
    --project example-project-id-12345 \
    --location us-west1 \
    --admin-users alice@example.com \
    --admin-users bob@example.com \
    --admin-users trent@example.com

上述指令會將 Alice 和 Bob 保留在管理員使用者清單中,並將 Trent 新增至管理員使用者清單。請注意,Alice 和 Bob 必須列在指令中,因為指令會以指令中指定的清單,覆寫目前的管理員使用者清單。另請注意,每個 --admin-users 標記只會指定一位使用者。您無法在單一旗標中指定多位使用者。

Terraform

  1. 在用於建立叢集或節點集區的 Terraform 設定檔中,變更適用欄位的值。如需詳細的欄位說明,請參閱 Terraform 參考說明文件:

  2. 執行 terraform apply 更新設定。

更新使用者叢集的管理員

每個叢集的 Kubernetes API 伺服器都必須能夠授權收到的要求。如要設定授權,您必須在每個叢集上設定 Kubernetes 角色型存取權控管 (RBAC) 政策。管理員使用者是指在使用者叢集中獲派 cluster-admin 角色的使用者。這個角色會授予使用者叢集的完整管理存取權。

假設在特定使用者叢集中,只有 Alice 和 Bob 是管理員使用者。假設 Alice 想新增 Trent 為管理員使用者,Alice 可以如下調整 Terraform 設定,然後執行 terraform apply

authorization {
  admin_users {
    username = "alice@example.com"
    username = "bob@example.com"
    username = "trent@example.com"
  }
}

上述調整作業會將 Alice 和 Bob 保留在管理員使用者清單中,並將 Trent 新增至管理員使用者清單。請注意,Alice 和 Bob 必須列在新設定中,因為 terraform apply 指令會以設定中指定的清單,覆寫目前管理員使用者的清單。

更多資訊

本節列出的文件提供更新叢集的其他詳細資料。

更新叢集/管理員

以下文件詳細說明如何使用 gkectl update admingkectl update cluster 更新功能和設定:

更新憑證

如要瞭解如何使用 gkectl update credentials 更新金鑰和憑證,請參閱下列文件:

後續步驟

升級叢集