|
本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。 |
VMware vSphere 存储
为了为有状态工作负载提供 VMware vSphere 存储,我们建议创建一个 vSphereVolume 存储类。当工作负载通过 PersistentVolumeClaim 请求卷时,此操作会动态配置 vSphere 存储。
为了在 vSphere 中动态配置存储,必须启用 vSphere 提供程序。有关更多信息,请参见以下页面:Out-of-tree vSphere 和 in-tree vSphere。
先决条件
为了在使用 RKE2 创建的集群中配置 vSphere 卷,必须在 集群选项 中显式启用 vSphere 云提供程序。
创建 StorageClass
|
以下步骤也可以使用 |
-
单击 ☰ > 集群管理。
-
选择您要提供 vSphere 存储的集群,然后单击 探索。
-
在左侧导航栏中,选择 。
-
单击*创建*。
-
为存储类输入一个 名称。
-
在 提供者 下,选择 VMWare vSphere 卷。
-
可选地,在 参数 下为此存储类指定其他属性。有关详细信息,请参阅 vSphere 存储文档。
-
单击*创建*。
使用 VMware vSphere 卷创建工作负载
-
在左侧导航栏中,点击 工作负载。
-
单击*创建*。
-
点击 StatefulSet。
-
在 卷声明模板 标签中,点击 添加声明模板。
-
输入持久卷名称。
-
在存储类字段中,选择您创建的 vSphere 存储类。
-
输入卷所需的 容量。然后点击 定义。
-
在 安装点 字段中分配一个路径。这是卷将在容器文件系统中挂载的完整路径,例如
/persistent。 -
单击*创建*。
验证卷的持久性
-
在左侧导航栏中,点击 。
-
转到您刚创建的工作负载,点击 ⋮ > 执行 Shell。
-
注意卷挂载到的根目录(在这种情况下是
/persistent)。 -
通过执行命令
touch /<volumeMountPoint>/data.txt在卷中创建一个文件。 -
关闭外壳窗口。
-
点击工作负载的名称以显示详细信息。
-
点击 ⋮ > 删除。
-
观察到 pod 被删除。然后调度一个新的 pod 来替换它,以便工作负载保持其配置的单个有状态 pod 的规模。
-
一旦替换 pod 正在运行,点击 执行 Shell。
-
通过输入
ls -l /<volumeMountPoint>检查挂载卷的目录内容。请注意,您之前创建的文件仍然存在。
为什么要使用 StatefulSets 而不是 Deployments
对于消耗 vSphere 存储的工作负载,您应该始终使用 StatefulSets,因为此资源类型旨在解决 VMDK 块存储的缺陷。
由于 vSphere 卷是由 VMDK 块存储支持的,因此它们仅支持 访问模式 为 ReadWriteOnce。此设置限制卷只能一次挂载到单个 pod,除非所有消耗该卷的 pod 都位于同一节点上。这种行为使得如果消耗 vSphere 卷,部署资源在扩展到单个副本以上时变得不可用。
即使使用仅有一个副本的部署资源,在更新部署时也可能导致死锁情况。如果更新的 pod 被调度到与现有 pod 不同的节点上,它将无法启动,因为 VMDK 仍然附加在另一个节点上。