type
status
date
slug
summary
category
tags
create_time
Sep 22, 2025 01:01 PM
icon
password
my_create_time
📝 前言
在 Kubernetes 中,Pod 跟与 Docker 容器一样是短暂、可随时被调度和销毁的,因此持久化存储成为保障应用数据安全与稳定的关键。
本篇将介绍 Kubernetes 中与持久化存储相关的两个核心资源对象:PersistentVolume (PV) 与 PersistentVolumeClaim (PVC),并通过 NFS 作为后端示例,帮助你快速上手。
🧭 背景介绍
在容器编排环境下,Pod 重建或迁移到其他节点时,临时存储(emptyDir)的数据会丢失。
实际生产场景中常见需求:
- 数据库(MySQL、PostgreSQL)需要可靠的磁盘存储。
- 文件存储服务(图床、日志归档、数据分析)需要共享卷。
- 状态服务需要与节点解耦的持久卷。
Kubernetes 使用 PV/PVC 模型,将存储资源与应用解耦,实现存储的声明式管理与动态或静态分配。
🧠 本章知识卡片

🚀 本章小节
1️⃣ 什么是 PersistentVolume (PV)?
- 定义:集群级别的存储资源,代表一块真实存在的存储(NFS、Ceph、EBS、iSCSI 等)。
- 生命周期:独立于 Pod,由管理员或动态供应器创建。
- 关键字段:
- capacity:容量,如
storage: 10Gi
- accessModes:访问模式(
ReadWriteOnce/ReadOnlyMany/ReadWriteMany
) - persistentVolumeReclaimPolicy:回收策略(
Retain、Recycle、Delete
)
2️⃣ 什么是 PersistentVolumeClaim (PVC)?
- 定义:用户对存储资源的“申请”,描述期望的容量和访问模式。
- 绑定过程:Kubernetes 控制器会寻找符合条件的 PV,并自动绑定。
- 动态供应:若无匹配 PV 且定义了 StorageClass,可自动创建 PV。
3️⃣ 工作流程
大致工作流程图如下所示:

4️⃣ 实战示例:NFS 静态绑定
以下示例演示如何在已有 NFS 服务器(如 192.168.10.1:/data/share)上,手动创建 PV 与 PVC,并挂载到 Pod。
创建 NFS PV
关键点:
- ReadWriteMany 允许多个 Pod 同时读写,非常适合共享文件场景。
- Retain 表示删除 PVC 时数据仍保留。
创建 PVC
在 Pod 中挂载 PVC
以上示例为静态绑定,但是在实际的生产环境中使用地更多的可能是
StorageClass
动态绑定方式。限于篇幅,这个等到后续再进行介绍。
5️⃣ 常用命令速览
命令 | 说明 |
kubectl get pv | 查看所有 PV 状态 |
kubectl get pvc | 查看所有 PVC 状态 |
kubectl describe pv <pv-name> | 详细查看 PV 信息 |
kubectl describe pvc <pvc-name> | 详细查看 PVC 信息 |
✅ 总结
PV 提供真实存储的抽象,PVC 是用户的资源申请。
通过 PV/PVC 模型,Kubernetes 将存储从应用与节点中彻底解耦。
NFS 是最简单的共享存储示例,便于演示 ReadWriteMany 场景。
生产环境常结合 StorageClass 与动态供应,简化管理。
有关文章的任何疑问,欢迎您在底部评论区留言,一起交流~
- 作者:青萍叙事
- 链接:https://blog.lusyoe.com/article/pv-pvc-resource-introduction
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。