Menu Close

4.10.3. 在没有 Local Storage Operator 的情况下置备本地卷

无法通过动态置备来创建本地卷。反之,可以通过在对象定义中定义持久性卷(PV)来创建持久性卷。本地卷置备程序会在定义的资源中指定的路径上查找任意文件系统或块设备。

重要

手动置备 PV 的风险包括在删除 PVC 时,在 PV 间可能会出现数据泄漏的问题。建议在置备本地 PV 时自动执行 Local Storage Operator。

先决条件

  • 本地磁盘已附加到 OpenShift Container Platform 节点。

流程

  1. 定义 PV。使用 PersistentVolume 对象定义创建一个文件,如 example-pv-filesystem.yamlexample-pv-block.yaml。此资源必须定义本地卷的节点和路径。

    注意

    不要在同一设备中使用不同的存储类名称。这将会创建多个 PV。

    example-pv-filesystem.yaml

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: example-pv-filesystem
    spec:
      capacity:
        storage: 100Gi
      volumeMode: Filesystem 1
      accessModes:
      - ReadWriteOnce
      persistentVolumeReclaimPolicy: Delete
      storageClassName: local-storage 2
      local:
        path: /dev/xvdf 3
      nodeAffinity:
        required:
          nodeSelectorTerms:
          - matchExpressions:
            - key: kubernetes.io/hostname
              operator: In
              values:
              - example-node

    1
    定义 PV 类型的卷模式,可以是 FilesystemBlock
    2
    创建 PV 资源时使用的存储类的名称。使用唯一标识此 PV 的存储类。
    3
    包含要从中选择的本地存储设备列表的路径。
    注意

    原始块卷(volumeMode: block)不能以文件系统格式化。仅在 pod 上运行的任何应用程序都可以使用原始块设备时使用此模式。

    example-pv-block.yaml

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: example-pv-block
    spec:
      capacity:
        storage: 100Gi
      volumeMode: Block 1
      accessModes:
      - ReadWriteOnce
      persistentVolumeReclaimPolicy: Delete
      storageClassName: local-storage 2
      local:
        path: /dev/xvdf 3
      nodeAffinity:
        required:
          nodeSelectorTerms:
          - matchExpressions:
            - key: kubernetes.io/hostname
              operator: In
              values:
              - example-node

    1
    定义 PV 类型的卷模式,可以是 FilesystemBlock
    2
    创建 PV 资源时使用的存储类的名称。确保使用唯一标识此 PV 的存储类。
    3
    包含要从中选择的本地存储设备列表的路径。
  2. 在 OpenShift Container Platform 集群中创建 PV 资源。指定您刚才创建的文件:

    $ oc create -f <example-pv>.yaml
  3. 验证是否已创建本地 PV:

    $ oc get pv

    输出示例

    NAME                    CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM                STORAGECLASS    REASON   AGE
    example-pv-filesystem   100Gi      RWO            Delete           Available                        local-storage            3m47s
    example-pv1             1Gi        RWO            Delete           Bound       local-storage/pvc1   local-storage            12h
    example-pv2             1Gi        RWO            Delete           Bound       local-storage/pvc2   local-storage            12h
    example-pv3             1Gi        RWO            Delete           Bound       local-storage/pvc3   local-storage            12h