對於 主管叢集Tanzu Kubernetes Grid 服務 叢集以及支援這些叢集的基礎結構,vSphere with Tanzu 支援輪流更新。

如何更新主管叢集Tanzu Kubernetes Grid 服務 叢集

vSphere with Tanzu 針對 主管叢集Tanzu Kubernetes Grid 服務 叢集使用輪流更新模型。輪流更新模型可確保在更新程序期間,叢集工作負載的停機時間最少。輪流更新包括對 Kubernetes 軟體版本以及支援 Kubernetes 叢集的基礎結構和服務進行升級,例如虛擬機器組態和資源、vSphere 服務和命名空間,以及自訂資源。

若要成功更新,您的組態必須符合多個相容性需求,因此系統會強制執行重新檢查條件以確保叢集已準備好進行更新,並且在叢集升級失敗時支援復原。
備註: vSphere with Tanzu 更新不僅僅涉及 Kubernetes 軟體版本的升級。我們使用「更新」一詞來說明此程序,而不是「升級」一詞,後者是一種遞增軟體版本的有限更新形式。

主管叢集 更新和 Tanzu Kubernetes Grid 服務 叢集更新之間的相依性

可以單獨更新主管叢集Tanzu Kubernetes Grid 服務 叢集。但請注意,兩者之間存在相依性。

更新主管叢集可能會對在此部署的 Tanzu Kubernetes Grid 服務 叢集觸發輪流更新。請參閱透過執行 vSphere 命名空間更新來更新 主管叢集

如果 Tanzu Kubernetes Grid 服務 叢集與目標主管叢集版本不相符,則可能需要先更新一或多個 Tanzu Kubernetes Grid 服務 叢集,然後再更新主管叢集。請參閱驗證 Tanzu Kubernetes 叢集的更新相容性

關於 主管叢集 更新

當您起始 主管叢集 更新時,系統會建立新的控制平面節點,並將其加入到現有的控制平面。vSphere 詳細目錄會在此更新階段顯示四個控制平面節點,因為系統會新增更新的節點,然後移除較舊的過期節點。物件會從其中一個舊的控制平面節點移轉到新的控制平面節點,並且會移除舊的控制平面節點。此程序會逐一重複,直到所有控制平面節點都更新為止。更新控制平面後,工作節點會以類似的輪流更新方式進行更新。工作節點是 ESXi 主機,每個 ESXi 主機上的每個 Spherelet 程序都會逐一更新。

您可以選擇下列更新:
  • 更新 vSphere 命名空間
  • 更新所有內容,包括 VMware 版本和 Kubernetes 版本。
可以使用 vSphere 命名空間更新工作流程更新 主管叢集執行的 Kubernetes 版本 (例如從 Kubernetes 1.16.7 更新到 Kubernetes 1.17.4) 以及支援 主管叢集Tanzu Kubernetes Grid 服務 叢集的基礎結構。此類型的更新更頻繁,可用來與 Kubernetes 發行步調保持一致。以下是 vSphere 命名空間更新順序。
  1. 升級 vCenter Server
  2. 執行 vSphere 命名空間更新 (包括 Kubernetes 升級)。

若要執行 vSphere 命名空間更新,請參閱透過執行 vSphere 命名空間更新來更新 主管叢集

您可以使用「全部更新」工作流程來更新所有 vSphere with Tanzu 元件。更新主要版本 (例如從 NSX-T 3.X 更新到 4 以及從 vSphere 7.X 更新到 8) 時,需要使用此類型的更新。此更新工作流程並不頻繁執行,具體取決於新 VMware 產品版本發佈的時間。以下進行全部更新的順序:
  1. 檢查《VMware 互通性對照表》(https://interopmatrix.vmware.com/Interoperability) 中的 vCenter ServerNSX-T Data Center 以確定相容性。vSphere with Tanzu 功能由隨 vCenter Server 提供的工作負載控制平面 (WCP) 軟體提供。
  2. 升級 NSX-T Data Center (如果相容)。
  3. 升級 vCenter Server
  4. 升級 vSphere Distributed Switch。
  5. 升級 ESXi 主機。
  6. 檢查任何已佈建的 Tanzu Kubernetes Grid 服務 叢集與目標主管叢集版本的相容性。
  7. 更新 vSphere 命名空間 (包括主管叢集 Kubernetes 版本)。
  8. 更新 Tanzu Kubernetes Grid 服務 叢集。
此圖說明 vSphere with Tanzu 更新的一般工作流程。 此圖顯示了 vSphere with Tanzu 更新的步驟。

關於 Tanzu Kubernetes Grid 服務 叢集更新

更新 主管叢集 時,支援部署到該 主管叢集Tanzu Kubernetes Grid 服務 叢集的基礎結構元件 (例如 Tanzu Kubernetes Grid 服務) 同樣會進行更新。每個基礎結構更新可包括支援 Tanzu Kubernetes Grid 服務 之服務 (CNI、CSI、CPI) 的更新,以及可套用至現有 Tanzu Kubernetes Grid 服務 叢集的控制平面和工作節點的更新組態設定。為確保您的組態符合相容性需求,vSphere with Tanzu 會在輪流更新期間執行預先檢查,並強制執行符合性。

若要輪流更新 Tanzu Kubernetes Grid 服務 叢集,您需要更新叢集資訊清單。請參閱更新 Tanzu Kubernetes 叢集。但是請注意,執行 vSphere 命名空間更新時,系統會立即將更新的組態散佈到所有 Tanzu Kubernetes Grid 服務 叢集。這些更新可自動觸發 Tanzu Kubernetes Grid 服務 控制平面和 worker 節點的滾動更新。

在 Kubernetes 部署中,用於取代叢集節點的輪流更新程序與網繭的輪流更新類似。有兩個不同的控制器負責執行 Tanzu Kubernetes Grid 服務 叢集的輪流更新:附加元件控制器和 TanzuKubernetesCluster 控制器。在這兩個控制器內,輪流更新包括三個關鍵階段:更新附加元件、更新控制平面以及更新工作節點。這些階段按順序進行,並執行預先檢查,以防止某個步驟在上一步驟徹底完成之前開始。如果判定這些步驟是不必要的,則可將其略過。例如,更新可能僅會影響工作節點,因此不需要任何附加元件或控制平面更新。

在更新程序期間,系統會新增一個叢集節點,並等待該節點與目標 Kubernetes 版本一起上線。然後,系統會將舊節點標記為待刪除,移至下一個節點,然後重複此程序。將在所有網繭都移除後才會刪除舊節點。例如,如果為網繭定義 PodDisruptionBudgets 以阻止完全清空某個節點,則該節點會遭封鎖,但在這些網繭可收回之前不會將其移除。系統會先升級所有控制平面節點,再升級工作節點。在更新期間,Tanzu Kubernetes Grid 服務 叢集狀態會變更為「正在更新」。完成輪流更新程序後,Tanzu Kubernetes Grid 服務 叢集狀態會變更為「正在執行」。

在 Kubernetes 版本升級期間,在 Tanzu Kubernetes Grid 服務 叢集上執行之不受複寫控制站管理的網繭將在 Tanzu Kubernetes Grid 服務 叢集更新期間,於 worker 節點清空時刪除。如果已手動或透過 vSphere 命名空間更新自動觸發叢集更新,則會出現此情況。不受複寫控制站管理的網繭包括不是做為 Deployment 或 ReplicaSet 規格一部分建立的網繭。如需詳細資訊,請參閱 Kubernetes 說明文件中的〈網繭生命週期:網繭存留時間〉主題。