TKG 服务 提供 Kubernetes 工作负载集群的自助式生命周期管理。具有 主管 的 TKG Service 已针对 vSphere 环境进行了优化,并与底层基础架构(包括 vCenter、ESXi、虚拟网络连接和云原生存储)集成。通过 TKG Service,可以置备符合要求的 Kubernetes 集群并维护上游并发性。

TKG 服务 包括多个与 vSphere IaaS control plane 集成的组件。
图 1. TKG 服务 组件
TKG Service 组件

工作负载管理

工作负载管理是一个 VMware 解决方案,可在本机 vSphere 基础架构上提供 Kubernetes 控制平面。启用工作负载管理后,可在 vSphere 环境中部署一个或多个 主管。工作负载管理与 vCenter Server 绑定在一起,但单独进行许可。

主管

主管 是一个 Kubernetes 集群,可作为控制平面来管理工作负载集群。您可以配置一个 主管,以帮助开发人员置备和运维 Tanzu Kubernetes Grid 集群。

主管 部署:vSphere 集群

在单个 vSphere 集群上部署 主管 的传统方法。vSphere 集群是由 vCenter Server 管理的 ESXi 主机的集合。必须为 vSphere 集群配置特定功能以支持 主管,包括:
  • 由 vSphere Distributed Switch (VDS) 连接的多个 ESXi 主机
  • 已配置共享存储,例如 vSAN 或 NFS
  • 已启用 vSphere HA 和全自动 DRS
  • 已启用 Lifecycle Manager
  • 已配置网络连接(具有嵌入式负载均衡器的 NSX 或具有外部负载均衡器的 VDS)
从架构上看,对于 主管 上的 TKG 生产部署,应将运行 vCenter Server 的管理平面主机或集群与将启用 主管 的计算平面集群分开。如果使用 vSphere 集群来托管 vCenter Server,则此集群不应启用 DRS。有关详细信息,请参考 vCenter 文档

主管 部署:vSphere 区域

vSphere 8 引入了 vSphere 区域。可以将 vSphere 集群分配给 vSphere 区域,为 主管 提供高可用性和容错功能。通过跨 vSphere 区域部署 主管,您可以在特定的可用性区域中置备 TKG 集群。

在单个 vSphere 集群上部署 主管 时,主管 与 vSphere 集群之间存在一对一关系。在区域化 主管 部署中,主管 横跨三个 vSphere 集群,从而为 主管 上的 TKG 集群提供高可用性和故障域。

vSphere 管理员可创建三个 vSphere 区域,并将这些区域与一个 vSphere 集群相关联。在三个 vSphere 区域上部署一个 主管 时,除了要满足 vSphere 集群要求外,还要满足一些特殊要求,包括:

  • 由 vSphere Distributed Switch (VDS) 连接的三个 vSphere 区域
  • 每个 vSphere 区域包含一个 vSphere 集群
  • 主管 必须正好部署在三个 vSphere 区域上
  • vSphere 存储策略在 vSphere 区域上可用

vSphere 命名空间

vSphere 命名空间 是置备了一个或多个 Tanzu Kubernetes Grid 集群的 主管 上的命名空间。对于每个 vSphere 命名空间,您可以配置基于角色的访问控制、持久存储、资源限制、映像库和虚拟机类。

TKG 服务

TKG 服务 是开源集群 API 项目的一种实现方式,它定义了一组自定义资源和控制器,可用于管理 Kubernetes 集群的生命周期。Tanzu Kubernetes Grid主管 的一个组件。

TKG 服务 包含三层控制器,用于管理 TKG 集群的生命周期,其中包括 虚拟机服务、集群 API 和云提供商插件。

虚拟机运算符
虚拟机服务 控制器提供了用于管理虚拟机和关联 vSphere 资源的声明性 Kubernetes 样式 API。 虚拟机服务 引入了表示抽象可重用硬件配置的虚拟机类的概念。 TKG 服务 使用 虚拟机服务 来管理托管工作负载集群的控制平面节点虚拟机和工作节点虚拟机的生命周期。
集群 API
集群 API 控制器为集群创建、配置和管理提供了声明性的 Kubernetes 样式 API。集群 API 的输入包括描述集群的资源、描述组成集群的虚拟机的一组资源以及描述集群加载项的一组资源。
云提供商插件
TKG 服务 用于置备包含与底层 vSphere 命名空间 资源集成所需组件的工作负载集群。这些组件包括与 主管 集成的云提供商插件。TKG 可通过云提供商插件将持久卷请求传递到与 VMware 云原生存储 (CNS) 集成的 主管

Tanzu Kubernetes 版本

Tanzu Kubernetes 版本 提供由 VMware 签名和支持的可与 Tanzu Kubernetes Grid 集群配合使用的 Kubernetes 软件分发版和加载项。

每个 Tanzu Kubernetes 版本 作为虚拟机模板(OVA 文件)进行分发。Tanzu Kubernetes Grid 使用 OVA 格式为 TKG 集群构建虚拟机节点。Tanzu Kubernetes 版本根据 Kubernetes 版本进行版本控制,它包含对 vSphere 基础架构进行的操作系统自定义和优化。

有关 Tanzu Kubernetes 版本列表以及与 主管 的兼容性,请参阅 Tanzu Kubernetes 发行说明。另请参见 vSphere IaaS control plane 支持策略

内容库

Tanzu Kubernetes 版本 可通过 vCenter 内容库提供给 TKG 集群。您可以创建已订阅内容库,并在 VMware 提供 TKR 时自动接收 TKR,或者使用本地内容库并手动上载 TKR。

TKG 服务 集群组件

