Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

27.5.2.2. 创建持久性卷

开发人员通过引用 PVC 或容器集规格的 volumes 部分中的 Gluster 卷插件来请求 Ceph RBD 存储。PVC 只在用户的命名空间中存在,且只能被同一命名空间中的 pod 引用。尝试从不同命名空间中访问 PV 会导致 pod 失败。

  1. 在 OpenShift Container Platform 中创建前,在对象定义中定义 PV:

    例 27.3. 使用 Ceph RBD 的持久性卷对象定义

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: ceph-pv 1
    spec:
      capacity:
        storage: 2Gi 2
      accessModes:
        - ReadWriteOnce 3
      rbd: 4
        monitors: 5
          - 192.168.122.133:6789
        pool: rbd
        image: ceph-image
        user: admin
        secretRef:
          name: ceph-secret 6
        fsType: ext4 7
        readOnly: false
      persistentVolumeReclaimPolicy: Retain
    1
    在 pod 定义中引用的 PV 名称,或者在各种 oc volume 命令中显示。
    2
    为这个卷分配的存储量。
    3
    accessModes 用作标签,以匹配 PV 和 PVC。它们目前没有定义任何形式的访问控制。所有块存储都是定义为单个用户(非共享存储)。
    4
    使用的卷类型,本例中为 rbd 插件。
    5
    Ceph 监视器 IP 地址和端口的数组。
    6
    用于创建从 OpenShift Container Platform 到 Ceph 服务器的安全连接的 Ceph secret。
    7
    挂载到 Ceph RBD 块设备上的文件系统类型。
    重要

    在卷被格式化并置备后,修改 fstype 参数的值会导致数据丢失和 pod 失败。

  2. 将定义保存到文件中,如 ceph-pv.yaml 并创建 PV:

    # oc create -f ceph-pv.yaml
  3. 验证持久性卷是否已创建:

    # oc get pv
    NAME                     LABELS    CAPACITY     ACCESSMODES   STATUS      CLAIM     REASON    AGE
    ceph-pv                  <none>    2147483648   RWO           Available                       2s
  4. 创建一个 PVC,它将绑定到新 PV:

    例 27.4. PVC 对象定义

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: ceph-claim
    spec:
      accessModes: 1
        - ReadWriteOnce
      resources:
        requests:
          storage: 2Gi 2
    1
    accessModes 没有被强制访问,而是作为标签来把一个 PV 与 PVC 匹配。
    2
    这个声明会寻找提供 2Gi 或更高容量的 PV。
  5. 将定义保存到文件中,如 ceph-claim.yaml 并创建 PVC:

    # oc create -f ceph-claim.yaml