《K8s 存储卷实战:PV/PVC 与动态 Provisioning》
·
Kubernetes 存储卷实战:PV/PVC 与动态 Provisioning
1. 核心概念解析
-
PV(Persistent Volume)
集群级别的存储资源抽象,由管理员预先配置。例如定义 NFS 卷:apiVersion: v1 kind: PersistentVolume metadata: name: nfs-pv spec: capacity: storage: 10Gi accessModes: - ReadWriteMany nfs: path: /data/nfs server: 192.168.1.100 -
PVC(Persistent Volume Claim)
用户对存储资源的请求,Pod 通过 PVC 使用 PV:apiVersion: v1 kind: PersistentVolumeClaim metadata: name: web-pvc spec: accessModes: - ReadWriteMany resources: requests: storage: 5Gi -
动态 Provisioning
通过StorageClass自动创建 PV,无需手动配置。存储类示例:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: fast-ssd provisioner: kubernetes.io/aws-ebs parameters: type: gp3
2. 静态配置实战:PV/PVC 绑定
步骤 1:创建 PV
kubectl apply -f nfs-pv.yaml
步骤 2:创建 PVC
kubectl apply -f web-pvc.yaml
步骤 3:验证绑定
kubectl get pv,pvc # 查看 STATUS 是否为 Bound
步骤 4:Pod 挂载 PVC
apiVersion: v1
kind: Pod
metadata:
name: web-server
spec:
containers:
- name: nginx
image: nginx
volumeMounts:
- name: data
mountPath: /usr/share/nginx/html
volumes:
- name: data
persistentVolumeClaim:
claimName: web-pvc
3. 动态 Provisioning 实战
步骤 1:创建 StorageClass
kubectl apply -f fast-ssd.yaml
步骤 2:PVC 引用 StorageClass
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: dynamic-pvc
spec:
storageClassName: fast-ssd # 关键字段
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Gi
步骤 3:自动创建 PV
kubectl apply -f dynamic-pvc.yaml # 自动触发 PV 创建
kubectl get pv # 查看动态生成的 PV
4. 关键对比与场景建议
| 特性 | 静态 PV/PVC | 动态 Provisioning |
|---|---|---|
| 创建方式 | 管理员手动配置 | 按需自动创建 |
| 适用场景 | 固定存储需求(如 NFS) | 云平台动态存储(如 EBS) |
| 运维成本 | 高(需维护 PV) | 低(自动生命周期管理) |
| 弹性伸缩 | 不支持 | 支持(调整 PVC 大小) |
最佳实践:
- 开发测试环境优先使用动态 Provisioning 提升效率
- 生产环境关键数据建议静态配置确保稳定性
- 始终设置
storageClassName明确存储类型
5. 故障排查技巧
-
PVC 卡在 Pending 状态:
kubectl describe pvc <pvc-name> # 查看事件日志常见原因:
- 无匹配的 PV(静态)
- StorageClass 配置错误(动态)
- 存储后端配额不足
-
数据持久性验证:
kubectl exec -it web-server -- touch /usr/share/nginx/html/test.txt kubectl delete pod web-server && kubectl apply -f web-pod.yaml # 重建后文件应保留
通过结合 PV/PVC 的精细控制与动态 Provisioning 的自动化能力,可构建高可靠、易扩展的 Kubernetes 存储架构。
更多推荐
所有评论(0)