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 模型,将存储资源与应用解耦,实现存储的声明式管理与动态或静态分配。

🧠 本章知识卡片

notion image

🚀 本章小节

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️⃣ 工作流程

大致工作流程图如下所示:
notion image

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 与动态供应,简化管理。
💡
有关文章的任何疑问,欢迎您在底部评论区留言,一起交流~
 
上一篇
Nginx+ACME服务器搭建
下一篇
青萍封面发布及套餐介绍

评论
Loading...