您可以使用 vSphere IaaS control plane 將 vSphere 轉換為在 Hypervisor 層上以原生方式執行 Kubernetes 工作負載的平台。在 vSphere 叢集上啟用時,vSphere IaaS control plane 提供直接在 ESXi 主機上執行 Kubernetes 工作負載,以及在稱為 vSphere 命名空間 的專用命名空間內建立上游 Kubernetes 叢集的功能。

現今應用程式堆疊的挑戰

現今的分散式系統是由一般會執行大量 Kubernetes 網繭和虛擬機器的多個微服務組成。不基於 vSphere IaaS control plane 的一般堆疊由基礎虛擬環境組成,其中 Kubernetes 基礎結構部署在虛擬機器內,Kubernetes 網繭也分別執行於這些虛擬機器中。有三個不同的角色會運作堆疊的每個部分,即應用程式開發人員、Kubernetes 叢集管理員,以及 vSphere 管理員。

圖 1. 現今的應用程式堆疊
具有 3 層的堆疊 - Kubernetes 工作負載、Kubernetes 叢集、虛擬環境。管理它們的角色有 3 個 - 開發人員、叢集管理員、vSphere 管理員。
不同的角色間對於彼此的環境不具可見度也無法控制:
  • 身為應用程式開發人員,您可以執行 Kubernetes 網繭,以及部署和管理以 Kubernetes 為基礎的應用程式。您對於執行數百個應用程式的整個堆疊不具可見度。
  • 身為 DevOps 工程師或叢集管理員,您只能控制 Kubernetes 基礎結構,而無需使用工具來管理或監控虛擬環境,以及解決任何與資源相關的問題和其他問題。
  • 做為 vSphere 管理員,您對於基礎虛擬環境擁有完全控制權,但對於 Kubernetes 基礎結構、虛擬環境中不同 Kubernetes 物件的放置,以及它們耗用資源的方式不具可見度。

對完整堆疊的作業可能有挑戰性,因為它們需要所有三個角色之間的通訊。在堆疊的不同層之間缺乏整合也會帶來挑戰。例如,Kubernetes 排程器對於 vCenter Server 詳細目錄不具可見度,因此無法智慧地放置網繭。

vSphere IaaS control plane 如何提供協助?

vSphere IaaS control plane 會直接在 Hypervisor 層上提供 Kubernetes 控制平面。身為 vSphere 管理員,您可以為 vSphere IaaS control plane 啟用現有的 vSphere 叢集,從而在屬於該叢集的 ESXi 主機內建立 Kubernetes 層。為 vSphere IaaS control plane 啟用的 vSphere 叢集稱為 主管

圖 2. vSphere IaaS control plane

具有工作負載的 IaaS 平台堆疊位於頂部,虛擬環境堆疊位於底部。管理它們的角色有兩個:開發人員和 vSphere 管理員。
在 Hypervisor 層上擁有 Kubernetes 控制平面可在 vSphere 中啟用下列功能:
  • 身為 vSphere 管理員,您可以在 主管 上建立命名空間 (稱為 vSphere 命名空間),並為其設定指定數量的記憶體、CPU 和儲存區。將 vSphere 命名空間 提供給 DevOps 工程師。
  • 身為 DevOps 工程師,您可以使用 vSphere 命名空間 內的共用資源集區在相同平台上執行 Kubernetes 工作負載。您可以部署和管理使用 Tanzu Kubernetes Grid 建立的多個上游 Kubernetes 叢集。此外,還可以直接在稱為 vSphere 網繭 的特殊類型的虛擬機器內的 主管 上部署 Kubernetes 容器。您也可以部署一般虛擬機器。
  • 身為 vSphere 管理員,您可以使用 vSphere Client 管理和監控 vSphere 網繭、虛擬機器和 Tanzu Kubernetes Grid 叢集。
  • 身為 vSphere 管理員,您對於在不同命名空間內執行的 vSphere 網繭、虛擬機器和 Tanzu Kubernetes Grid 叢集、它們在環境中的放置,以及它們耗用資源的方式具有完整可見度。

在 Hypervisor 層上執行 Kubernetes 時,也會減輕 vSphere 管理員和 DevOps 團隊之間的協作,因為這兩個角色都處理相同的物件。

什麼是工作負載?

vSphere IaaS control plane 中,工作負載是以下列其中一種方式部署的應用程式:

  • 包含在 vSphere 網繭 中執行的容器的應用程式。
  • 透過虛擬機器服務佈建的工作負載。
  • 使用 Tanzu Kubernetes Grid 部署的 Tanzu Kubernetes Grid 叢集。
  • Tanzu Kubernetes Grid 叢集中執行的應用程式。

什麼是 vSphere 區域?

vSphere 區域可以提供高可用性,防止 vSphere IaaS control plane 上部署的工作負載發生叢集層級故障。身為 vSphere 管理員,您可以在 vSphere Client 中建立 vSphere 區域,然後將 vSphere 叢集對應到區域。可以使用這些區域在 vSphere IaaS control plane 環境中部署 主管

