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 集群中将具有相同的资源池。
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
。
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 命名空间 创建。
- 命名空间管理 API 提供基于 REST 的资源来管理 vSphere 命名空间。
- 命名空间 API 提供基于 REST 的资源来管理 vSphere 命名空间 上的主体访问控制。
- vSphere Automation SDK for Java 提供了多个用于自动执行 vSphere 命名空间 的创建和生命周期管理的软件包。
- 同样,vSphere Automation SDK for Python 也提供了多个用于自动执行 vSphere 命名空间 的创建和生命周期管理的软件包。