可以使用 vSphere with Tanzu 将 vSphere 转换为在 Hypervisor 层上以本机方式运行 Kubernetes 工作负载的平台。在 vSphere 集群上启用 vSphere with Tanzu 后,可直接在 ESXi 主机上运行 Kubernetes 工作负载,并可在专用资源池中创建上游 Kubernetes 集群。

当今应用体系的挑战

如今的分布式系统由多个通常运行大量 Kubernetes Pod 和虚拟机的微服务构成。不以 vSphere with Tanzu 为基础的典型堆栈包含一个底层虚拟环境,其中,Kubernetes 基础架构部署在虚拟机内,Kubernetes pod 也分别运行在这些虚拟机中。有三个单独的角色分别控制该体系的每个部分,即应用程序开发人员、Kubernetes 集群管理员和 vSphere 管理员。

图 1. 当今的应用体系
具有 3 层的堆栈 - Kubernetes 工作负载、Kubernetes 集群、虚拟环境。管理它们的角色有 3 个 - 开发人员、集群管理员、vSphere 管理员。
不同角色无法看到或控制其他角色的环境:
  • 作为应用程序开发人员,您可以运行 Kubernetes pod,并部署和管理基于 Kubernetes 的应用程序。您看不到运行数百个应用程序的整个体系。
  • 作为 DevOps 工程师,您只能控制 Kubernetes 基础架构,没有任何工具可以管理或监控虚拟环境和解决与资源相关的任何问题以及其他问题。
  • 作为 vSphere 管理员,您对底层虚拟环境具有完全控制权,但看不到 Kubernetes 基础架构、虚拟环境中不同 Kubernetes 对象的位置以及它们使用资源的方式。

整个堆栈上的操作可能会非常困难,因为这些操作需要所有三个角色之间进行通信。堆栈的不同层之间缺乏集成,这也可能带来难题。例如,Kubernetes 调度程序无法查看 vCenter Server 清单,并且无法智能地放置容器。

vSphere with Tanzu 如何提供帮助?

vSphere with Tanzu 直接在 Hypervisor 层上创建 Kubernetes 控制平面。作为 vSphere 管理员,您可以为现有 vSphere 集群启用工作负载管理,从而在属于该集群的 ESXi 主机中创建 Kubernetes 层。启用了工作负载管理的集群称为 主管集群

图 2. vSphere with Tanzu

具有工作负载的 vSphere with Tanzu 堆栈位于顶部,虚拟环境堆栈位于底部。管理它们的角色有两个:开发人员和 vSphere 管理员。
在 Hypervisor 层上具有 Kubernetes 控制平面后,可以在 vSphere 中启用以下功能:
  • 作为 vSphere 管理员,您可以在 主管集群 上创建命名空间(称为 vSphere 命名空间),然后为其配置特定的内存量、CPU 和存储量。您可将 vSphere 命名空间 提供给 DevOps 工程师。
  • 作为 DevOps 工程师,您可以使用 vSphere 命名空间 内的共享资源池在同一平台上运行包含 Kubernetes 容器的工作负载。在 vSphere with Tanzu 中,容器在称为 vSphere Pod 的特殊类型的虚拟机中运行。您还可以部署常规虚拟机。
  • 作为 DevOps 工程师,您可以在命名空间中创建和管理多个 Kubernetes 集群,并使用 Tanzu Kubernetes Grid 服务 管理其生命周期。使用 Tanzu Kubernetes Grid 服务 创建的 Kubernetes 集群称为 Tanzu Kubernetes 集群。
  • 作为 vSphere 管理员,您可以使用 vSphere Client 管理和监控 vSphere Pod、虚拟机和 Tanzu Kubernetes 集群。
  • 作为 vSphere 管理员,您可以全面了解在不同命名空间中运行的 vSphere Pod、虚拟机和 Tanzu Kubernetes 集群、它们在环境中的放置以及它们使用资源的情况。

通过在 Hypervisor 层上运行 Kubernetes,还可以简化 vSphere 管理员和 DevOps 工程师之间的协作,因为这两个角色使用相同的对象。

什么是工作负载?

vSphere with Tanzu 中,工作负载是通过以下方式之一部署的应用程序:

  • 由在 vSphere Pod 和/或常规虚拟机内运行的容器组成的应用程序。
  • 使用 VMware Tanzu™ Kubernetes Grid™ 服务 部署的 Tanzu Kubernetes 集群。
  • 在使用 VMware Tanzu™ Kubernetes Grid™ 服务 部署的 Tanzu Kubernetes 集群内运行的应用程序。