Dynamic Volume Provisioning

Dynamic volume provisioning允许用户按需自动创建存储卷,这种方式可以让用户不需要关心存储的复杂性和差别,又可以选择不同的存储类型。

1. 开启Dynamic Provisioning

需要先提前创建StorageClass对象,StorageClass中定义了使用哪个provisioner,并且在provisioner被调用时传入哪些参数,具体可参考StorageClass介绍。

例如:

  • 磁盘类存储
  1. apiVersion: storage.k8s.io/v1
  2. kind: StorageClass
  3. metadata:
  4. name: slow
  5. provisioner: kubernetes.io/gce-pd
  6. parameters:
  7. type: pd-standard
  • SSD类存储
  1. apiVersion: storage.k8s.io/v1
  2. kind: StorageClass
  3. metadata:
  4. name: fast
  5. provisioner: kubernetes.io/gce-pd
  6. parameters:
  7. type: pd-ssd

2. 使用Dynamic Provisioning

创建一个PVC对象,并且在其中storageClassName字段指明需要用到的StorageClass的名称,例如:

  1. apiVersion: v1
  2. kind: PersistentVolumeClaim
  3. metadata:
  4. name: claim1
  5. spec:
  6. accessModes:
  7. - ReadWriteOnce
  8. storageClassName: fast
  9. resources:
  10. requests:
  11. storage: 30Gi

当使用到PVC的时候会自动创建对应的外部存储,当PVC被删除的时候,会自动销毁(或备份)外部存储。

3. 默认的StorageClass

当没有对应的StorageClass配置时,可以设定默认的StorageClass,需要执行以下操作:

可以通过添加storageclass.kubernetes.io/is-default-class注解的方式设置某个StorageClass为默认的StorageClass。当用户创建了一个PersistentVolumeClaim,但没有指定storageClassName的时候,会自动将该PVC的storageClassName指向默认的StorageClass

参考文章: