NIUCLOUD是一款SaaS管理后台框架多应用插件+云编译。上千名开发者、服务商正在积极拥抱开发者生态。欢迎开发者们免费入驻。一起助力发展! 广告
[TOC] # StorageClass 存储类 StorageClass 是一种资源类型,是为了方便管理员管理 PV 而按需创建的逻辑组类别,例如可以按照存储系统性能高低分类,甚至可以按照自定义的标准进行分类。不过k8s本身并不知道这个“类别”意味着什么。 StorageClass 有一个好处就是支持 PV 的动态创建。 ### StorageClass 字段 StorageClass 中包含**provisioner**、**parameters**和**reclaimPolicy**关键字段,当需要动态分配 PersistentVolume 时会使用到。 * **provisioner(供给方)**: 提供了存储资源的存储系统,存储类要依赖 Provisioner 来判断要使用的存储插件以便适配到目标存储系统。k8s有很多内置存储插件,都是以“kubernetes.io”为前缀,还支持用户自定义的Provisioner * **parameters(参数)**: 存储类使用参数描述要关联到的存储卷,不同的 provisioner 的参数都不一样 * **reclaimPolicy(回收策略):** 为动态创建的PV指定回收策略,可用值为“delete”(默认值)和“Retain” `StorageClass`对象的名称很重要,用户使用该类来请求一个特定的方法。 当创建`StorageClass`对象时,管理员设置名称和其他参数,一旦创建了对象就不能再对其更新。 ~~~ kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: standard provisioner: kubernetes.io/aws-ebs parameters: type: gp2 reclaimPolicy: Retain mountOptions: - debug ~~~ ### Provisioner字段(存储分配器) 用来决定使用哪个卷插件分配 PV。该字段必须指定。 [k8s内置的class类](https://kubernetes.io/docs/concepts/storage/storage-classes/) [k8s第三方class类](https://github.com/kubernetes-incubator/external-storage) ### 动态PV供给 先创建一个 StorageClass ~~~ kind: StorageClass apiVersion: storage.k8s.io/v1beta1 metadata: name: glusterfs provisioner: kubernetes.io/glusterfs parameters: resturl: "http://XXXXXXXXXX:8080" restauthenabled: "false" restuser: "ik8s" restuserkey: "ik8s.io" ~~~ 再创建一个可以动态申请PV的PVC ~~~ apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-gluster-dynamic annotations: volume.beta.kubernetes.io/storage-class: glusterfs #第一种方法,指定使用的存储类 spec: storageClassName: "glusterfs" # 第二种方法,指定使用的存储类 accessModes: ReadWriteOnce resources: requests: storage: 5G ~~~