一、为什么Kubernetes需要存储抽象
在传统部署方式中,应用可能直接挂载某台机器的磁盘路径。但在 Kubernetes 中,Pod 可能被调度到不同节点,也可能因为故障被重建。
如果仍然依赖节点本地路径,会遇到:
- Pod 迁移后数据不可用
- 存储和计算强绑定
- 多环境存储配置难以统一
- 有状态应用难以标准化部署
Kubernetes 存储抽象的目标,是让应用用声明式方式申请存储,而不是直接关心底层实现细节。
二、PV是什么
PV,全称 PersistentVolume,表示集群中的一块持久化存储资源。它可以来自云盘、NFS、分布式存储或其他存储系统。
PV 更偏向平台或运维视角,代表“集群里已经有或可以提供的存储资源”。
它通常会定义:
- 存储容量
- 访问模式
- 回收策略
- 存储类型
- 底层存储参数

图1:Kubernetes存储绑定关系
三、PVC是什么
PVC,全称 PersistentVolumeClaim,表示用户或应用对存储资源的申请。
PVC 更偏向应用视角,代表“我需要一块满足条件的存储”。
应用通常不直接引用 PV,而是引用 PVC。Kubernetes 会根据 PVC 的需求去绑定合适的 PV。
这种设计把应用和底层存储解耦,让应用部署更通用。
四、StorageClass是什么
StorageClass 用于描述一类存储供给方式。它可以定义使用哪种存储后端、参数是什么、是否支持动态创建 PV。
如果集群配置了 StorageClass,用户创建 PVC 时可以指定对应 StorageClass,系统会自动创建并绑定合适的 PV。
这就是动态供给机制,能减少人工提前创建 PV 的工作量。
五、PV、PVC、StorageClass之间是什么关系
可以按这个顺序理解:
- StorageClass 定义存储类型和供给方式
- PVC 声明应用需要什么样的存储
- Kubernetes 根据 PVC 找到或创建 PV
- Pod 挂载 PVC 后使用持久化存储
也就是说:
- PV 是实际存储资源
- PVC 是应用的存储申请
- StorageClass 是存储供给策略
- Pod 通过 PVC 使用存储

图2:Kubernetes资源与配置关系
六、访问模式要注意什么
Kubernetes 存储中常见访问模式包括:
- ReadWriteOnce:通常只允许一个节点读写
- ReadOnlyMany:多个节点只读访问
- ReadWriteMany:多个节点读写访问
不同存储后端支持能力不同。不要只看 YAML 写法,还要确认底层存储系统是否真正支持对应访问模式。
七、生产环境使用存储要注意什么
生产环境使用 Kubernetes 存储时,要重点关注:
- 存储后端稳定性
- 数据备份和恢复能力
- 性能和延迟
- 访问模式是否匹配业务
- 回收策略是否安全
- 是否支持扩容
- 有状态应用升级和迁移策略
存储和数据安全强相关,不能像无状态服务一样随意销毁和重建。
结语
Kubernetes存储机制的核心,是用 PV、PVC 和 StorageClass 把应用存储需求与底层存储实现解耦。Pod 通过 PVC 使用持久化存储,平台通过 StorageClass 管理供给方式,PV 则代表实际存储资源。理解这套关系,是在 Kubernetes 上运行有状态应用、数据库和中间件的基础。
FAQ
Pod可以直接使用本地磁盘吗?
可以,但生产环境要谨慎。本地磁盘会让数据和节点强绑定,Pod 迁移和故障恢复会更复杂。
PVC一定会自动创建PV吗?
不一定。只有配置了支持动态供给的 StorageClass 时,PVC 才可能自动触发 PV 创建。
删除PVC会删除数据吗?
取决于 PV 的回收策略和存储后端配置。生产环境要特别谨慎。
转载请注明出处:https://www.cloudnative-tech.com/p/6222/