規劃僅限 VMware 的 Google Distributed Cloud 軟體叢集升級作業,有助於判斷必要的升級順序、選擇相容的管理工具,並在多叢集環境中盡量減少工作負載中斷。如需升級前準備工作檢查清單,請參閱「升級最佳做法」。
版本、順序和工具對升級作業的影響
升級叢集的順序、使用的工具,以及必須執行的檢查,會因下列因素而有顯著差異:
- 您開始使用的版本
- 升級後的版本
- 是否從進階或非進階叢集升級
- 是否升級至進階或非進階叢集
- 使用者叢集是否已啟用 Controlplane V2
視您開始使用的版本、升級叢集的順序、用於更新的工具、叢集版本而定,您可以執行的操作和無法執行的操作會有很大的差異。
檢查叢集是否為進階叢集
如要確認叢集是否為進階叢集,請先找出您使用的版本:
- 如果叢集使用 1.30 以下版本,則為非進階叢集。
- 如果叢集使用 1.33 版,且您未明確選擇不採用進階叢集,則這些叢集為進階叢集。
- 如果叢集使用 1.34 以上版本,則為進階叢集。
如果叢集使用 1.31 和 1.32 版,請透過 kubectl 檢查叢集自訂資源,確認叢集是否為進階叢集:
在管理員叢集 kubeconfig 中,檢查管理員叢集的
enableAdvancedCluster規格欄位:kubectl get onpremadminclusters -A \ -o custom-columns=NAME:.metadata.name,VERSION:.spec.gkeOnPremVersion,ADVANCED:.spec.enableAdvancedCluster \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG將
ADMIN_CLUSTER_KUBECONFIG替換為管理員叢集 kubeconfig 檔案的路徑。在管理員叢集 kubeconfig 中,檢查使用者叢集的
enableAdvancedCluster規格欄位:kubectl get onpremuserclusters -A \ -o custom-columns=NAME:.metadata.name,VERSION:.spec.gkeOnPremVersion,ADVANCED:.spec.enableAdvancedCluster \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
啟用進階叢集後,輸出內容會與下列內容相似:
NAME VERSION ADVANCED
gke-admin-abc12 1.32.0-gke.1085 true
如果 ADVANCED 為 true,則為進階叢集。如果是 1.32 以下版本,ADVANCED 可能會顯示為 <none>。
升級程序概覽
以下各節說明升級叢集時的整體升級程序,具體取決於您要升級的叢集類型和目標叢集類型。
開始升級前,請先詳閱版本對升級作業影響的詳細資訊。如需依版本列出的依附元件詳細清單,以及略過版本和版本偏斜規則的相關資訊,請參閱「升級版本規則」。
進階叢集與非進階叢集
叢集分為進階和非進階兩種。在 1.33 以上版本建立的所有叢集都是進階叢集。進階叢集採用改良架構,提供更高的彈性和擴充性。
將叢集升級為進階叢集後,您一律會使用進階叢集,並採用進階叢集升級程序。只有在從 1.33 之前的版本升級時,叢集是否為進階叢集才會有影響。
進階叢集採用整合式 Google Distributed Cloud 架構,僅將 Google Distributed Cloud 軟體用於裸機,做為 Google Distributed Cloud 軟體僅用於 VMware 的基礎架構。您可能會在節點標籤、API 資源和系統標記中看到「bare metal」一詞。
進階叢集功能會實作叢集架構,讓僅適用於 VMware 的 Google Distributed Cloud 軟體,與其他 Google Distributed Cloud 產品更一致。啟用進階叢集的叢集會與其他 Google Distributed Cloud 叢集共用平台。這個共用平台使用相同的控制器和代理程式,可提高可靠性,並協助 Google 提供更優質的支援。啟用進階叢集後,叢集作業的效能也會提升。
新架構提供一致的體驗,並與所有其他 Google Distributed Cloud 產品搭配使用。如要進一步瞭解進階叢集和非進階叢集的功能,請參閱「進階叢集功能支援」。
從進階叢集升級至進階叢集 (目前版本,從 1.31 開始)
在 1.32 以上版本中,從一個進階叢集升級至另一個叢集時,您可以同時執行修補程式版本升級和依序子版本升級。在 1.31 預先發布版中,您只能在 1.31 版中執行修補程式版本升級。
如要執行這項升級,您可以使用 gkectl CLI、Google Cloud CLI、 Google Cloud 控制台或 Terraform (視版本而定)。
如要從進階叢集升級至進階叢集,請務必按照下列順序操作:
- 升級管理員工作站 (如適用)。
- 使用
gkectl diagnose cluster確認管理員叢集是否健康。解決所有問題。 - 升級管理員叢集。
- 使用
gkectl diagnose cluster確認升級成功,且使用者叢集運作正常。解決所有問題。 - 逐一升級使用者叢集。您可以同時或分別升級使用者叢集控制層和節點集區。詳情請參閱「升級節點集區」。
- 使用
gkectl diagnose cluster確認升級成功。
當使用者叢集中的所有節點集區都與使用者叢集的控制層版本相同時,使用者叢集就會升級,升級作業也會完成。
使用者叢集的控制層會在使用者叢集本身執行,並在使用者叢集升級期間升級。管理員叢集控制層節點會在管理員叢集升級期間升級。
如要進一步瞭解如何使用 gkectl diagnose cluster 診斷叢集,請參閱「診斷叢集」。
如要瞭解如何將進階叢集升級至進階叢集,請參閱「升級叢集」。
從非進階叢集升級為進階叢集
只有 1.31、1.32、1.33 和 1.34 版,才會從非進階叢集升級至進階叢集。如要進一步瞭解如何將這些版本的非進階叢集升級為進階叢集,請參閱「升級版本規則」。
如要從非進階叢集升級至進階叢集,您必須使用與目標版本相同的 gkectl 版本 (例如,如果要升級至 1.32.0 版,則必須使用 gkectl 1.32.0 版),並按照下列順序操作:
- 升級管理員工作站和構件。
- 使用
gkectl diagnose cluster確認管理員叢集是否健康。解決所有問題。 - 升級管理員叢集。
- 使用
gkectl diagnose cluster確認升級成功,且使用者叢集運作正常。解決所有問題。 - 升級使用者叢集。
- 使用
gkectl diagnose cluster確認升級成功。
如要進一步瞭解如何使用 gkectl diagnose cluster 診斷叢集,請參閱「診斷叢集」。
如要進一步瞭解如何將非進階叢集升級為進階叢集,請參閱「將非進階叢集更新或升級為進階叢集」。
從非進階叢集升級至非進階叢集
如果是 1.33 以下版本,您可以從非進階叢集升級至其他非進階叢集。如要瞭解哪些版本允許從非進階叢集升級至其他非進階叢集,請參閱「升級版本規則」。
升級非進階叢集的順序取決於目標版本:
- 如要升級至 1.31、1.32 和 1.33 版,必須先升級管理員叢集,再升級使用者叢集。
- 如果目標版本為 1.30 以下,您必須先升級所有使用者叢集,再升級管理員叢集。
升級至 1.31、1.32 或 1.33 版
如要升級至 1.31、1.32 或 1.33 版,同時保留非進階叢集,請務必按照下列順序操作:
- 升級管理員工作站,並準備套件構件。
- 使用
gkectl diagnose cluster確認管理員叢集是否健康。解決所有問題。 - 升級管理員叢集。
- 使用
gkectl diagnose cluster確認升級成功,且使用者叢集運作正常。解決所有問題。 - 逐一升級使用者叢集。
- 使用
gkectl diagnose cluster確認升級成功。
升級至 1.30 以下版本
如要升級至 1.30 以下版本,請務必按照下列順序操作:
- 升級管理員工作站,並準備套件構件。
- 使用
gkectl diagnose cluster確認使用者叢集是否正常運作。解決所有問題。 - 逐一升級所有使用者叢集。
- 使用
gkectl diagnose cluster確認升級成功,且管理員叢集健康狀態良好。解決所有問題。 - 升級管理員叢集。
- 使用
gkectl diagnose cluster確認升級成功。
如要進一步瞭解如何使用 gkectl diagnose cluster 診斷叢集,請參閱「診斷叢集」。
如要進一步瞭解如何將非進階叢集升級至非進階叢集,請參閱「升級及維護非進階叢集」。
叢集升級
管理員叢集一律一次升級一個。
升級使用者叢集時,您可以升級整個使用者叢集 (同時升級控制層和叢集中的所有節點集區),也可以升級使用者叢集的控制層,並將節點集區保留在目前版本。您採用的方法取決於多項因素,例如:
- 叢集所在的環境 (正式環境或非正式環境)。
- 維護期間的長度。
- 使用者叢集的版本。
舉例來說,在開發環境中,您可能希望保持程序簡單,並同時升級使用者叢集的控制層和所有節點集區。不過,在維護期間較短的正式環境中,您可能只想升級控制層,因為這樣耗時較短,且控制層具備高可用性 (HA),因此升級控制層不會中斷使用者工作負載。
選擇升級叢集的工具
您使用的工具取決於您打算升級的方式和內容。
如要升級管理員叢集,請務必使用 gkectl。
如要升級使用者叢集,可以使用下列任一工具:
gkectl指令列工具 (從非進階叢集升級至進階叢集時必須使用)- Terraform (如果您使用 Terraform 建立使用者叢集)
- Google Cloud 控制台
- Google Cloud CLI
下表列出各項工具支援的用途。
| 升級用途 | gkectl |
gcloud CLI | 主控台 | Terraform | 注意事項和限制 |
|---|---|---|---|---|---|
| 升級管理員叢集(任何路徑) | 是 | 否 | 否 | 否 | 管理員叢集一律需要 gkectl。 |
| 將非進階叢集升級為進階叢集 (轉換) | 是 | 否 | 否 | 否 | gkectl 版本必須與目標版本相符;控制層 (CP) 和節點集區之間不允許有版本偏差。 |
| 將非進階叢集升級為非進階叢集 (舊版) | 是 | 否 | 否 | 否 | 僅適用於 1.33 以下版本 (選擇不採用路徑);不支援 API 用戶端。 |
| 升級使用者叢集:進階到進階 | 是 | 是 | 是 | 是1 | 適用標準版本偏誤規則。 |
| 升級整個使用者叢集 (CP 和節點集區一併升級) | 是 | 是 | 是 | 是1 | 所有工具都支援進階使用者叢集。 |
| 單獨升級使用者叢集控制層 (僅限 CP) | 是 | 是 | 否 | 是1 | 控制台不支援僅升級控制層。 |
| 在 CP 升級後選擇性升級節點集區 | 是 | 是 | 否 | 是1 | 控制台不支援個別節點集區升級。 |
| 同時升級控制層和一或多個節點集區 | 是 | 否 | 否 | 否 | 只有 gkectl 支援部分並行 CP + 節點集區版本升級。 |
1 Terraform 需求:只有在使用者叢集原本是使用 Terraform 建立及管理時,才能使用 Terraform 升級使用者叢集。
如要使用控制台或 gcloud CLI 取得以 gkectl 建立的叢集資訊,請在 GKE On-Prem API 中註冊叢集。
後續步驟
請參閱升級版本規則,瞭解版本對升級的影響,並查看您目前版本和升級版本的版本規則。
請參閱升級最佳做法,並制定叢集升級計畫。