Skip to content

antony@notes:~/misc$ cat "認識-VKS-Components.md"

認識 VKS Components

2025-09-18· misc

認識 VKS Components

VKS(先前稱為 TKG Service 或 TKGS)為 Kubernetes workload 叢集提供自助式的生命週期管理。VKS with Supervisor 已針對 vSphere 環境進行最佳化,並與底層的基礎架構整合,包括 vCenter、ESX、virtual networking 和cloud native storage。透過 VKS,您可以佈建符合規範的 Kubernetes 叢集,並維持與上游的一致性。

VKS 包含數個與 vSphere Supervisor 整合的元件。

1. vSphere Supervisor

Supervisor 是內建於 vSphere 的一個關鍵 control plane,它將「所需狀態 (desired state)」和單一的一致性 API 直接整合到 hypervisor 中,從而能夠在傳統 workloads 旁邊,以原生的方式部署與管理

  • Kubernetes clusters
  • declarative Virtual Machines (宣告式虛擬機器)
  • vSphere Pod。

它將 vSphere 轉變為一個可擴展的平台,提供一個宣告式的 API 介面,讓使用者能在 vSphere Namespace 所啟用的資源邊界內,自助式地佈建現代基礎架構服務。

部署 Supervisor 的兩種方式

  1. vSphere Cluster 部署 Supervisor 的典型方式,是將其部署在單一的 vSphere 叢集上。vSphere 叢集是由多個 ESX 主機組成的集合,並由一個 vCenter 系統進行管理。vSphere 叢集必須設定特定的功能以支援 Supervisor,包括:

    • 多個 ESX 主機透過 vSphere Distributed Switch (VDS) 連接。
    • 已設定 Shared storage,例如 vSAN 或 NFS。
    • 已啟用 vSphere HAfully-automated DRS
    • 已啟用 vSphere Lifecycle Manager (vLCM)
    • 已設定網路,可使用 NSX 及其內嵌的 load balancer,或使用 VDS 搭配外部的 load balancer

    從架構上來說,對於在 Supervisor 上進行的 VKS 生產環境部署,您應該將執行 vCenter 的管理平面主機或叢集,與將要啟用 Supervisor 的運算平面叢集分開。如果您使用一個 vSphere 叢集來託管 vCenter,該叢集不應啟用 DRS。

  2. vSphere Zone 可以將 vSphere 叢集指派給 vSphere 區域 (Zone),以便為 Supervisor 提供高可用性容錯能力。將 Supervisor 跨 vSphere 區域部署,可讓您在特定的可用性區域中佈建 VKS 叢集。

    在單一 vSphere 叢集上部署 Supervisor 時,Supervisor 與 vSphere 叢集之間存在一對一的關係。而在區域化的 Supervisor 部署中,Supervisor 會橫跨三個 vSphere 叢集,為其上的 VKS 叢集提供高可用性故障網域 (failure domains)

    vSphere 管理員會建立這三個 vSphere 區域,並將 vSphere 叢集與之關聯。除了 vSphere 叢集本身的要求外,在三個 vSphere 區域上部署 Supervisor 還有一些特殊要求,包括:

    • 三個 vSphere 區域透過 vSphere 分散式交換器 (VDS) 連接。
    • 每個 vSphere 區域包含一個 vSphere 叢集
    • Supervisor 必須部署在正好 3 個 vSphere 區域上。
    • vSphere 儲存策略 (storage policy) 可用於 vSphere 區域。

2. vSphere Namespace

vSphere namespace 是一個租用邊界 (tenancy boundary),它能讓使用者自助式地取用 3 種 runtime,包括虛擬機器、VKS 叢集、vSphere Pods 以及其他多種基礎架構服務。

對於每個 vSphere namespace,可以設定 RBACpersistent storageresource limitsimages library 以及虛擬機器類別

3. VKS

VKS 是開源 Cluster API 專案的一種實作,其定義了一組自訂資源和控制器,用以管理 Kubernetes 叢集的生命週期。VKS 是 Supervisor 的一個元件

VKS 具有三層控制器來管理 VKS 叢集的生命週期,包括 Virtual Machine Service、Cluster API 以及 Cloud Provider Plugin:

  • VM Operator Virtual Machine Service controller 提供了一種宣告式、Kubernetes 風格的 API,用於管理虛擬機及相關的 vSphere 資源。虛擬機服務引入了「虛擬機類別 (virtual machine class)」 的概念,它代表一種抽象且可重複使用的硬體配置。VKS 使用 Virtual Machine Service 來管理託管workload cluster 的 control plane 和 worker node 虛擬機的生命週期。
  • Cluster API Cluster API controller 提供了宣告式、Kubernetes 風格的 API,用於叢集的建立、設定與管理。Cluster API 的輸入內容包括:
    • 描述叢集的資源
    • 一組描述構成叢集的虛擬機的資源
    • 一組描述叢集附加元件的資源
  • Cloud Provider Plugin VKS 會置備 workload clusters,其中包含與底層 vSphere Namespace 資源整合所需的元件。這些元件包含一個與 Supervisor 整合的 Cloud Provider Plugin。VKS 使用此 Cloud Provider Plugin,將 persistent volumes 的請求傳遞給 Supervisor,而 Supervisor 已與 VMware Cloud Native Storage (CNS) 整合。

