StorageClass的介绍
StorageClass是对存储资源的一个抽象定义。与静态模式的存储卷配置(就是集群管理员手动去创建持久卷PV),StorageClass是一种动态模式的存储卷配置。StorageClass资源同PV一样,也不是命名空间级别的,是集群级别的。
StorageClass资源使得集权管理员解放双手,无需多次手动创建持久卷PV,集群管理员只需要创建不同类别的存储类对应的StorageClass资源,供用户的PVC资源进行引用,k8s系统会自动创建持久卷PV与持久卷声明PVC进行绑定。
在用户创建持久卷声明PVC之前,集群管理员需要创建StorageClass资源,这样才能动态的创建新的持久卷PV。
StorageClass的作用or优势
- 减少了用户对于底层存储资源各方面细节的关注,只需要关注自己创建的PVC资源,引用存储类的对应StorageClass资源即可;
- 集群管理员将从多次创建PV这项工作中解脱出来,只要有了StorageClass资源,PVC创建引用好后,k8s系统会自动为其创建合适的PV,并且将PV和PVC绑定好,从而实现动态的资源供应。
StorageClass的定义
StorageClass主要包含了名称、后端存储提供者、后端存储参数等配置;
yaml文件示例:
apiVersion: storage.k8s.io/v1beta1
kind: StorageClass
metadata:
name: nfs-storage-test
provisioner: fuseim.pri/ifs
parameters:
type: xxx
... ...
关键配置说明:
名称:
metadata.name
主要描述了StorageClass的名称,主要为持久卷声明PVC应用,在PVC的yaml文件中通过spec.storageClassName
对其进行引用。提供者:
provisioner
描述的是底层存储资源的提供者,一般是以"kubernetes.io/"
开头,用户也可以自定义,如上述例子。在PVC创建后,持久卷PV由该metadata.name
的StorageClass资源中引用的provisioner
创建。参数:
parameters
可有可无,这是后端存储资源提供者的一些参数设置,如果是自定义的provisioner,不一定有参数。
StorageClass常用命令
创建StorageClass资源(yaml方式)
$ kubectl create -f storageclass_test.yaml
查看StorageClass资源
$ kubectl get storageclass -n ns1
我们也可以通过缩写进行查看kubectl get sc
查看某个StorageClass资源详情
$ kubectl describe sc sc_name
其中,sc_name为StorageClass资源的名称
删除StorageClass资源
$ kubectl delete sc sc_name
其中,sc_name为StorageClass资源的名称