主管 组件、应用程序和工作负载需要存储和检索数据。某些应用程序和对象可能会使用暂时性快速存储,而其他应用程序和对象则需要持久存储。

关于存储策略

主管 使用存储策略与 vSphere 环境中的可用存储集成。策略代表数据存储并管理诸如控制平面虚拟机、vSphere Pod 临时磁盘和容器映像之类的组件和对象的存储放置。您可能还需要策略来放置持久卷和虚拟机内容库的存储。如果使用 Tanzu Kubernetes Grid 集群,则存储策略还会规定 Tanzu Kubernetes Grid 集群节点的部署方式。

存储策略支持环境中的任何共享数据存储,例如 VMFS、NFS、vSAN(包括 vSAN ESA 或 vVols)。

根据您的 vSphere 存储环境和 DevOps 的需求,您可以为不同存储类创建多个存储策略。启用 主管 并设置命名空间时,可以分配不同的存储策略以供各种对象、组件和工作负载使用。

例如,如果 vSphere Pod 挂载三种类型的虚拟磁盘,且 vSphere 存储环境包含三类数据存储(Bronze、Silver 和 Gold),则可以为所有数据存储创建存储策略。然后,可以对临时和容器映像虚拟磁盘使用 Bronze 数据存储,对持久卷虚拟磁盘使用 Silver 和 Gold 数据存储。

vSphere Pod 挂载三种类型的虚拟磁盘:持久卷虚拟磁盘、容器映像虚拟磁盘和临时虚拟磁盘。

有关创建存储策略的信息,请参见安装和配置 vSphere IaaS 控制平面文档中的创建存储策略

有关存储策略的常规信息,请参见《vSphere 存储》文档中的“基于存储策略的管理”一章。

主管 的存储策略

主管 级别,为 主管 控制平面虚拟机配置存储策略。此外,如果部署支持 vSphere Pod,则可以分配存储策略并指定临时磁盘和容器映像的数据存储位置。有关启用 主管 时设置存储的信息,请参见安装和配置 vSphere IaaS 控制平面文档。要更改存储设置,请参见更改主管上的存储设置

控制平面存储策略
此策略可确保将控制平面虚拟机放置在策略所代表的数据存储上。
临时虚拟磁盘
vSphere Pod 在操作过程中,需要使用临时存储将 Kubernetes 对象存储为日志、 emptyDir 卷和 ConfigMaps。此临时存储或暂时存储在 pod 存在期间将始终存在。临时数据在容器重新启动后仍然存在,但一旦 pod 寿命终止,临时虚拟磁盘便会消失。

每个 pod 都有一个临时虚拟磁盘。作为 vSphere 管理员,可以在为 主管 配置存储时,使用存储策略定义所有临时虚拟磁盘的数据存储位置。

容器映像虚拟磁盘
vSphere Pod 中的容器使用包含待运行软件的映像。pod 会将其容器使用的映像挂载为映像虚拟磁盘。pod 的生命周期结束后,映像虚拟磁盘将从 pod 中分离。

映像服务(ESXi 组件)负责从映像注册表中提取容器映像,并将其转换为虚拟磁盘以在 pod 内运行。

映像服务从映像注册表中提取容器映像并将其转换为要由 vSphere Pod 挂载的映像虚拟磁盘。

ESXi 可以缓存针对在 pod 中运行的容器下载的映像。使用此同一映像的后续 pod 将从本地缓存提取该映像,而不是从外部容器注册表提取。

工作负载的持久存储

DevOps 在命名空间上运行的某些 Kubernetes 工作负载需要持久存储来永久存储数据。

在命名空间上运行的 vSphere PodTanzu Kubernetes Grid 集群、虚拟机和其他工作负载可以使用持久存储。为使持久存储可供 DevOps 团队使用,vSphere 管理员将创建用于描述不同存储要求和服务类的存储策略。然后,管理员在命名空间级别分配存储策略并配置存储限制。

要了解 vSphere IaaS control plane 如何与持久存储配合使用,请熟悉存储类、持久卷和持久卷声明等基本 Kubernetes 概念。有关详细信息,请参见 https://kubernetes.io/docs/home/ 上的 Kubernetes 文档。

要了解 Tanzu Kubernetes Grid 集群的持久存储,请参见 Tanzu Kubernetes Grid 集群的存储

有关使用持久存储的信息,请参见vSphere IaaS 控制平面服务和工作负载文档中的对工作负载使用持久存储

如果 DevOps 团队计划部署使用 vSAN Direct 来满足其持久存储需求的第三方服务,请参见vSphere IaaS 控制平面服务和工作负载文档中的在 vSphere with Taznu 中启用有状态服务

主管 如何与 vSphere 存储集成

