2.15. 使用 VMware vSphere 卷的持久性存储
OpenShift Container Platform 允许使用 VMware vSphere 的虚拟机磁盘 (VMDK) 卷。您可以使用 VMware vSphere 为 OpenShift Container Platform 集群置备持久性存储。我们假设您对 Kubernetes 和 VMware vSphere 已有一定了解。
VMware vSphere 卷可以动态置备。OpenShift Container Platform 在 vSphere 中创建磁盘,并将此磁盘附加到正确的镜像。
Kubernetes 持久性卷框架允许管理员提供带有持久性存储的集群,并使用户可以在不了解底层存储架构的情况下请求这些资源。
持久性卷不与某个特定项目或命名空间相关联,它们可以在 OpenShift Container Platform 集群间共享。持久性卷声明是针对某个项目或者命名空间的,相应的用户可请求它。
其他参考资源
2.15.1. 动态置备 VMware vSphere 卷
动态置备 VMware vSphere 卷是推荐的方法。
先决条件
- 在一个满足您使用的组件要求的 VMware vSphere 版本上安装了 OpenShift Container Platform 集群。有关 vSphere 版本支持的信息,请参阅 在 vSphere 上安装集群。
您可以通过以下任一流程使用默认的 StorageClass 动态置备这些卷。
2.15.1.1. 使用 UI 动态置备 VMware vSphere 卷
OpenShift Container Platform 安装了一个默认的 StorageClass,其名为 thin
,使用 thin
磁盘格式置备卷。
先决条件
- 当存储可以被挂载为 OpenShift Container Platform 中的卷之前,它必须已存在于底层的存储系统中。
流程
-
在 OpenShift Container Platform 控制台中,点击 Storage
Persistent Volume Claims。 - 在持久性卷声明概述页中,点 Create Persistent Volume Claim。
在接下来的页面中定义所需选项。
-
选择
thin
StorageClass。 - 输入存储声明的唯一名称。
- 选择访问模式来决定所创建存储声明的读写访问权限。
- 定义存储声明的大小。
-
选择
- 点击 Create,以创建 PersistentVolumeClaim 并生成一个 PersistentVolume。
2.15.1.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
2.15.2. 静态置备 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。使用 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
创建一个映射到您在前一步中创建的 PersistentVolume 的 PersistentVolumeClaim:创建包括 PVC 对象定义的一个
pv1.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
2.15.2.1. 格式化 VMware vSphere 卷
在 OpenShift Container Platform 挂载卷并将其传递给容器之前,它会检查卷是否包含由 PersistentVolume (PV) 定义中 fsType
参数值指定的文件系统。如果没有使用文件系统格式化设备,该设备中的所有数据都会被清除,设备也会自动格式化为指定的文件系统。
因为 OpenShift Container Platform 在首次使用卷前会进行格式化,所以您可以使用未格式化的 vSphere 卷作为 PV。