4.9. 使用 NFS 的持久性存储


您可以使用 NFS 为 OpenShift Container Platform 集群置备持久性存储。

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

注意

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

4.9.1. 使用 NFS 置备持久性存储

您可以通过创建引用 NFS 服务器和导出路径的持久性卷(PV)和持久性卷声明(PVC)对象来为 OpenShift Container Platform 置备持久性存储。

先决条件

  • 底层基础架构中提供了 NFS 存储,并配置了适当的导出路径。

流程

  1. 为 PV 创建对象定义:

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: pv0001
    spec:
      capacity:
        storage: 5Gi
      accessModes:
      - ReadWriteOnce
      nfs:
        path: /tmp
        server: 172.17.0.2
      persistentVolumeReclaimPolicy: Retain

    其中:

    metadata.name
    指定卷的名称。这是各个 oc 命令中的 PV 标识。
    spec.capacity.storage
    指定分配给这个卷的存储量。
    spec.accessModes.ReadWriteOnce
    虽然这看上去象是设置对卷的访问控制,但它实际上被用作标签并用来将 PVC 与 PV 匹配。当前,还不能基于 accessModes 强制访问规则。
    spec.NFS
    指定要使用的卷类型,在这个示例中是 nfs 插件。
    spec.nfs.path
    指定 NFS 服务器导出的路径。
    spec.nfs.server
    指定 NFS 服务器的主机名或 IP 地址。
    spec.persistentVolumeReclaimPolicy

    指定 PV 的重新声明策略。它决定了在卷被释放后会发生什么。

    注意

    每个 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
      resources:
        requests:
          storage: 5Gi
      volumeName: pv0001
      storageClassName: ""

    其中:

    spec.accessModes.ReadWriteOnce
    指定访问模式不强制实施安全性,而是作为标签来将 PV 与 PVC 匹配。
    spec.resources.requests.storage
    此声明会寻找提供 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
返回顶部