在Kubernetes集群中设置和使用Persistent Volumes(PV)与Persistent Volume Claims(PVC)的核心步骤如下:
- PV创建:由管理员预先定义存储资源,通过YAML文件指定容量、访问模式(如ReadWriteOnce)、存储类型(如NFS、云存储)及回收策略(Retain/Delete)。
- PVC申请:用户声明存储需求(如容量、访问模式),Kubernetes控制器根据PVC条件自动绑定匹配的PV。
- Pod挂载:在Pod配置中通过
volumes
字段引用PVC名称,并在容器内通过volumeMounts
指定挂载路径。
最佳实践:
- 使用StorageClass实现动态供应,避免手动创建PV(尤其适用于云平台如AWS EBS、GCP PD)。
- 监控PV/PVC状态(
kubectl get pv,pvc
)确保绑定成功。 - 有状态服务优先选用StatefulSet,配合PVC模板实现稳定存储。
- 生产环境建议设置ReclaimPolicy为Retain,防止误删数据。
关键配置示例:
# PV定义(静态)
apiVersion: v1
kind: PersistentVolume
metadata:
name: my-pv
spec:
capacity: {storage: 10Gi}
accessModes: [ReadWriteOnce]
persistentVolumeReclaimPolicy: Retain
nfs: {server: 10.0.0.1, path: "/data"}
# PVC申请
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
spec:
accessModes: [ReadWriteOnce]
resources: {requests: {storage: 5Gi}}
通过解耦存储供应与消费,PV/PVC机制有效支持了Kubernetes应用的无状态化与数据持久化需求。