结论:PVC 是应用对存储的"申请单"(要多大、什么读写模式),PV 是集群里实际存在的存储资源(NFS 目录、云盘),二者一对一绑定。StorageClass 是存储的"规格模板",开启动态供给后,创建 PVC 时由 provisioner 按 StorageClass 自动创建底层云盘和对应 PV——管理员不用手工预建 PV。

展开:动态供给流程:PVC 指定 storageClassName → 外部 provisioner(CSI 驱动,如 ebs.csi.aws.com)watch 到新 PVC → 调云 API 创建磁盘 → 创建 PV 并与 PVC 绑定 → Pod 挂载使用。关键字段:provisioner 指定驱动、parameters 传磁盘类型(gp3/io2)、reclaimPolicy 决定 PVC 删除后数据命运(Delete 连盘删 / Retain 保留人工处理)、volumeBindingMode: WaitForFirstConsumer 延迟供给到 Pod 调度完成——避免盘建在没有节点的可用区(拓扑感知,云盘场景必须)。易错点:1)不写 storageClassName 会走 default StorageClass,集群默认类变化可能让盘建到意外的地方,显式指定更稳;2)PVC 创建后大小只能扩不能缩(且需 StorageClass 允许 allowVolumeExpansion);3)Delete 策略下误删 PVC = 数据没了,生产数据盘务必 Retain + 快照。

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata: { name: fast }
provisioner: ebs.csi.aws.com
parameters: { type: gp3 }
reclaimPolicy: Retain
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true

追问方向:CSI 架构(controller plugin 与 node plugin 分工)、本地盘方案(local-path-provisioner、TopoLVM)的取舍。