4. vSphere Kubernetes release

vSphere Kubernetes release (VKr) 提供了由 VMware 簽署並支援的 Kubernetes 軟體發行版和附加元件,供 VKS 叢集使用。

每個 VKr 皆以虛擬機範本 (OVA 檔案) 的形式發佈。VKS 使用 OVA 格式來建構 VKS 叢集的虛擬機節點。VKr 根據 Kubernetes 的版本控制方式進行版本管理,並包含針對 vSphere 基礎架構的作業系統客製化與最佳化。

  • Content Library (內容庫) vSphere Kubernetes release 是透過 vCenter content library 提供給 VKS 叢集使用。您可以建立一個訂閱的內容庫,以便在 VMware 發佈新的 VKr 版本時自動接收。

5. VKS 叢集元件

在 VKS 叢集中執行的元件為產品的四個領域提供功能:驗證儲存網路負載平衡

5.1. Authentication Webhook

  • Authentication Webhook 以 Pod 的形式在叢集內部執行,用以驗證使用者驗證 token。
  • VKS 叢集支援兩種驗證方式:使用 vCenter Single Sign-On,以及使用支援 Open ID Connect (OIDC) 協定的外部身分識別提供者。
  • VKS 在 Supervisor 和 VKS 叢集節點上執行 Pinniped OIDC 用戶端。為 Supervisor 設定外部 OIDC 提供者會自動設定 Pinniped 元件。
  • 為了與 Supervisor 進行驗證,VKS 支援 VCF CLI

5.2. Container Storage Interface (CSI)

  • paravirtual CSI plugin 是一個在 VKS 叢集內執行的 Kubernetes Pod,它透過 Supervisor 與 VMware Cloud Native Storage (CNS) 整合。在 VKS 叢集中執行的 Kubernetes Pod 可以掛載三種類型的虛擬磁碟:臨時磁碟 (ephemeral)永久性磁碟區 (persistent volume)容器映像檔 (container image)
    • 暫態儲存 (Transient Storage) Pod 需要暫態儲存來存放 Kubernetes 物件等臨時性資料,例如日誌、磁碟區和組態對應 (configuration maps)。暫態儲存的生命週期與 Pod 共存。臨時性資料在容器重啟後仍然存在,但一旦 Pod 被刪除,儲存臨時性資料的虛擬磁碟也會隨之消失。
    • 永久性儲存 (Persistent Storage) VKS 利用 vSphere 儲存策略框架來定義儲存類別 (storage classes) 和保留永久性磁碟區。VKS 叢集會將永久性磁碟區的請求傳遞給與 VMware Cloud Native Storage (CNS) 整合的 Supervisor。永久性磁碟區可以使用儲存類別在叢集節點上動態置備,也可以手動置備。
    • 貨櫃映像檔儲存 (Container Image Storage) Kubernetes Pod 內的 Containers 會使用包含待執行軟體的 image。Pod 會將其 containers 所使用的映像檔掛載為映像檔虛擬磁碟。當 Pod 完成其生命週期時,映像檔虛擬磁碟會從 Pod 卸離。Kubelet 負責從 image registry 中提取 container image,並將其轉換為可在 Pod 內執行的虛擬磁碟。

5.3. Container Network Interface (CNI)

  • Container Network Interface plugin 是一種提供 Pod 網路功能的 CNI plugin。
  • VKS 叢集支援以下 Container Network Interface (CNI) 選項:Antrea (預設) 和 Calico。此外,VKS 還提供 Antrea NSX Routed CNI 來實作可路由的 Pod 網路。
  • 下表總結了 VKS 叢集的網路功能及其實作方式: image

5.4. Cloud Provider Implementation

  • Cloud Provider Implementation 讓你建立 Kubernetes load balancer 和 ingress services. image

6. VKS Cluster API

VKS 提供一個用於配置 (provisioning) 和管理 VKS clusters 生命週期的 API。v1beta1 API 可讓您根據 VMware 提供的預設 ClusterClass,建立符合規範的 Kubernetes 叢集 (類型為 Cluster)。

7. VKS Cluster Clients

Supervisor 上的 VKS 支援多種用戶端介面,用於設定、監控和管理 VKS 叢集。

  • vSphere Client:用於設定 Supervisor 並監控已部署的 VKS 叢集。
  • VCF CLI:用於透過 vCenter Single Sign-On 向 Supervisor 和 VKS 叢集進行驗證。
  • kubectl:用於以宣告方式 (declaratively) 設定和管理 VKS 叢集的生命週期,並與 Supervisor 互動。
  • Tanzu Mission Control 網頁介面:用於管理 VKS 叢集。