×

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 卷

动态配置 VMware vSphere 卷是推荐的方法。

先决条件

  • 在满足您使用的组件要求的 VMware vSphere 版本上安装的 OpenShift Container Platform 集群。有关 vSphere 版本支持的信息,请参见 在 vSphere 上安装集群

您可以使用以下任一过程来使用默认存储类动态配置这些卷。

使用 UI 动态配置 VMware vSphere 卷

OpenShift Container Platform 安装名为 thin 的默认存储类,该类使用 thin 磁盘格式配置卷。

先决条件
  • 在将存储作为卷安装到 OpenShift Container Platform 之前,存储必须存在于底层基础设施中。

步骤
  1. 在 OpenShift Container Platform 控制台中,单击存储持久卷声明

  2. 在持久卷声明概述中,单击创建持久卷声明

  3. 在结果页面上定义所需选项。

    1. 选择 thin 存储类。

    2. 输入存储声明的唯一名称。

    3. 选择访问模式以确定为创建的存储声明的读写访问权限。

    4. 定义存储声明的大小。

  4. 单击创建以创建持久卷声明并生成持久卷。

使用 CLI 动态配置 VMware vSphere 卷

OpenShift Container Platform 安装名为 thin 的默认 StorageClass,该类使用 thin 磁盘格式配置卷。

先决条件
  • 在将存储作为卷安装到 OpenShift Container Platform 之前,存储必须存在于底层基础设施中。

步骤 (CLI)
  1. 您可以通过创建一个包含以下内容的文件 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 持久卷声明的大小。
  2. 输入以下命令以从文件创建 PersistentVolumeClaim 对象

    $ oc create -f pvc.yaml

静态配置 VMware vSphere 卷

要静态配置 VMware vSphere 卷,必须创建虚拟机磁盘供持久卷框架参考。

先决条件
  • 在将存储作为卷安装到 OpenShift Container Platform 之前,存储必须存在于底层基础设施中。

步骤
  1. 创建虚拟机磁盘。在静态配置 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
  2. 创建一个引用 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 或其他文件系统。

    在卷格式化和配置后更改fsType参数的值可能导致数据丢失和 Pod 故障。

  3. 从文件创建PersistentVolume对象。

    $ oc create -f pv1.yaml
  4. 创建一个持久卷声明,该声明映射到您在上一步中创建的持久卷。创建一个名为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 现有持久卷的名称。
  5. 从文件创建PersistentVolumeClaim对象。

    $ oc create -f pvc1.yaml

格式化 VMware vSphere 卷

在 OpenShift Container Platform 挂载卷并将其传递给容器之前,它会检查卷是否包含由PersistentVolume (PV) 定义中的fsType参数值指定的文件系统。如果设备未格式化为该文件系统,则设备中的所有数据都将被擦除,并且设备将自动格式化为指定的文件系统。

因为 OpenShift Container Platform 会在第一次使用前对其进行格式化,所以您可以将未格式化的 vSphere 卷用作 PV。