k8svolume数据持久化pv和pvc
时间: 2025-05-08 19:12:22 浏览: 18
### Kubernetes 中 PV 和 PVC 的数据持久化机制
#### 1. 持久卷 (Persistent Volume, PV)
PV 是集群中的一块存储资源,由管理员预先创建或者通过动态供应的方式自动生成。它是独立于 Pod 生命周期的抽象对象,用于描述可用的存储容量及其特性[^1]。
- **静态供应**: 系统管理员手动创建多个 PV 对象,并将其挂载到实际的物理存储设备上。这些 PV 提供给用户使用,无需额外干预即可完成绑定操作。
- **动态供应**: 当用户的需求无法匹配现有的静态 PV 时,可以通过 `StorageClass` 定义规则来触发动态供应过程。此时,Kubernetes 自动调用底层存储插件(如 AWS EBS、GCE PD 或 CephFS)生成新的 PV 实例并绑定至相应的 PVC 请求[^2]。
#### 2. 持久卷申领 (PersistentVolumeClaim, PVC)
PVC 是用户向集群提出的存储需求声明。它类似于容器中的资源请求(CPU/Memory),允许开发者指定所需的最小存储量以及期望的访问权限模式(ReadWriteOnce、ReadOnlyMany 或 ReadWriteMany)。一旦某个符合条件的 PV 被发现,则两者之间形成绑定关系,此后该 PVC 即可安全地供关联的应用程序读写文件系统内容[^4]。
#### 3. 绑定流程
当一个新的 PVC 创建完成后,控制系统尝试寻找满足条件的最佳候选者——即未被占用且参数相匹配的一个或多个现有 PV 条目之一;如果找不到任何合适选项但启用了自动扩展功能的话,则依据预设好的 Storage Class 描述启动新实例构建动作直至达成目标为止。
#### 4. 删除行为与回收策略
即使在销毁掉对应的服务之后,默认情况下原始磁盘并不会立即消失而是进入释放状态 (`Released`) ,这意味着只要原主人不再需要它们就可以重新分配出去给别的项目利用起来而不必担心丢失重要资料的问题发生 。不过需要注意的是具体表现形式取决于最初设定时候所采用的方法论不同可能会有所差异 :例如有些可能直接擦除所有记录然后再交付别人接管;另一些则仅仅改变标签标记而已以便后续清理工作更加方便快捷高效执行下去[^5]。
```yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: example-pv
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain # 设置为保留模式
hostPath:
path: "/mnt/data"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: example-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 8Gi
```
上述 YAML 文件展示了如何定义一个简单的 PV 和 PVC 示例。其中设置了 `persistentVolumeReclaimPolicy` 参数为 `Retain`,这表明即便将来此 PVC 被移除后,其背后的实际存储也不会立刻清除,从而便于进一步处理或恢复用途。
---
###
阅读全文
相关推荐




