5.StorageClass-动态分配持久卷
基础概念
资源定义
Provisoner-供应商
Parameters-参数
ReclaimPolicy-回收策略
MountOptions-挂载选项
VolumeBindingMode-卷绑定模式
基础实例
环境构建流程
动态存储类验证
动态存储类使用
动态存储类扩容缩与删除
实际案例
MySQL数据库使用StorageClass对数据的持久存储
5.StorageClass-动态分配持久卷描述:StorageClass被用于描述存储分类(存储类),不同的StorageClass会被关系的服务质量层面或者备份策略;
基础概念描述:前面我们说过PersistentVolume简称PV是一个K8S资源对象,所以我们可以单独创建一个PV。它不和Pod直接发生关系,而是通过PersistentVolumeClaim,简称PVC来实现动态绑定。Pod定义里指定的PVC绑定关键字,然后PVC会根据Pod的要求去自动绑定合适的PV给Pod使用。
Tips:比如一个配置了许多50GiPV的集群不会匹配到一个要求Gi的PVC。只有在GiPV被加到集群之后,该PVC才可以被绑定。
Q:什么是storageClass?
答:前面我们说过创建PV有静态(即手动创建一堆PV组成一个PV池,供PVC来绑定)和动态两种方式,而动态是指在现有PV不满足PVC的请求时,即通过一个叫StorageClass(存储类)的对象由存储系统根据PVC的要求自动创建来完成的。动态卷供给能力让管理员不必进行预先创建存储卷,而是随用户需求进行创建。所以说storageclass是一个存储类,k8s集群管理员通过创建storageclass可以动态生成一个存储卷供k8s用户使用。这是一种新的存储供应方式。
Q:使用StorageClass有什么好处呢?
答:除了由存储系统动态创建,节省了管理员的时间,还有一个好处是可以封装不同类型的存储供PVC选用。在StorageClass出现以前,PVC绑定一个PV只能根据两个条件,一个是存储的大小,另一个是访问模式。在StorageClass出现后,等于增加了一个绑定维度即StorageClassName参数。
资源定义Q:什么是storageClass的资源定义?
答:每一个StorageClass都包含了Provisioner、Parameters、ReclaimPolicy等几个字段,当需要动态配置属于该类的PersistentVolume时使用这些字段。描述具体过程为:PV先创建分类,PVC请求绑定某个已创建的类(StorageClass)的资源,同时由Controller控制器创建的资源绑定到PVC之中,这样就达到动态配置的效果。
Tips:StorageClass对象的名称很重要,是用户可以请求特定类的方式。管理员在首次创建StorageClass对象时设置类的名称和其他参数,注意在创建对象后无法更新这些对象。
Tips:管理员可以为不请求任何特定类绑定的PVC指定默认的StorageClass;
yaml文件示例说明:
apiVersion:storage.k8s.io/v1kind:StorageClassmetadata:name:standardprovisioner:kubernetes.io/aws-ebsparameters:type:gp2reclaimPolicy:RetainmountOptions:-debugvolumeBindingMode:ImmediateProvisoner-供应商
Q:什么是供应商(Provisoner)?描述:storageclass需要有一个供应者,用来确定我们使用什么样的存储方式来创建pv;
Tips:provisioner供应者它既可以是内部供应程序,也可以由外部供应商提供;如果是外部供应商可以参考