4.11. 使用 VMware vSphere 卷的持久性存储
OpenShift Container Platform 允许使用 VMware vSphere 的虚拟机磁盘 (VMDK) 卷。您可以使用 VMware vSphere 为 OpenShift Container Platform 集群置备持久性存储。我们假设您对 Kubernetes 和 VMware vSphere 已有一定了解。
VMware vSphere 卷可以动态置备。OpenShift Container Platform 在 vSphere 中创建磁盘,并将此磁盘附加到正确的镜像。
OpenShift Container Platform 将新卷置备为独立持久性卷,它们可以在集群中的任何节点上自由附加和分离卷。因此,您无法备份使用快照的卷,或者从快照中恢复卷。如需更多信息 ,请参阅快照限制。
Kubernetes 持久性卷框架允许管理员提供带有持久性存储的集群,并使用户可以在不了解底层存储架构的情况下请求这些资源。
持久性卷不与某个特定项目或命名空间相关联,它们可以在 OpenShift Container Platform 集群间共享。持久性卷声明是针对某个项目或者命名空间的,相应的用户可请求它。
对于新安装,OpenShift Container Platform 4.13 及更新的版本为 vSphere in-tree 卷插件提供自动迁移到对应的 CSI 驱动程序。更新至 OpenShift Container Platform 4.15 及更新的版本还提供自动迁移。有关更新和迁移的更多信息,请参阅 CSI 自动迁移。
CSI 自动迁移应该可以无缝进行。迁移不会改变您使用所有现有 API 对象的方式,如持久性卷、持久性卷声明和存储类。
其他资源
4.11.1. 动态置备 VMware vSphere 卷
动态置备 VMware vSphere 卷是推荐的方法。
4.11.2. 先决条件
- 在一个满足您使用的组件要求的 VMware vSphere 版本上安装了 OpenShift Container Platform 集群。有关 vSphere 版本支持的信息,请参阅在 vSphere 上安装集群。
您可以通过以下任一流程使用默认的存储类动态置备这些卷。
4.11.2.1. 使用 UI 动态置备 VMware vSphere 卷
OpenShift Container Platform 安装了一个默认的存储类,其名为 thin
,使用 thin
磁盘格式置备卷。
先决条件
- 当存储可以被挂载为 OpenShift Container Platform 中的卷之前,它必须已存在于底层的存储系统中。
流程
-
在 OpenShift Container Platform 控制台中,点击 Storage
Persistent Volume Claims。 - 在持久性卷声明概述页中,点 Create Persistent Volume Claim。
在接下来的页面中定义所需选项。
-
选择
thin
存储类。 - 输入存储声明的唯一名称。
- 选择访问模式来决定所创建存储声明的读写访问权限。
- 定义存储声明的大小。
-
选择
- 点击 Create 创建持久性卷声明,并生成一个持久性卷。
4.11.2.2. 使用 CLI 动态置备 VMware vSphere 卷
OpenShift Container Platform 安装了一个默认的 StorageClass,其名为 thin
,使用 thin
磁盘格式置备卷。
先决条件
- 当存储可以被挂载为 OpenShift Container Platform 中的卷之前,它必须已存在于底层的存储系统中。
流程 (CLI)
您可以通过创建一个包含以下内容的
pvc.yaml
文件来定义 VMware vSphere PersistentVolumeClaim:kind: PersistentVolumeClaim apiVersion: v1 metadata: name: pvc 1 spec: accessModes: - ReadWriteOnce 2 resources: requests: storage: 1Gi 3
输入以下命令从文件创建
PersistentVolumeClaim
对象:$ oc create -f pvc.yaml
4.11.3. 静态置备 VMware vSphere 卷
要静态置备 VMware vSphere 卷,您必须创建虚拟机磁盘供持久性卷框架引用。
先决条件
- 当存储可以被挂载为 OpenShift Container Platform 中的卷之前,它必须已存在于底层的存储系统中。
流程
创建虚拟机磁盘。在静态置备 VMware vSphere 卷前,必须手动创建虚拟机磁盘 (VMDK)。可使用以下任一方法:
使用
vmkfstools
创建。通过 Secure Shel (SSH) 访问 ESX,然后使用以下命令创建 VMDK 卷:$ vmkfstools -c <size> /vmfs/volumes/<datastore-name>/volumes/<disk-name>.vmdk
使用
vmware-diskmanager
创建:$ shell vmware-vdiskmanager -c -t 0 -s <size> -a lsilogic <disk-name>.vmdk
创建引用 VMDK 的持久性卷。创建包含
PersistentVolume
对象定义的pv1.yaml
文件:apiVersion: v1 kind: PersistentVolume metadata: name: pv1 1 spec: capacity: storage: 1Gi 2 accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain vsphereVolume: 3 volumePath: "[datastore1] volumes/myDisk" 4 fsType: ext4 5
重要在格式化并置备卷后更改 fsType 参数的值可能会导致数据丢失和 pod 故障。
从文件创建
PersistentVolume
对象:$ oc create -f pv1.yaml
创建一个映射到您在上一步中创建的持久性卷声明。创建包含
PersistentVolumeClaim
对象定义的pvc1.yaml
文件:apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc1 1 spec: accessModes: - ReadWriteOnce 2 resources: requests: storage: "1Gi" 3 volumeName: pv1 4
从文件创建
PersistentVolumeClaim
对象:$ oc create -f pvc1.yaml
4.11.3.1. 格式化 VMware vSphere 卷
在 OpenShift Container Platform 挂载卷并将其传递给容器之前,它会检查卷是否包含由 PersistentVolume
(PV)定义中 fsType
参数值指定的文件系统。如果没有使用文件系统格式化设备,该设备中的所有数据都会被清除,设备也会自动格式化为指定的文件系统。
因为 OpenShift Container Platform 在首次使用卷前会进行格式化,所以您可以使用未格式化的 vSphere 卷作为 PV。