某些 Kubernetes 工作负载需要持久存储来永久存储数据。要为 Kubernetes 工作负载置备持久存储,vSphere with Tanzu 将与云原生存储 (CNS) 集成,云原生存储是一个管理永久卷的 vCenter Server 组件。
持久存储由 vSphere Pod、Tanzu Kubernetes 集群和虚拟机使用。以下示例说明了 vSphere Pod 如何使用持久存储。
要了解 vSphere with Tanzu 如何与持久存储配合使用,请熟悉以下基本概念。
- 持久卷
-
为了提供持久存储,Kubernetes 使用可保留其状态和数据的持久卷。如果持久卷由容器挂载,则即使删除或重新配置了该容器,这些卷也将继续存在。在 vSphere with Tanzu 环境中,由数据存储上的第一类磁盘为持久卷对象提供支持。
vSphere with Tanzu 支持在 ReadWriteOnce 模式下动态和静态置备卷,即可由单个容器挂载的卷。
从 vSphere 7.0 Update 3 版本开始,vSphere with Tanzu 还支持对 Tanzu Kubernetes 集群中的持久卷使用 ReadWriteMany 模式。借助 ReadWriteMany 支持,集群中运行的多个 pod 或应用程序可以同时挂载单个卷。vSphere with Tanzu 对 ReadWriteMany 类型的持久卷使用 vSAN 文件共享。有关详细信息,请参见在 vSphere with Tanzu 中创建 ReadWriteMany 持久卷。
- 动态和静态置备
-
执行动态卷置备时,不需要预置备存储,可以按需创建持久卷。DevOps 工程师会发出引用命名空间中可用存储类的持久卷声明。vSphere with Tanzu 会自动置备相应的持久卷和支持虚拟磁盘。
主管集群 和 Tanzu Kubernetes 集群都支持动态置备。
有关如何动态创建持久卷的示例,请参见为有状态应用程序置备动态持久卷。
- 第一类磁盘
-
vSphere with Tanzu 使用虚拟磁盘的第一类磁盘 (FCD) 类型支持持久卷。第一类磁盘(也称为增强型虚拟磁盘)是未与虚拟机关联的已命名虚拟磁盘。
第一类磁盘由 UUID 标识。该 UUID 为全局唯一,是 FCD 的主标识符。该 UUID 始终有效,即使其 FCD 被重定位或创建快照也是如此。
- 持久卷声明
-
DevOps 工程师可以创建持久卷声明以请求持久存储资源。请求会置备持久卷对象和匹配的虚拟磁盘。在 vSphere Client 中,持久卷声明显示为可由 vSphere 管理员监控的 FCD 虚拟磁盘。
- 存储类
-
Kubernetes 使用存储类描述为持久卷提供支持的存储的要求。DevOps 工程师可以在其持久卷声明规范中包含特定的存储类,以请求该类描述的存储类型。
持久存储工作流
在 vSphere with Tanzu 中置备持久存储的工作流通常包括以下连续操作。
步骤 |
操作 |
描述 |
---|---|---|
1 |
vSphere 管理员可为 DevOps 团队提供持久存储资源。 |
vSphere 管理员可创建用于描述不同存储要求和服务类的虚拟机存储策略。然后,他们可以将存储策略分配给 vSphere 命名空间。 |
2 |
vSphere with Tanzu 将创建与分配给 vSphere 命名空间 的存储策略相匹配的存储类。 |
存储类将自动显示在 Kubernetes 环境中,并可供 DevOps 团队使用。如果 vSphere 管理员将多个存储策略分配给 vSphere 命名空间,则会为每个存储策略创建一个单独的存储类。 如果使用 Tanzu Kubernetes Grid 服务 置备 Tanzu Kubernetes 集群,则每个 Tanzu Kubernetes 集群将从置备该集群的 vSphere 命名空间 中继承存储类。 |
3 |
DevOps 工程师使用存储类为工作负载请求持久存储资源。 |
该请求采用引用特定存储类的持久卷声明形式。 |
4 |
vSphere with Tanzu 为工作负载创建持久卷对象和匹配的持久虚拟磁盘。 |
vSphere with Tanzu 会将虚拟磁盘放入满足原始存储策略及其匹配的存储类中所指定要求的数据存储中。虚拟磁盘可由工作负载挂载。 |
5 |
vSphere 管理员在 vSphere with Tanzu 环境中监控持久卷。 |
vSphere 管理员使用 vSphere Client 监控持久卷及其支持虚拟磁盘。他们还可以监控持久卷的存储合规性和运行状况。 |
观看此视频,了解 vSphere with Tanzu 中的持久存储。
vSphere 管理员的存储管理任务
通常,vSphere with Tanzu 中的持久存储管理任务包括以下各项。作为 vSphere 管理员,您可以使用 vSphere Client 执行这些任务。
对虚拟机存储策略执行生命周期操作。
在启用 主管集群 并配置命名空间之前,为持久存储创建存储策略。存储策略将基于 DevOps 工程师向您传达的存储要求。请参见为 vSphere with Tanzu 创建存储策略。
注:在命名空间中运行具有相应存储类的持久卷声明时,请勿从 vCenter Server 或 vSphere 命名空间 中删除存储策略。此建议也适用于 Tanzu Kubernetes 集群。
通过将存储策略分配给命名空间以及设置存储限制,为 DevOps 工程师提供存储资源。有关更改存储策略分配的信息,请参见更改命名空间上的存储设置。有关设置限制的信息,请参见针对 vSphere 命名空间 中的 Kubernetes 对象配置限制。
在 vSphere Client 中监控 Kubernetes 对象及其存储策略合规性。请参见在 vSphere Client 中监控持久卷。
DevOps 工程师的存储管理任务
通常,DevOps 工程师使用 kubectl 执行以下存储任务。
部署和管理有状态应用程序。请参见为有状态应用程序置备动态持久卷。
对持久卷执行生命周期操作。Tanzu Kubernetes 持久卷声明示例。