存储

  • PV:是对底层网络共享存储的抽象,把共享存储定义为一种“资源”

  • PVC:是用户对存储资源的一个申请,PVC 可以申请特定的存储空间和访问模式

PV

PV 作为存储资源: 主要包括存储能力、访问模式、存储类型、回收策略、后端存储类型等设置

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv1
spec:
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Recycle
  storageClassName: slow
  nfs:
    path: /tmp
    server: 172.17.0.2

参数:

  • 存储能力 存储空间

  • 存储卷模式 volumeMode: Block/Filesystem ( default fs )

  • 访问模式:(x 代表 many)

    • rwo

    • rox

    • rwx

  • 存储类别

  • 回收策略

    • 保留

    • 回收空间

    • 删除

  • 挂载参数

  • 节点亲和性

PV 生命周期

  • available 可用状态,还未与某个 PVC 绑定

  • bound 已与某个 PVC 绑定

  • released 绑定的 PVC 已经删除,资源已经释放,但是没有被集群回收

  • failed 自动回收失败

PVC

用户对存储资源的需求申请,主要包括存储空间的需求,访问模式,PV 选择条件和存储类别等信息的设置。

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: myclaim
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 8Gi
  storageClassName: slow
  selector:
    matchLabels:
      release: "stable"
    matchExpressions:
      - {key: environment, operator: In, values: [dev]}

参数:

  • Resources: 描述对存储资源的申请( storage: 8Gi 申请 8G 空间)

  • Access Modes:描述用户应用对存储资源的访问权限,与 PV 对应配置设置相同,(不太清楚什么意义)

  • VolumeModes

  • PV selector

  • Class

其中 PVC 与 PV 都受限于 Namespace,只有相同的 Namespace 中的 PV 才可以与 PVC 绑定

PV 和 PVC 的生命周期

  • 资源供应

  • 资源绑定

  • 资源使用

  • 资源释放

  • 资源回收