4.9. 使用 NFS 的持久性存储


OpenShift Container Platform 集群可以使用 NFS 来置备持久性存储。持久性卷 (PV) 和持久性卷声明 (PVC) 提供了在项目间共享卷的方法。虽然 PV 定义中包含的与 NFS 相关的信息也可以直接在 Pod 中定义,但是这样做不会使创建的卷作为一个特定的集群资源,从而可能会导致卷冲突。

注意

in-tree NFS 置备程序不支持用户命名空间。

4.9.1. 置备

当存储可以被挂载为 OpenShift Container Platform 中的卷之前,它必须已存在于底层的存储系统中。要置备 NFS 卷,则需要一个 NFS 服务器和导出路径列表。

流程

  1. 为 PV 创建对象定义:

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: pv0001 
    1
    
    spec:
      capacity:
        storage: 5Gi 
    2
    
      accessModes:
      - ReadWriteOnce 
    3
    
      nfs: 
    4
    
        path: /tmp 
    5
    
        server: 172.17.0.2 
    6
    
      persistentVolumeReclaimPolicy: Retain 
    7
    1
    卷的名称。这是各个 oc <command> pod 命令中的 PV 标识。
    2
    为这个卷分配的存储量。
    3
    虽然这看上去象是设置对卷的访问控制,但它实际上被用作标签并用来将 PVC 与 PV 匹配。当前,还不能基于 accessModes 强制访问规则。
    4
    使用的卷类型,在这个示例里是 nfs 插件。
    5
    NFS 服务器导出的路径。
    6
    NFS 服务器的主机名或 IP 地址。
    7
    PV 的 reclaim 策略。它决定了在卷被释放后会发生什么。
    注意

    每个 NFS 卷都必须由集群中的所有可调度节点挂载。

  2. 确定创建了 PV:

    $ oc get pv

    输出示例

    NAME     LABELS    CAPACITY     ACCESSMODES   STATUS      CLAIM  REASON    AGE
    pv0001   <none>    5Gi          RWO           Available                    31s

  3. 创建绑定至新 PV 的持久性卷声明:

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: nfs-claim1
    spec:
      accessModes:
        - ReadWriteOnce 
    1
    
      resources:
        requests:
          storage: 5Gi 
    2
    
      volumeName: pv0001
      storageClassName: ""
    1
    访问模式不强制实施安全性,而是作为标签来将 PV 与 PVC 匹配。
    2
    此声明会寻找提供 5Gi 或更高容量的 PV。
  4. 确认创建了持久卷声明:

    $ oc get pvc

    输出示例

    NAME         STATUS   VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   AGE
    nfs-claim1   Bound    pv0001   5Gi        RWO                           2m

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

关于红帽文档

Legal Notice

Theme

© 2026 Red Hat
返回顶部