可以在三個 vSphere 區域中部署 主管,以實現叢集層級高可用性。或者,可以在單一 vSphere 叢集上部署一個 主管,這將自動建立一個 vSphere 區域並將其對應到該叢集,也可以使用已對應到某個區域的叢集。如需詳細資訊,請參閱主管 架構主管 分區和叢集部署

什麼是 Tanzu Kubernetes Grid 叢集?

Tanzu Kubernetes Grid 叢集是由 VMware 建置、簽署並提供支援的 Kubernetes 的完整發行版本。您可以使用 Tanzu Kubernetes Grid主管 上佈建和運作上游 Tanzu Kubernetes Grid 叢集。

Tanzu Kubernetes Grid 佈建的 Tanzu Kubernetes Grid 叢集具有下列特性:
TKG 叢集特性,從左到右 - 個人化、緊密整合、可用於生產、完全受支援、由 Kubernetes 管理。
  • Kubernetes 的個人化安裝。Tanzu Kubernetes Grid 提供了針對 vSphere 最佳化的經過深思熟慮的預設值來佈建 Tanzu Kubernetes Grid 叢集。透過使用 Tanzu Kubernetes Grid,您可以減少通常用於部署和執行企業級 Kubernetes 叢集的時間和精力。
  • 與 vSphere 基礎結構整合。Tanzu Kubernetes Grid 叢集與 vSphere SDDC 堆疊整合,包括儲存區、網路和驗證。此外,Tanzu Kubernetes Grid 叢集建立在對應至 vSphere 叢集的 主管 上。由於這種緊密整合,執行 Tanzu Kubernetes Grid 叢集是一種統一的產品體驗。
  • 可用於生產環境。Tanzu Kubernetes Grid 佈建可用於生產環境的 Tanzu Kubernetes Grid 叢集。您可以執行生產工作負載,而無需執行任何其他組態。此外,您可以確保可用性並允許 Kubernetes 軟體輪流升級,並在不同的叢集中執行不同版本的 Kubernetes。
  • Kubernetes 工作負載的高可用性。在三個 vSphere 區域的 主管 上部署的 Tanzu Kubernetes Grid 叢集可防止在 vSphere 叢集層級發生故障。Tanzu Kubernetes Grid 叢集的工作負載和控制平面節點分佈在所有三個 vSphere 區域中,這使得在其中執行的 Kubernetes 工作負載具有高可用性。在單區域 主管 上執行的 Tanzu Kubernetes Grid 叢集透過 vSphere HA 受到保護,可免於在 ESXi 主機層級發生故障。
  • 由 VMware 提供全面支援。Tanzu Kubernetes Grid 叢集使用 VMware 提供的開放原始碼、Linux 系統的 Photon OS,部署在 vSphere 基礎結構上,並在 ESXi 主機上執行。如果堆疊的任何層 (從 Hypervisor 至 Kubernetes 叢集) 遇到問題,VMware 是您需要連絡的唯一廠商。
  • Kubernetes 代管。Tanzu Kubernetes Grid 叢集建立於 主管 (它本身是一種 Kubernetes 叢集) 之上。Tanzu Kubernetes Grid 叢集是使用自訂資源在 vSphere 命名空間 中定義的。您可以使用熟悉的 kubectl 命令和 Tanzu CLI,以自助服務方式佈建 Tanzu Kubernetes Grid 叢集。工具鏈之間存在一致性,無論您是佈建叢集還是部署工作負載,都可以使用相同的命令、熟悉的 YAML 和一般工作流程。

如需詳細資訊,請參閱〈Tanzu Kubernetes Grid 架構和元件〉將 TKG 服務與 vSphere IaaS 控制平面搭配使用

什麼是 vSphere 網繭

vSphere IaaS control plane 推出了稱為 vSphere 網繭 的建構,其等同於 Kubernetes 網繭。vSphere 網繭 是執行一或多個 Linux 容器、能源消耗較低的虛擬機器。每個 vSphere 網繭 會精確地針對其容納的工作負載調整大小,並且具有該工作負載的明確資源保留區。它會組態工作負載執行所需的儲存區、記憶體和 CPU 資源確切數量。僅設定 NSX 作為網路堆疊的 主管 支援 vSphere 網繭

圖 3. vSphere 網繭
包含兩個 vSphere 網繭方塊的 ESXi 主機。每個 vSphere 網繭都包含正在其中執行的容器、Linux 核心、記憶體、CPU 和儲存區資源。
vSphere 網繭vCenter Server 中的物件,並且為工作負載啟用下列功能:
  • 增強隔離。vSphere 網繭 會以與虛擬機器相同的方式隔離。每個 vSphere 網繭 都有自己唯一的 Linux 核心,該核心均以 Photon OS 中使用的核心為基礎。在 vSphere 網繭 中,與裸機組態一樣,每個容器都有唯一的 Linux 核心,而不是多個容器共用一個核心
  • 資源管理。vSphere DRS 會處理 主管vSphere 網繭 的放置。
  • 高效能。vSphere 網繭 可獲得與虛擬機器相同的資源隔離層級,消除了擾人的鄰居問題,同時保有快速的啟動時間和容器的低額外負荷。
  • 診斷。做為 vSphere 管理員,您可以對工作負載使用可用於 vSphere 的所有監控和檢查工具。