TKG 服务 集群中运行的组件为产品的四个领域提供功能:身份验证、存储、网络连接和负载均衡。

身份验证 Webhook

身份验证 Webhook 作为 Pod 在集群内运行,用于验证用户身份验证令牌。

TKG 集群支持两种身份验证方式:使用 vCenter Single Sign-On 和使用支持 Open ID Connect (OIDC) 协议的外部身份提供程序。

TKG 在 主管 和 TKG 集群节点上运行 Pinniped OIDC 客户端。为 主管 配置外部 OIDC 提供程序时,会自动配置 Pinniped 组件。

TKG 支持通过多个客户端向 主管 进行身份验证,包括 kubectl 的 vSphere 插件 和 Tanzu CLI。

容器存储接口 (Container Storage Interface, CSI)

准虚拟 CSI 插件是一个在 TKG 集群内运行并通过 主管 与 VMware 云原生存储 (CNS) 集成的 Kubernetes Pod。在 TKG 集群中运行的 Kubernetes Pod 可以挂载三种类型的虚拟磁盘:临时、持久卷和容器映像。

暂时性存储

Pod 需要暂时性存储来存储临时数据,如日志、卷和配置映射等 Kubernetes 对象。只要 Pod 存在,暂时性存储即会持续。临时数据在容器重新启动后仍然存在,但删除 Pod 后,存储临时数据的虚拟磁盘便会消失。

持久存储

TKG 利用 vSphere 存储策略框架定义存储类和预留持久卷。TKG 集群会将持久卷请求传递到与 VMware 云原生存储 (CNS) 集成的 主管。可以使用存储类在集群节点上动态置备持久卷,也可以手动置备。

容器映像存储

Kubernetes Pod 中的容器使用包含待运行软件的映像。pod 会将其容器使用的映像挂载为映像虚拟磁盘。pod 的生命周期结束后,映像虚拟磁盘将从 pod 中分离。Kubelet 负责从映像注册表中提取容器映像,并将其转换为虚拟磁盘以在 Pod 内运行。

容器网络接口 (CNI)

容器网络接口插件是提供 Pod 网络连接的 CNI 插件。

TKG 集群支持以下容器网络接口 (CNI) 选项:Antrea(默认)和 Calico。此外,TKG 还提供了 Antrea NSX 路由 CNI 以实施可路由 Pod 网络。

下表汇总了 TKG 集群网络连接功能及其实施。

表 1. TKG 服务 集群网络连接
端点 提供程序 描述
Pod 连接 Antrea 或 Calico Pod 的容器网络接口。Antrea 使用 Open vSwitch。Calico 使用 Linux 网桥和 BGP。
服务类型:ClusterIP Antrea 或 Calico 只能从集群内访问的默认 Kubernetes 服务类型。
服务类型:NodePort Antrea 或 Calico 允许 Kubernetes 网络代理通过每个工作节点上打开的端口进行外部访问。
网络策略 Antrea 或 Calico 控制允许传入/传出所选 pod 和网络端点的流量。Antrea 使用 Open vSwitch。Calico 使用 Linux IP 表。
云提供商实施
云提供商实施支持创建 Kubernetes 负载均衡器和输入服务。
表 2. TKG 负载均衡
端点 提供程序 描述
服务类型:LoadBalancer

NSX 嵌入式负载均衡器(NSX 网络堆栈的一部分)

NSX Advanced Load Balancer(单独安装以与 VDS 网络连接配合使用)

HAProxy(单独安装以与 VDS 网络连接配合使用)

对于 NSX 嵌入式负载均衡器,每个服务类型定义对应一个虚拟服务器。

对于 NSX Advanced Load Balancer,请参阅本文的此相关部分。

对于 HAProxy,请参阅本文档的相应部分。

注: 某些负载均衡功能并非在每个受支持的负载均衡器类型(如静态 IP)上都可用。
集群输入 第三方输入控制器 为入站 Pod 流量提供路由。可以使用任何第三方输入控制器,如 Contour

TKG 服务 集群 API

TKG 服务 提供了两个 API,用于置备和管理 TKG 集群的生命周期。
  • Tanzu Kubernetes 集群的 API 版本 v1alpha3
  • 基于 ClusterClass 的集群 API 版本 v1beta1

通过 v1alpha3 API,您可以创建 TanzuKubernetesCluster 类型的合规 Kubernetes 集群。此类型的集群预配置了常用的默认值,以便于快速置备,同时,还可以进行自定义。通过 v1beta1 API,可以基于 VMware 提供的默认 ClusterClass 创建 Cluster 类型的合规 Kubernetes 集群。

注: 要将 vSphere IaaS control plane 从 vSphere 7 升级到 vSphere 8,TKG 集群必须运行 v1alpha2 API。 v1alpha2 API 在 v7.0 Update 3 中引入。v1alpha1 API 已弃用。有关详细信息,请参见

TKG 服务 集群客户端

vSphere 8 主管 上的 TKG 支持通过多个客户端接口置备、监控和管理 TKG 集群。
  • vSphere Client,可用于配置 主管 并监控已部署的 TKG 集群。
  • 使用 vCenter Single Sign-On 通过 主管 和 TKG 集群进行身份验证的 kubectl 的 vSphere 插件
  • kubectl,可用于以声明方式置备和管理 TKG 集群的生命周期,以及与 主管 交互。
  • 在容器注册表中推送和提取映像的 vSphere Docker Credential Helper
  • 用于通过命令置备集群并用于安装 Tanzu 软件包的 Tanzu CLI
  • 用于管理 TKG 集群的 Tanzu Mission Control Web 界面。