潇湘夜雨移动版

主页 > 系统 > 云计算与云原生 >

k8s存储卷与数据持久化(13)

的所有需求时,系统按 PVC的需求标准动态创建适配的PV会为存储管理带来极大的灵活性。
存储类对象的名称至关重要 ,它是用户调用的标识。创建存储类对象时,除名称之
外,还需定义三个关键字段: provision parameter和reclaimPolicy
1)StoageClass Spec 
StorageClass Spec 中的 是定义存储类时最重要字段,以下五个可用字段
provisioner (供给方):即提供了存储资源的存储系统,存储类 依赖 Provisioner
来判定要使用的存储插件以便适配到目标存储系。
Kubernetes 内建有多种供( Provisioner ),这些供给方的名字都以"kubernetes.io”为前缀。另外,它还支持用
户依据Kubernetes规范自定义 Provisioner
parameters (参数): 存储类使用参数描述要关联到的存储卷,不过,不同的 Provisioner可用的参数各不相同
reclaimPolicy:为当前存储类动态创建的 PV 指定回收策略,可用值为 Delete (默认)和Retain ;不过,那些由管理员手工PV 的回收策略则取决于它们自身的定义
volumeBindingMode:定义如何为 PVC 完成供给和绑定,默认值为 VolumeBindingImmediate;此选项仅在启用了存储卷调度功能时才能生效
mountOptions :由当前类动态创建PV的挂载选项列表。
下面是一个定义在 gluster-storageclass.yaml 置文件中的资源清单,它定义了一个使
Gluster 存储系统的存储类glusterfs ,并通过 annotations 字段将其定义为默认的存储类
kind: StorageClass 
apiVersion : storage . k8s . io / vlbetal 
metadata: 
name : glusterfs 
provisioner : kubernetes . io/glusterfs 
parameters : 
resturl : ”http : //heketi . ilinux . io : 8080 ” 
restauthenabled :”fa lse " 
restuser : ” ik8s” 
rest user key k8s.i 。”
这里需要特别提醒读者的是, parameters.resturl 宇段用于指定 luster 存储系统的 REST
风格的访问接口,本示例中使用的“ http://heketi. ilinux.io: 8080 ”应替换为读者自己实际环境中
的可用地址 Gluster 存储系统本身并不支持这种访问方式,管理员需要额外部 heketi 配合
Gluster 以提供此类服务接口 Heketi 支持认证访问,不过只有在 restauthenabled 置为“true
时, restuser restuserkey 字段才会启用 Heketi 的设置及使用方式请参考
 
2)动态 PV 供给
动态 PV 供给的启用,需要事先由管理员 建至少一个存储类,不同的 Provisoner 的创
建方法各有不 同, 具体内容如 一节所示 另外,并非所有 存储卷插件都由 Kubernetes
内建支持 PV 动态供给功能,具体信息如图 -7
上文中定义 glusterfs 存储类资源创建完成后,便可以据此使用动态 PV 供给功能 下面
的资源清单定义在pvc-gluster-dynamic-0001.yaml 配置文件中,它将从 glusterfs 存储类中
申请使用 5GB 的存储空间:
apiVersion : vl 
kind: PersistentVolumeClaim 
metadata: 
name: pvc-gluster-dynamic-0001 
annotat ons
volume.beta.kubernetes.io/storage-class: glusterfs 
spec: 
# storageClassName :”glusterfs ” 
accessModes: 
- ReadWriteOnce 
resources : 
r equests : 
storage : 5Gi 
 
 
目前 PVC的定义中指定使用的存储类资源的方式共有两种 :一是使用 Spect.storageClassName ,另一种是使用volume.beta.kubernetes.io/storage-class注解信息
如上面示例中所示。 不过,建议仅使用一种方式,以免两者设置为不同的值出现配置错误。 接下来创建定义的 PVC ,并为其绑定状态:
~]$ kubectl create -f pvc pvc-gluster-dynamic-0001.yaml
persistentvolumecla pvc-gluster-dynamic 0001 created
通过如下命令输出的 PVC资源的描述信息可以看到, PVC 储卷已创建完成且已经完
成了 PV 绑定,绑定的 PV 资源由 persistentvolume-controller 控制器动态提供
~]$ kubectl describe pvc pvc-gluster dynamic-0001 
Name: pvc-gluster-dynam c-0001
Namespace : default 
StorageClass glusterfs  (责任编辑:liangzh)