StorageClass 至关于一个建立 PV 的模板,用户经过 PVC 申请存储卷,StorageClass 经过模板自动建立 PV,而后和 PVC 进行绑定。html
建立 StorageClass 对象便可,即建立了模板。linux
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: slow provisioner: kubernetes.io/gce-pd parameters: type: pd-standard --- apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: fast provisioner: kubernetes.io/gce-pd parameters: type: pd-ssd
以上文件建立了两种不一样类型的 StorageClass,用户根据本身需求经过 PVC 申请便可。api
用户经过 PVC 来申请。微信
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: claim1 spec: accessModes: - ReadWriteOnce storageClassName: fast resources: requests: storage: 30Gi
以上文件说明该 PVC 向 storageClassName 为 fast 的存储类申请卷,将会获得一个 PV 来与该 PVC 进行绑定。spa
《K8S实战(六)| 配置NFS动态卷提供持久化存储》 https://blog.zuolinux.com/2020/06/10/nfs-client-provisioner.htmlcode
由 StorageClass 动态建立的 PersistentVolume 会在类的 reclaimPolicy 字段中指定回收策略,能够是 Delete 或者 Retain。htm
若是 StorageClass 对象被建立时没有指定 reclaimPolicy,它将默认为 Delete。意味着 PV 被删除后,原始数据也会被删除。对象
建议设置为 Retain。blog
查看当前的默认 StorageClassrem
# kubectl get sc NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE managed-nfs-storage (default) fuseim.pri/ifs Delete Immediate false 9m46s
标记默认的 StorageClass 为非默认
kubectl patch storageclass 目前的默认storageclass名称 -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'
标记一个普通 sc 为默认
kubectl patch storageclass storageclass名称 -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
StorageClass 对象并非为了自动建立 PV 而创建的,因此在静态建立机制和动态建立机制中都应该存在该参数。
若是 PVC 中没有指定 storageClassName,那么:
微信公众号:zuolinux_com