• Dynamic Volume Provisioning
    • 1. 开启Dynamic Provisioning
    • 2. 使用Dynamic Provisioning
    • 3. 默认的StorageClass

    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,需要执行以下操作:

    • 在API Server开启DefaultStorageClass admission controller 。
    • 设置默认的StorageClass对象。

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

    参考文章:

    • https://kubernetes.io/docs/concepts/storage/dynamic-provisioning/