vSphere 網繭 與 Open Container Initiative (OCI) 相容,並且可以從任何作業系統執行容器 (只要這些容器也與 OCI 相容)。
圖 4. vSphere 網繭 網路和儲存區
內部包含容器、容器引擎和網繭引擎的 vSphere 網繭。網繭連線到容器映像、儲存區、NSX 交換器、spherelet 和 hostd。

根據儲存的物件,vSphere 網繭 會使用三種類型的儲存區,即暫時 VMDK、持續性磁碟區 VMDK 和容器映像 VMDK。身為 vSphere 管理員,您可在 主管 層級為容器映像快取和暫時 VMDK 的放置設定儲存區原則。在 vSphere 命名空間 層級上,您可以設定儲存區原則用於持續性磁碟區的放置。如需有關 vSphere IaaS control plane 的儲存區需求和概念的詳細資訊,請參閱工作負載的持續性儲存區

對於網路,vSphere 網繭Tanzu Kubernetes Grid 叢集的虛擬機器使用 NSX 提供的拓撲。如需詳細資料,請參閱 主管 網路

Spherelet 是在每個主機上建立的額外程序。它是原生移植到 ESXi 的一個 kubelet,並允許 ESXi 主機成為 Kubernetes 叢集的一部分。

如需在 主管 上使用 vSphere 網繭 的相關資訊,請參閱 vSphere IaaS 控制平面服務和工作負載說明文件中的將工作負載部署到 vSphere 網繭

vSphere IaaS control plane 中使用虛擬機器

vSphere IaaS control plane 提供虛擬機器服務功能,讓 DevOps 工程師除了部署及執行容器之外,還可以在一般的共用 Kubernetes 環境中部署及執行虛擬機器。容器和虛擬機器會共用相同的 vSphere 命名空間 資源,並且可透過單一 vSphere IaaS control plane 介面進行管理。

虛擬機器服務解決了 DevOps 團隊需要使用 Kubernetes,但現有的虛擬機器型工作負載無法輕鬆容器化的需求。此外,還可協助使用者減少管理非 Kubernetes 平台以及容器平台的額外負荷。在 Kubernetes 平台上執行容器和虛擬機器時,DevOps 團隊可以將其工作負載使用量整併到一個平台中。

備註: 除了獨立虛擬機器之外,虛擬機器服務還管理構成 Tanzu Kubernetes Grid 叢集的虛擬機器。如需叢集的相關資訊,請參閱 將 TKG 服務與 vSphere IaaS 控制平面搭配使用說明文件。
此圖將虛擬機器服務顯示為管理獨立虛擬機器和構成 Tanzu Kubernetes Grid 叢集的虛擬機器的主管元件。

透過虛擬機器服務部署的每個虛擬機器會作為執行所有元件 (包括其自己的作業系統) 的完整機器運作於 vSphere IaaS control plane 基礎結構之上。虛擬機器可以存取 主管 提供的網路和儲存區,並且使用標準 Kubernetes kubectl 命令進行管理。虛擬機器會作為完全隔離的系統執行,不會受到 Kubernetes 環境中其他虛擬機器或工作負載的干擾。

何時在 Kubernetes 平台上使用虛擬機器?

一般而言,決定在容器中還是在虛擬機器中執行工作負載取決於您的業務需求和目標。使用虛擬機器的原因如下:

  • 您的應用程式無法容器化。
  • 應用程式專為自訂核心或自訂作業系統而設計。
  • 應用程式更適合在虛擬機器中執行。
  • 您想要有一致的 Kubernetes 體驗並避免額外負荷。您可以整併這些堆疊並使用熟悉的 kubectl 命令進行管理,而不是針對非 Kubernetes 和容器平台執行各組單獨的基礎結構。

如需在 主管 中部署和管理獨立虛擬機器的相關資訊,請參閱 vSphere IaaS 控制平面服務和工作負載說明文件中的〈部署和管理虛擬機器〉

vSphere IaaS control plane 中的 主管服務

主管服務 是 vSphere 認證的 Kubernetes 營運人員,可將基礎結構即服務元件和緊密整合的獨立軟體廠商服務提供給開發人員。您可以在 vSphere IaaS control plane 環境中安裝和管理 主管服務,以便使其可與 Kubernetes 工作負載搭配使用。在 主管 上安裝 主管服務 時,DevOps 工程師可以使用服務 API 在其使用者命名空間中的 主管 上建立執行個體。然後,可以在 vSphere 網繭Tanzu Kubernetes Grid 叢集中耗用這些執行個體。

進一步瞭解支援的 主管服務 以及如何在 http://vmware.com/go/supervisor-service 中下載其服務 YAML 檔案。

如需如何使用 主管服務 的相關資訊,請參閱 vSphere IaaS 控制平面服務和工作負載說明文件中的〈管理主管服務〉