在 vSphere 集群上启用 vSphere with Tanzu 后,它会在 Hypervisor 层内创建一个 Kubernetes 控制平面。此层包含支持在 ESXi 中运行 Kubernetes 工作负载的特定对象。

图 1. 主管集群 常规架构
顶部具有 Tanzu Kubernetes Grid、中间有主管、底部有 ESXi、网络连接和存储的架构。vCenter Server 可管理它们。

vSphere with Tanzu 启用的集群称为 主管集群。它在 SDDC 层上运行,包含用于计算的 ESXi、NSX-T Data Center 或 vSphere 网络连接以及 vSAN 或其他共享存储解决方案。共享存储用于 vSphere Pod主管集群 中运行的虚拟机以及 Tanzu Kubernetes 集群中的 Pod 的持久卷。创建 主管集群 后,作为 vSphere 管理员,您可以在 主管集群 中创建命名空间,这种命名空间称为 vSphere 命名空间。作为 DevOps 工程师,您可以运行由 vSphere Pod 中运行的容器组成的工作负载,并创建 Tanzu Kubernetes 集群。

图 2. 主管集群的架构
主管集群的架构。
  • Kubernetes 控制平面虚拟机。在属于 主管集群 的主机上共创建了三个 Kubernetes 控制平面虚拟机。三个控制平面虚拟机已负载均衡,因为每个虚拟机都有自己的 IP 地址。此外,还会将一个浮动 IP 地址分配给其中一个虚拟机。vSphere DRS 确定控制平面虚拟机在 ESXi 主机上的确切放置位置,并在需要时进行迁移。vSphere DRS 还与控制平面虚拟机上的 Kubernetes 调度程序集成,以便 DRS 确定 vSphere Pod 的放置位置。作为 DevOps 工程师,当您调度 vSphere Pod 时,请求将通过常规 Kubernetes 工作流,然后进入 DRS,进而 DRS 做出最终的放置决策。
  • Spherelet。将在每个主机上创建一个名为 Spherelet 的额外进程。它是一种以本机方式传输到 ESXi 的 kubelet,允许 ESXi 主机加入 Kubernetes 集群。
  • Container Runtime Executive (CRX)。从 Hostd 和 vCenter Server 角度来看,CRX 与虚拟机类似。CRX 包括一个可与 Hypervisor 协同工作的准虚拟化 Linux 内核。CRX 使用与虚拟机相同的硬件虚拟化技术,且其周围具有虚拟机边界。使用直接引导技术,以允许 CRX 的 Linux 客户机在未通过内核初始化的情况下启动主初始化进程。这样可使 vSphere Pod 以近乎容器的速度引导。
  • 集群 API 和 VMware Tanzu™ Kubernetes Grid™ 服务 是在 主管集群 上运行的模块,可用于置备和管理 Tanzu Kubernetes 集群。虚拟机服务 模块负责部署和运行独立虚拟机和组成 Tanzu Kubernetes 集群的虚拟机。

vSphere 命名空间

vSphere 命名空间 设置使用 vSphere Pod 创建的 Tanzu KubernetesTanzu Kubernetes Grid 服务 集群可以运行的资源边界。最初创建命名空间时,它在 主管集群 内具有无限资源。作为 vSphere 管理员,您可以设置 CPU、内存、存储以及可在命名空间中运行的 Kubernetes 对象数量的限制。将为 vSphere中的每个命名空间创建一个资源池。存储限制在 Kubernetes 中表示为存储配额。

图 3. vSphere 命名空间
主管命名空间

为了向 DevOps 工程师提供对命名空间的访问权限,作为 vSphere 管理员,您可将权限分配给与 vCenter Single Sign-On 关联的标识源中的可用用户或用户组。

创建命名空间并为其配置资源和对象限制以及权限和存储策略后,作为 DevOps 工程师,您可以访问该命名空间以运行 Kubernetes 工作负载和使用 Tanzu Kubernetes Grid 服务 创建 Tanzu Kubernetes 集群。

Tanzu Kubernetes 集群

Tanzu Kubernetes 集群是由 VMware 打包、签名和支持的开源 Kubernetes 软件的完整分发版。在 vSphere with Tanzu 环境中,您可以使用 Tanzu Kubernetes Grid 服务主管集群 上置备 Tanzu Kubernetes 集群。您可以使用 kubectl 和 YAML 定义以声明方式调用 Tanzu Kubernetes Grid 服务 API。

Tanzu Kubernetes 集群驻留在 vSphere 命名空间 中。您可以使用与用于标准 Kubernetes 集群的相同工具,以相同的方式将工作负载和服务部署到 Tanzu Kubernetes 集群。
图 4. Tanzu Kubernetes 集群的 vSphere with Tanzu 架构
TKG 集群的架构。

配置了 vSphere 网络连接堆栈的 主管集群

配置了 vSphere 网络连接堆栈的 主管集群 仅支持运行使用 Tanzu Kubernetes Grid 服务 创建的 Tanzu Kubernetes 集群。该集群还支持 vSphere 网络服务 和存储服务。

配置了 vSphere 网络连接堆栈的 主管集群 不支持 vSphere Pod。因此,Spherelet 组件在此类 主管集群 中不可用且 Kubernetes pod 仅在 Tanzu Kubernetes 集群中运行。配置了 vSphere 网络连接堆栈的 主管集群 也不支持 Harbor 注册表,因为该服务只与 vSphere Pod 一起使用。

在配置了 vSphere 网络连接堆栈的集群上创建的 vSphere 命名空间 也不支持运行 vSphere Pod,而只支持 Tanzu Kubernetes 集群。