本文說明如何執行叢集更新,但不包含版本變更。
叢集更新是指變更叢集設定。
叢集升級是叢集更新的特例,包括變更控制層版本或節點集區版本。如要瞭解如何升級,請參閱升級 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 credentials
- 用於更新叢集憑證。gkectl update admin
- 在管理員叢集設定檔中進行變更後,請執行這項指令。gkectl update cluster
:在使用者叢集設定檔中進行變更後,請執行這項指令。
管理員叢集範例 (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 欄位,指向憑證設定檔。在憑證設定檔中,更新 username
和 password
的值。例如:
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 檔案的路徑
控制台
在控制台中,前往「Google Kubernetes Engine clusters overview」(Google Kubernetes Engine 叢集總覽) 頁面。
選取 Google Cloud 專案,然後選取要更新的叢集。
在「詳細資料」面板中,按一下「瞭解詳情」。
可在 Google Cloud 控制台中更新的欄位會顯示鉛筆圖示。按一下其中一個鉛筆圖示。在隨即開啟的方塊中,視需要變更欄位值,然後按一下「完成」。
按一下頁面頂端進度列中的「顯示詳細資料」。等待更新完成。
gcloud CLI
執行適用的更新指令。請僅指定要修改的設定標記:
使用者叢集中的節點集區:
gcloud container vmware node-pools update
更新使用者叢集的管理員
每個叢集的 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
在用於建立叢集或節點集區的 Terraform 設定檔中,變更適用欄位的值。如需詳細的欄位說明,請參閱 Terraform 參考說明文件:
執行
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 admin
和 gkectl update cluster
更新功能和設定:
更新憑證
如要瞭解如何使用 gkectl update credentials
更新金鑰和憑證,請參閱下列文件: