欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > K8S中PV和PVC之间的关系

K8S中PV和PVC之间的关系

2025/10/31 16:29:22 来源:https://blog.csdn.net/bltyu2000/article/details/146177965  浏览:    关键词:K8S中PV和PVC之间的关系

Persistent Volume (PV)Persistent Volume Claim (PVC) 是 Kubernetes 中管理存储的核心抽象概念,二者的关系可以类比为 存储资源提供方存储资源消费方。以下是详细解释:

核心关系

对象角色生命周期使用者
Persistent Volume (PV)存储资源的实体(如 NFS、云磁盘、本地磁盘等)独立于 Pod 和 PVC,需手动或动态创建由集群管理员配置
Persistent Volume Claim (PVC)用户对存储资源的请求(声明需要的存储特性)与 Pod 绑定,由用户创建和销毁开发者或应用运维人员

交互流程

  1. 管理员创建 PV

    • 定义存储资源的容量、访问模式(如 ReadWriteOnce)、存储类型等。

    • 示例 PV 配置(静态供应):

      apiVersion: v1
      kind: PersistentVolume
      metadata:name: my-pv
      spec:capacity:storage: 10GiaccessModes:- ReadWriteOncepersistentVolumeReclaimPolicy: Retain  # 回收策略(Retain/Delete/Recycle)storageClassName: manual              # 关联的 StorageClasshostPath:path: /data                         # 使用本地存储(仅示例)
  2. 用户创建 PVC

    • 声明需要的存储容量、访问模式、存储类(StorageClass)。

    • 示例 PVC 配置:

      apiVersion: v1
      kind: PersistentVolumeClaim
      metadata:name: my-pvc
      spec:storageClassName: manualaccessModes:- ReadWriteOnceresources:requests:storage: 5Gi
  3. Kubernetes 绑定 PV 和 PVC

    • 系统根据 PVC 的请求(容量、访问模式、StorageClass)匹配可用 PV

    • 若匹配成功,PVC 进入 Bound 状态,与 PV 建立一对一绑定。

    • 若没有可用 PV,且启用了动态供应(通过 StorageClass),则会自动创建新 PV

  4. Pod 挂载 PVC

    • 在 Pod 中通过 volumes 字段引用 PVC:

      apiVersion: v1
      kind: Pod
      metadata:name: my-pod
      spec:containers:- name: appimage: nginxvolumeMounts:- name: datamountPath: /var/www/htmlvolumes:- name: datapersistentVolumeClaim:claimName: my-pvc  # 使用已绑定的 PVC

关键特性对比

特性PVPVC
定义者集群管理员应用开发者
创建方式手动创建或动态供应(通过 StorageClass)用户手动创建
绑定关系一个 PV 只能绑定到一个 PVC一个 PVC 只能绑定到一个 PV
回收策略支持 RetainDeleteRecycle无,随 PV 的回收策略处理
动态供应依赖 StorageClass 和 Provisioner通过指定 StorageClass 触发动态创建 PV

生命周期与回收策略

  1. PV 的回收策略persistentVolumeReclaimPolicy

    • Retain(默认):删除 PVC 后,PV 保留数据,需手动清理。

    • Delete:删除 PVC 后,自动删除 PV 及底层存储(如云磁盘)。

    • Recycle(已废弃):删除数据并标记 PV 为可用(仅适用于部分存储类型)。

  2. PVC 删除后的行为

    • 若 PV 的回收策略为 Retain,则 PV 进入 Released 状态,需管理员手动清理后重新绑定。

    • 若为 Delete,则 PV 和底层存储资源会被自动删除。


动态供应(Dynamic Provisioning)

当使用 StorageClass 时,PVC 可以直接触发 PV 的自动创建,无需管理员预先配置 PV。

  • 示例 StorageClass(AWS EBS):

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:name: aws-gp2
    provisioner: kubernetes.io/aws-ebs  # 指定存储驱动
    parameters:type: gp2
    reclaimPolicy: Delete              # 动态创建的 PV 默认回收策略
  • 用户创建 PVC 时指定 StorageClass:

    spec:storageClassName: aws-gp2  # 动态创建符合要求的 PVaccessModes: [ReadWriteOnce]resources:requests:storage: 20Gi

总结

  • PV 是实际的存储资源,PVC 是用户对存储需求的抽象。

  • PVC 通过匹配 PV 的规格(容量、访问模式、StorageClass)来绑定存储资源。

  • 动态供应 通过 StorageClass 实现按需自动创建 PV,大幅简化存储管理。

  • 二者的分离使得存储资源的提供方(管理员)和使用方(开发者)职责清晰,提升灵活性和可维护性。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词