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 存储,并配置了适当的导出路径。
流程
为 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 卷都必须由集群中的所有可调度节点挂载。
确定创建了 PV:
$ oc get pv输出示例
NAME LABELS CAPACITY ACCESSMODES STATUS CLAIM REASON AGE pv0001 <none> 5Gi RWO Available 31s创建绑定至新 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。
确认创建了持久卷声明:
$ oc get pvc输出示例
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE nfs-claim1 Bound pv0001 5Gi RWO 2m