Kubernetes存储的核心做法,是通过 PV、PVC、StorageClass 和 CSI,把外部块存储、文件存储或对象存储能力接入集群,让应用用声明式方式申请和挂载持久化资源。它解决的是 Pod 可重建但数据不能随 Pod 丢失的问题。

为什么Kubernetes需要独立存储机制
Pod 生命周期短,可能因为发布、扩缩容、节点故障而重建。如果数据只放在容器本地,Pod 删除后数据就可能丢失。数据库、消息队列、文件服务、模型文件、缓存数据等场景都需要持久化能力。
Kubernetes 通过存储抽象把应用和底层存储解耦:应用声明需要多大容量、什么访问模式,平台负责供应和挂载。
PV、PVC和StorageClass分别是什么
| 对象 | 含义 | 谁关注 |
|---|---|---|
| PV | 集群中的持久卷资源 | 平台或存储管理员 |
| PVC | 应用对存储资源的申请 | 应用开发或发布者 |
| StorageClass | 动态供应存储的模板 | 平台管理员 |
| CSI | 存储插件接口 | 存储厂商和平台团队 |
PVC 绑定到 PV 后,Pod 就可以挂载这个存储卷。动态供应模式下,用户创建 PVC 后,平台会根据 StorageClass 自动创建对应 PV。
常见存储类型怎么选
| 类型 | 适合场景 | 注意事项 |
|---|---|---|
| 块存储 | 数据库、低延迟读写 | 通常单节点挂载为主 |
| 文件存储 | 多实例共享文件 | 性能和权限要评估 |
| 对象存储 | 备份、模型、静态文件 | 不适合传统文件系统语义 |
| 本地存储 | 高性能临时或特定有状态应用 | 节点绑定强,迁移复杂 |
企业选型要结合性能、可靠性、备份、跨节点访问和成本,而不是只看容量。
有状态应用部署要注意什么
有状态应用通常需要 StatefulSet、PVC、稳定网络标识和数据备份机制。不要简单把数据库放进 Deployment 并挂一个卷就认为完成生产部署。
关键关注点包括:
- 数据是否需要持久化
- 是否支持多副本读写
- 卷能否随 Pod 迁移
- 备份和恢复如何做
- 存储性能是否满足高峰写入
- 节点故障时恢复时间是否可接受

企业存储治理建议
- 按业务等级定义不同 StorageClass。
- 对生产存储启用备份和快照策略。
- 监控容量、IOPS、延迟和错误率。
- 控制命名空间存储配额。
- 避免无主 PVC 长期占用资源。
- 定期演练恢复流程。
存储问题往往在故障时才暴露,提前做容量和恢复治理非常关键。
常见误区
PVC删除后数据一定保留
不一定,取决于 PV 的回收策略。Retain、Delete 等策略会影响数据保留方式。
所有有状态应用都适合放K8s里
不是。需要看运维能力、存储插件成熟度、备份恢复和应用自身架构。
只看容量不看性能
同样 1TB 存储,IOPS、延迟和吞吐可能差异很大。数据库和 AI 模型加载尤其要关注性能。
Kubernetes存储选型要先看数据特性
Kubernetes 可以通过 PV、PVC 和 StorageClass 抽象存储,但企业不能只看“能不能挂载”。不同业务对存储的要求差异很大:数据库关注一致性和 IOPS,日志系统关注吞吐和容量,AI 训练关注数据读取速度,普通 Web 应用可能只需要少量持久化配置。
建议按以下维度评估:
- 访问模式:单 Pod 读写、多 Pod 读写,还是只读共享。
- 性能要求:IOPS、吞吐、延迟和小文件数量。
- 数据可靠性:快照、备份、跨节点迁移和故障恢复能力。
- 运维复杂度:扩容、迁移、监控、告警和容量回收是否自动化。
- 业务等级:核心生产数据和临时缓存不应使用同一套策略。
Kubernetes存储的重点不是把磁盘挂进容器,而是让有状态应用在调度、迁移和故障恢复时仍然可控。
PV和PVC要纳入生命周期管理
很多集群的存储问题来自生命周期失控:应用删除后 PVC 长期保留,测试环境卷无人回收,快照策略缺失,扩容后没有容量告警。平台团队应明确 Retain、Delete 等回收策略,并为不同环境设置默认 StorageClass。
对于生产数据库、中间件和关键文件服务,建议配合备份演练验证恢复时间和数据完整性。只配置 PVC 并不能证明系统可恢复,真正的验证要看故障后能否按流程恢复业务。
结语
Kubernetes存储通过 PV、PVC、StorageClass 和 CSI 实现应用与底层存储解耦。企业落地时,不能只解决“能挂载”,还要解决性能、备份、恢复、配额和生命周期治理。
FAQ
PV和PVC有什么区别?
PV 是集群中的存储资源,PVC 是应用对存储资源的申请。应用通常创建 PVC,由平台绑定或动态创建 PV。
Kubernetes适合运行数据库吗?
可以,但需要成熟存储、备份恢复、监控和运维能力。关键数据库是否上 K8s,要结合团队经验和可靠性要求评估。
StorageClass有什么作用?
StorageClass 定义动态供应存储的模板,例如存储类型、性能等级、回收策略和供应插件。
PVC一直Pending怎么办?
常见原因包括没有可匹配 PV、StorageClass 不存在、存储插件异常、容量不足或访问模式不匹配。
转载请注明出处:https://www.cloudnative-tech.com/p/7280/