StorageClasses 与动态供给
学习 StorageClasses 如何让 Kubernetes 按需自动配置持久卷,无需管理员手动操作
StorageClasses 与动态供给 是 CoddyKit 上的免费 Kubernetes Basics 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Kubernetes Basics 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Kubernetes Basics 课程共包含 4 节课。
手动存储的问题
使用静态置备时,管理员必须在 PersistentVolumeClaim 绑定之前手动创建每个 PersistentVolume。这种方式无法扩展。
动态置备会在创建声明时自动创建卷。
什么是 StorageClass
StorageClass描述集群可以提供的一种存储类型,包括使用哪个置备器、采用哪些参数以及卷的行为方式。
您可以将它理解为按需创建 PersistentVolumes 的模板。
StorageClass 定义
provisioner字段指定创建卷的插件,通常是云磁盘驱动程序。
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: fast-ssd
provisioner: kubernetes.io/aws-ebs
parameters:
type: gp3
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer请求动态存储
PVC 只需按名称引用 StorageClass。然后,Kubernetes 会自动置备匹配的 PV。
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: data
spec:
accessModes: ['ReadWriteOnce']
storageClassName: fast-ssd
resources:
requests:
storage: 10Gi默认 StorageClass
如果 PVC 省略 storageClassName,Kubernetes 会使用集群默认的 StorageClass(通过注解标记)。这样,存储声明无需额外配置即可生效。
kubectl get storageclass
# NAME PROVISIONER DEFAULT
# standard (default) ...回收策略
reclaimPolicy决定删除 PVC 时会发生什么:
- 删除:底层卷也会被删除
- 保留:卷会保留下来,以便手动恢复
卷绑定模式
WaitForFirstConsumer会将卷的创建延迟到使用该 PVC 的容器组完成调度之后。这样可以确保磁盘与容器组位于同一个可用区。
Immediate会立即进行置备,这可能导致可用区不匹配。
观察置备过程
应用 PVC 后,请观察它如何随着卷的创建从“待处理”变为“已绑定”。
kubectl apply -f pvc.yaml
kubectl get pvc data -w
# data Pending
# data Bound pvc-8a3f... 10Gi多种存储层级
集群通常会针对不同需求定义多个 StorageClasses,让团队可以根据每种工作负载选择合适的权衡方案。
# fast-ssd -> low latency, higher cost
# standard -> balanced default
# cold-hdd -> cheap, archival扩展卷
如果 StorageClass 设置了 allowVolumeExpansion: true,您可以通过编辑 PVC 请求的大小来扩展它,置备器会调整底层磁盘的大小。
spec:
resources:
requests:
storage: 20Gi # increased from 10Gi何时使用静态置备与动态置备
- 动态:默认选择,支持自助服务且易于扩展
- 静态:必须绑定到特定的现有磁盘或 NFS 导出时使用
快速检查
测试您对动态置备的理解。
回顾
您已经了解到,StorageClass定义了存储的创建方式,从而支持动态置备。关键字段包括置备器、reclaimPolicy 和 volumeBindingMode。PVC 会按名称引用某个类,而默认类会处理省略类名的声明。
常见问题解答
「StorageClasses 与动态供给」课时是免费的吗?
是的 — 「StorageClasses 与动态供给」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Kubernetes Basics 课程的其余内容,请升级到 CoddyKit PRO。 Kubernetes Basics 课程共包含 4 节课。
「StorageClasses 与动态供给」这节课中我会学到什么?
学习 StorageClasses 如何让 Kubernetes 按需自动配置持久卷,无需管理员手动操作 你通过在浏览器中直接运行的动手代码来练习 Kubernetes Basics,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Kubernetes Basics 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Kubernetes Basics 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「StorageClasses 与动态供给」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Kubernetes Basics 课中编写并运行代码吗?
能。每节 Kubernetes Basics 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 使用 ConfigMaps 管理配置
- 用于敏感数据的密钥
- 持久卷与持久卷声明
- StorageClasses 与动态供给