主管 使用多个组件与 vSphere 存储进行集成。

CNS 显示为 vCenter Server 组件,CNS-CSI 显示为 主管 组件。两者将进行交互以创建持久卷和备用 FCD。

vCenter Server 上的云原生存储 (CNS)
CNS 组件驻留在 vCenter Server 中。它是 vCenter Server 管理的扩展,用于执行持久卷的置备和生命周期操作。
置备持久卷时,该组件会与 vSphere 第一类磁盘功能交互,以创建支持卷的虚拟磁盘。此外,CNS 服务器组件与基于存储策略的管理进行通信,以保证磁盘的所需服务级别。
CNS 还会执行查询操作,以便允许 vSphere 管理员通过 vCenter Server 管理和监控持久卷及其备用存储对象。
第一类磁盘 (FCD)
也称为改进的虚拟磁盘。这些磁盘驻留在数据存储上,并支持 ReadWriteOnce 持久卷。
使用 FCD 时,请注意以下事项:
  • FCD 不支持 NFS 4.x 协议。请改为使用 NFS 3。
  • vCenter Server 不对同一 FCD 上的操作进行序列化。因此,应用程序无法同时在同一 FCD 上执行操作。从不同的线程同时执行克隆、重新放置、删除、检索等操作会导致不可预知的结果。为避免出现问题,应用程序必须按顺序在同一 FCD 上执行操作。
  • FCD 不是受管对象,不支持保护单个 FCD 的多个写入的全局锁定。因此,FCD 不支持多个 vCenter Server 实例管理同一个 FCD。如果需要将多个 vCenter Server 实例与 FCD 配合使用,可以使用以下选项:
    • 多个 vCenter Server 实例可以管理不同的数据存储。
    • 多个 vCenter Server 实例不能在同一个 FCD 上操作。
基于存储策略的管理
基于存储策略的管理是一种 vCenter Server 服务,它支持根据存储策略中所述的存储要求置备持久卷及其备用虚拟磁盘。置备后,服务会监控具有存储策略特性的卷的合规性。有关基于存储策略的管理的详细信息,请参见 《vSphere 存储》文档中的 “基于存储策略的管理”一章。
vSphere CNS-CSI
vSphere CNS-CSI 组件符合容器存储接口 (CSI) 规范,这是一种旨在提供供容器 Orchestrator(如 Kubernetes)用于置备持久存储的接口的行业标准。CNS-CSI 驱动程序在 主管 中运行,并将 vSphere 存储连接到某个命名空间上的 Kubernetes 环境。对于源自该命名空间的所有存储置备请求,vSphere CNS-CSI 直接与 CNS 组件通信。

vSphere CNS-CSI 支持的功能

主管 中运行的 vSphere CNS-CSI 组件支持多项 vSphere 和 Kubernetes 存储功能。但是,存在一定的限制。

支持的功能 主管 中的 vSphere CNS-CSI
vSphere Client 中的 CNS 支持
vSphere Client 中的增强型对象运行状况 是(仅限 vSAN)
动态块持久卷(ReadWriteOnce 访问模式)
动态文件持久卷(ReadWriteMany 访问模式)
vSphere 数据存储 VMFS、NFS、vSAN(包括 vSAN ESA)、vVol
静态持久卷
加密
脱机卷扩展
联机卷扩展
卷拓扑和区域 是。卷只能由 Tanzu Kubernetes Grid 集群使用。
Kubernetes 多个控制平面实例
WaitForFirstConsumer
VolumeHealth
使用持久卷执行 Storage vMotion

持久存储和具有 vSphere 区域的 主管

三区域 主管 支持区域存储,即数据存储在单个区域中的所有主机之间共享。

单个区域中的所有主机共享一个数据存储。

为三区域 主管 准备存储资源时,请记住以下注意事项:
  • 所有三个区域中的存储不需要为同一类型。但是,在所有三个集群中使用统一的存储可提供一致的性能。
  • 对于三区域 主管 上的命名空间,在每个集群中使用符合共享存储要求的存储策略。存储策略必须能够识别拓扑。
  • 将存储策略分配给命名空间后,不要从该策略中移除拓扑限制。
  • 不要在其他区域上挂载区域数据存储。
  • 三区域 主管 不支持以下各项:
    • 跨区域卷
    • vSAN 文件卷 (ReadWriteMany Volumes)
    • 使用注册卷 API 置备静态卷
    • 使用 vSAN 数据持久性 平台的工作负载
    • vSphere Pod
    • vSAN 延伸集群
    • 具有 vGPU 和实例存储的虚拟机

有关详细信息,请参见vSphere IaaS 控制平面服务和工作负载文档中的在三区域主管上使用持久存储