vSphere 命名空间主管 上的一个限定网络范围的租户。vSphere 命名空间 用于托管 TKG 服务 集群,并提供网络连接、角色权限、持久存储、资源配额以及内容库和虚拟机类集成。

vSphere 命名空间 个网络

vSphere 命名空间 网络是从主管 > 工作负载网络 > 命名空间网络中获取的一个子网。命名空间子网前缀用于定义为每个 vSphere 命名空间 预留的子网的大小。默认值为 /28。

vSphere 命名空间 网络可为 TKG 集群提供与 主管 的连接。默认情况下,vSphere 命名空间 将使用集群级别的网络配置,并从其子网分配 IP 地址。创建 vSphere 命名空间 时,系统会将一个 /28 覆盖网络分段和对应的 IP 池实例化到该 vSphere 命名空间 中的服务 Pod。

vSphere 命名空间 中置备第一个 TKG 集群后,该 TKG 集群将与其 vSphere 命名空间 共用同一子网。对于此后在该 vSphere 命名空间 中置备的每个 TKG 集群,系统将为该集群创建一个新的子网,并将其连接到其 vSphere 命名空间 网关。

vSphere 命名空间 中有一个共享负载均衡器实例,负责将 kubectl 流量路由到每个 TKG 集群控制平面。此外,对于 TKG 集群上分配了资源的每个 Kubernetes 服务负载均衡器,系统将为该服务创建一个第 4 层负载均衡器实例。

同一 vSphere 命名空间 中的 TKG 集群共用一个 SNAT IP,以实现南北向连接。命名空间之间的东西向连接没有 SNAT。

vSphere 命名空间 通常不可路由。但是,如果使用的是 NSX 网络连接,则可以使用一个可路由的子网替代 vSphere 命名空间 网络。请参见覆盖 vSphere 命名空间 的工作负载网络设置

vSphere 命名空间 资源池

在单个 vSphere 区域 主管 部署中,创建 vSphere 命名空间 时,系统会创建一个支持该命名空间的资源池。vSphere 命名空间主管 上提供资源的逻辑单元,包括计算、存储、权限、类和映像。例如,在 vSphere 命名空间 上配置 CPU 或内存限制时,相同的资源限制将应用于支持该命名空间的资源池。这样,vSphere 命名空间 可在 主管 中启用多租户功能。

跨三个 vSphere 区域部署的 主管 也会获得相同的多租户体验。在区域化的 主管 上创建 vSphere 命名空间 时,系统会在支持该 主管 的每个 vSphere 集群中创建一个资源池。这样,可在属于该 主管 的任何区域中部署在该 vSphere 命名空间 中置备的 TKG 集群。

使用 vSphere Client,可以通过选择主机和集群视图查看 vSphere 命名空间 资源池和对象,也可以通过选择虚拟机和模板视图查看。置备 TKG 集群时,将在目标 vSphere 命名空间 中创建该集群。在区域化的 主管 部署中,每个 vSphere 集群中将具有相同的资源池。

vSphere 命名空间对象

TKG 服务 集群的 vSphere 命名空间 存储

vSphere Cloud Native Storage (CNS) 提供的存储策略支持置备持久卷及其支持虚拟磁盘,以将其用于 Kubernetes 工作负载。

容器存储接口 (CSI) 是 Kubernetes 用于为容器置备持久存储的行业标准。主管 可运行一个 CNS-CSI 驱动程序,该驱动程序通过 vSphere 命名空间 将 vSphere CNS 存储连接到 Kubernetes 环境。vSphere CNS-CSI 可直接与 CNS 控制平面进行通信,以处理来自 vSphere 命名空间 中 TKG 集群的所有存储置备请求。

TKG 集群运行已修改版本的 vSphere CNS-CSI 驱动程序,该驱动程序负责来自 TKG 集群的所有存储相关请求。这些请求将传送到 主管 中的 CNS-CSI,随后传播到 vCenter Server 中的 CNS。

下图显示了 vSphere 命名空间主管 和 TKG 集群存储机制之间的关系。

""

TKG 服务 集群的持久性存储卷

Kubernetes 中有状态应用程序需要持久卷。有关持久卷的详细信息,请参阅 Kubernetes 文档

在 vSphere 环境中,持久卷对象由位于数据存储上的虚拟磁盘提供支持。数据存储由存储策略表示。将 vSphere 存储策略分配给 vSphere 命名空间 时,存储策略将作为 Kubernetes 存储类提供给该命名空间中的每个 TKG 集群。

TKG 支持动态置备和静态置备持久卷。使用动态置备时,不需要预置备持久卷。您将发出引用 vSphere 命名空间 中可用存储类的持久卷声明 (PVC)。TKG 会自动置备相应的持久卷和支持虚拟磁盘。请参见动态创建持久存储卷

执行静态置备时,您将使用现有存储对象,并将其提供给集群。可以通过提供现有存储对象、其支持的配置和挂载选项的详细信息来定义持久卷。请参见静态创建持久存储卷

下图说明了动态持久卷置备工作流。您将在 TKG 集群上使用 kubectl 创建一个 PVC。此操作会在 主管 上生成匹配的 PVC,并触发会调用 CNS 创建卷 API 的 CNS-CSI 驱动程序。

""

TKG 服务 集群的存储类版本

要配置 vSphere 命名空间,需要分配一个或多个 vSphere 存储策略。应用 vSphere 存储策略后,该存储策略会转换为一个 Kubernetes 存储类,并在 主管 上进行复用。同样,TKG 控制器会在该 vSphere 命名空间 中部署的每个 TKG 集群上复用该存储类。

在 TKG 集群端,您将看到两个存储类版本:一个版本使用创建 vSphere 存储策略时指定的用户定义名称,另一个版本则会在该名称上附加 *-latebinding

在 TKG Pod 调度程序选择计算节点后,开发人员可以使用存储类的后期绑定版本绑定到持久存储卷。有关要使用的存储类以及何时使用的详细信息,请参见 对持久卷使用存储类
kubectl get sc
NAME                                    PROVISIONER              RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
wcpglobal-storage-profile               csi.vsphere.vmware.com   Delete          Immediate              true                   2m43s
wcpglobal-storage-profile-latebinding   csi.vsphere.vmware.com   Delete          WaitForFirstConsumer   true                   2m43s

vSphere 命名空间 创建

可以通过多种方法创建 vSphere 命名空间

管理员可以使用 vSphere Client 创建 vSphere 命名空间。请参见创建 vSphere 命名空间 以托管 TKG 服务 集群

授予了 vSphere 命名空间所有者角色权限的 vCenter Single Sign-On 用户可以使用 kubectl 以自助方式创建 vSphere 命名空间。请参见使用 Kubectl 启用 vSphere 命名空间 创建

VMware 公开了用于管理 vSphere 命名空间 生命周期的 vCenter Server API,并提供了软件开发工具包 (SDK),其中包括: