K8S Persistent Volume

Persistent Volume

apiVersion: v1
kind: PersistentVolume
metadata:
  name: <name>
  annotations:
    <key>: <value>        # 可选。键值对形式的注释。
spec:
  capacity:
    storage: <size>       # 必需。存储的大小,例如 "500Gi"。
  accessModes:
    - <mode>              # 必需。存储的访问模式,例如 "ReadWriteOnce" 或 "ReadOnlyMany"。可以指定多个模式。
  persistentVolumeReclaimPolicy: <policy>  # 必需。当 PersistentVolume 没有与任何 PersistentVolumeClaim 关联时的回收策略。"Retain" 保留 PV,"Delete" 删除 PV,"Recycle" 回收 PV。
  storageClassName: <class-name>           # 可选。如果您的集群支持动态卷提供程序则可以指定存储类。否则请使用 "null"。
  mountOptions:
    - <option>            # 可选。挂载到 Pod 时需要使用的参数,例如 "hard"、"vers=3" 等。
  volumeMode: <mode>      # 可选。指定 PV 的访问模式是文件系统还是块,文件系统是默认值。
  nodeAffinity:
    <affinity>            # 可选。节点亲和性规则,确定如何将 PV 绑定到集群上的节点。
  persistentVolumeSource:
    <source>              # 必需。定义持久卷后端的类型和配置,如 GCEPersistentDisk、AWSElasticBlockStore、NFS 等。

说明:

  • metadata:元数据字段,定义 PV 的名称和注释等信息。
  • spec.capacity.storage:PV 的容量大小。
  • spec.accessModes:指定访问模式。必须至少指定一个访问模式,可以指定多个访问模式。
  • spec.persistentVolumeReclaimPolicy:定义 PV 回收策略,当 PV 所有关联的 PVC 都被删除后,应该怎样处理 PV。默认策略是 “Delete”。
  • spec.storageClassName:如果您在集群中启用了动态卷提供程序,则可以指定 PV 所属的存储类。否则,可将其设置为 “null”。
  • spec.mountOptions:当将 PV 挂载到 Pod 时使用的选项,例如 “hard”、“vers=3” 等。
  • spec.volumeMode:PV 的访问模式,支持文件系统和块两种模式,文件系统是默认值。
  • spec.nodeAffinity:节点亲和性规则,确定 PV 如何绑定到集群上的节点。
  • spec.persistentVolumeSource:定义 PV 的后端类型和配置。包括:AWS EBS、GCE PD、RBD、iSCSI、NFS、GlusterFS、CephFS、Cinder、FC 等。