一 storagclass
1.1 storageclass概述
storageclass作为对存储资源的抽象定义,对用户设置的pvc申请屏蔽后端存储的细节,一方面减少了用户对于存储资源细节的关注,另一方面减轻了管理员手工管理pv的工作,由系统自动完成pv的创建和绑定,实现了动态的资源供应。
基于storageclass的动态资源供应模式将逐步成为云平台的标准存储配置模式。storageclass的定义主要包括名称、后端存储的提供者(provisioner)和后端存储的相关参数配置。
storageclass一旦被创建出来,则将无法修改。如需更改,则只能删除原storageclass的定义重建。
示例1:定义一个名为standard的storageclass,提供者为aws-ebs,其参数设置了一个type,值为gp2。
[root@k8smaster01 study]# vi awsclass01.yaml
1 kind: storageclass
2 apiversion: storage.k8s.io/v1
3 metadata:
4 name: standard
5 provisioner: kubernetes.io/aws-bs
6 parameters:
7 type: gp2
8
1.2 storageclass配置参数
描述存储资源的提供者,也可以看作后端存储驱动。目前kubernetes支持的provisioner都以“kubernetes.io/”为开头,用户也可以使用自定义的后端存储提供者。
后端存储资源提供者的参数设置,不同的provisioner包括不同的参数设置。某些参数可以不显示设定,provisioner将使用其默认值。
1.3 常见provisioner
1 kind: storageclass
2 apiversion: storage.k8s.io/v1
3 metadata:
4 name: slow
5 provisioner: kubernetes.io/aws-ebs
6 parameters:
7 type: io1
8 zone: us-east-1d
9 iopspergb: "10"
10
参数说明如下(详细说明请参考awsebs文档):
- type:可选项为io1,gp2,sc1,st1,默认值为gp2。
- zone:awszone的名称。
- iopspergb:仅用于io1类型的volume,意为每秒每gib的i/o操作数量。
- encrypted:是否加密。
- kmskeyid:加密时的amazon resource name。
1 kind: storageclass
2 apiversion: storage.k8s.io/v1
3 metadata:
4 name: slow
5 provisioner: kubernetes.io/gce-pd
6 parameters:
7 type: pd-standard
8 zone: us-centrall-a
9
参数说明如下(详细说明请参考gce文档):
- type:可选项为pd-standard、pd-ssd,默认值为pd-standard。
- zone:gcezone名称。
1 apiversion: storage.k8s.io/v1
2 kind: storageclass
3 metadata:
4 name: slow
5 provisioner: kubernetes.io/glusterfes
6 parameters:
7 resturl: "http://127.0.0.1:8081"
8 clusterid: "xxxxxxxxxxxx"
9 restauthenabled: "true"
10 restuser: "admin"
11 secretnamespace: "default"
12 secretname: "heketi-secret"
13 gidmin: "40000"
14 gidmax: "50000"
15 volumetype: "replicate:3"
16
参数说明如下(详细说明请参考glusterfs和heketi的文档):
- resturl:glusterrest服务(heketi)的url地址,用于自动完成glusterfsvolume的设置。
- restauthenabled:是否对glusterrest服务启用安全机制。
- restuser:访问glusterrest服务的用户名。
- secretnamespace和secretname:保存访问glusterrest服务密码的secret资源对象名。
- clusterid:glusterfs的clusterid。
- gidmin和gidmax:storageclass的gid范围,用于动态资源供应时为pv设置的gid。
- volumetype:设置glusterfs的内部volume类型,例如replicate:3(replicate类型,3份副本);disperse:4:2(disperse类型,数据4份,冗余两份;“none”(distribute类型)。
- openstackcinder存储卷
1 kind: storageclass
2 apiversion: storage.k8s.io/v1
3 metadata:
4 name: gold
5 provisioner: kubernetes.io/cinder
6 parameters:
7 type: fast
8 availability: nova
9
参数说明如下。
- type:cinder的volumetype,默认值为空。
- availability:availabilityzone,默认值为空。
1.4 设置默认storageclass
要在系统中设置一个默认的storageclass,则首先需要启用名为defaultstorageclass的admission controller,即在kube-apiserver的命令行参数--admission-control中增加:
--admission-control-...,defaultstorageclass
[root@k8smaster01 study]# vi /etc/kubernetes/manifests/kube-apiserver.yaml
1 ……
2 - --enable-admission-plugins=noderestriction,defaultstorageclass
3 ……
4
[root@k8smaster01 study]# systemctl restart docker kubelet
然后,在storageclass的定义中设置一个annotation:
[root@k8smaster01 study]# vi defaultclass01.yaml
1 kind: storageclass
2 apiversion: storage.k8s.io/v1
3 metadata:
4 name: gold
5 annotations:
6 storageclass.beta.kubernetes.io/is-default-class="true"
7 provisioner: kubernetes.io/gce-pd
8 parameters:
9 type: pd-ssd
10
通过kubectl create命令创建成功后,查看storageclass列表,可以看到名为gold的storageclass被标记为default:
二 动态管理存储卷
2.1 glusterfs
见《附009.kubernetes永久存储之glusterfs独立部署》和《附010.kubernetes永久存储之glusterfs超融合部署》。
如对本文有疑问,
点击进行留言回复!!
网友评论