kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: pvc (1)
spec:
accessModes:
- ReadWriteOnce (2)
resources:
requests:
storage: 1Gi (3)
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 内置卷插件到其等效 CSI 驱动程序提供了自动迁移。更新到 OpenShift Container Platform 4.15 及更高版本也提供自动迁移。有关更新和迁移的更多信息,请参见 CSI 自动迁移。 CSI 自动迁移应该无缝进行。迁移不会更改您使用所有现有 API 对象的方式,例如持久卷、持久卷声明和存储类。 |
在满足您使用的组件要求的 VMware vSphere 版本上安装的 OpenShift Container Platform 集群。有关 vSphere 版本支持的信息,请参见 在 vSphere 上安装集群。
您可以使用以下任一过程来使用默认存储类动态配置这些卷。
OpenShift Container Platform 安装名为 thin
的默认存储类,该类使用 thin
磁盘格式配置卷。
在将存储作为卷安装到 OpenShift Container Platform 之前,存储必须存在于底层基础设施中。
在 OpenShift Container Platform 控制台中,单击存储 → 持久卷声明。
在持久卷声明概述中,单击创建持久卷声明。
在结果页面上定义所需选项。
选择 thin
存储类。
输入存储声明的唯一名称。
选择访问模式以确定为创建的存储声明的读写访问权限。
定义存储声明的大小。
单击创建以创建持久卷声明并生成持久卷。
OpenShift Container Platform 安装名为 thin
的默认 StorageClass,该类使用 thin
磁盘格式配置卷。
在将存储作为卷安装到 OpenShift Container Platform 之前,存储必须存在于底层基础设施中。
您可以通过创建一个包含以下内容的文件 pvc.yaml
来定义 VMware vSphere PersistentVolumeClaim
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: pvc (1)
spec:
accessModes:
- ReadWriteOnce (2)
resources:
requests:
storage: 1Gi (3)
1 | 代表持久卷声明的唯一名称。 |
2 | 持久卷声明的访问模式。使用 ReadWriteOnce ,可以由单个节点以读写权限挂载卷。 |
3 | 持久卷声明的大小。 |
输入以下命令以从文件创建 PersistentVolumeClaim
对象
$ oc create -f pvc.yaml
要静态配置 VMware vSphere 卷,必须创建虚拟机磁盘供持久卷框架参考。
在将存储作为卷安装到 OpenShift Container Platform 之前,存储必须存在于底层基础设施中。
创建虚拟机磁盘。在静态配置 VMware vSphere 卷之前,必须手动创建虚拟机磁盘 (VMDK)。可以使用以下任一方法:
使用vmkfstools
创建。通过安全 Shell (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 的持久卷。创建一个名为pv1.yaml
的文件,其中包含PersistentVolume
对象的定义。
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)
1 | 卷的名称。持久卷声明或 Pod 通过此名称识别它。 |
2 | 分配给此卷的存储量。 |
3 | 使用的卷类型,对于 vSphere 卷使用vsphereVolume 。此标签用于将 vSphere VMDK 卷挂载到 Pod 中。卸载卷时,卷的内容将被保留。该卷类型支持 VMFS 和 VSAN 数据存储。 |
4 | 要使用的现有 VMDK 卷。如果您使用的是vmkfstools ,则必须在卷定义中将数据存储名称用方括号[] 括起来,如前所示。 |
5 | 要挂载的文件系统类型。例如,ext4、xfs 或其他文件系统。 |
在卷格式化和配置后更改 |
从文件创建PersistentVolume
对象。
$ oc create -f pv1.yaml
创建一个持久卷声明,该声明映射到您在上一步中创建的持久卷。创建一个名为pvc1.yaml
的文件,其中包含PersistentVolumeClaim
对象的定义。
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc1 (1)
spec:
accessModes:
- ReadWriteOnce (2)
resources:
requests:
storage: "1Gi" (3)
volumeName: pv1 (4)
1 | 代表持久卷声明的唯一名称。 |
2 | 持久卷声明的访问模式。使用 ReadWriteOnce,卷可以被单个节点以读写权限挂载。 |
3 | 持久卷声明的大小。 |
4 | 现有持久卷的名称。 |
从文件创建PersistentVolumeClaim
对象。
$ oc create -f pvc1.yaml