kubernetes存储方案(二):StorageClass实现pv自动化
StorageClass介绍
StorageClass实现了pv的自动化,在动态资源供应模式下,通过StorageClass和PVC完成资源动态绑定(系统自动生成PV),并供Pod使用的存储管理机制。
Kubernetes提供了一套可以自动创建PV的机制,即:Dynamic Provisioning。而这个机制的核心在于StorageClass这个API对象。
StorageClass对象会定义下面两部分内容:
- PV的属性。比如,存储类型,Volume的大小等。
- 创建这种PV需要用到的存储插件,即存储制备器。
有了这两个信息之后,Kubernetes就能够根据用户提交的PVC,找到一个对应的StorageClass,之后Kubernetes就会调用该StorageClass声明的存储插件,进而创建出需要的PV。
简单的说,创建一个StorageClass后,后续不管哪个命名空间的pod需要pvc,都能通过这个StorageClass自动创建pv,不需要频繁的创建pv。
参考文档:https://kubernetes.io/zh-cn/docs/concepts/storage/storage-classes/#glusterfs
StorageClass使用案例
比如:
clusterid: 034f10398853b67682761d318f624d33
resturl: http://10.1.30.30:8080
restuser: admin
restuserkey: adminkey
创建 StorageClass
# cat storageclass-glusterfs.yaml
allowVolumeExpansion: true
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
annotations: #配置集群默认的 StorageClass
storageclass.kubernetes.io/is-default-class: "true"
name: glusterfs #storageclass的名称
parameters:
clusterid: 034f10398853b67682761d318f624d33 # gfs集群的id
gidMax: "50000"
gidMin: "40000"
restauthenabled: "true"
resturl: http://10.1.30.30:8080 #gfs的管理工具heketi的地址
restuser: admin
restuserkey: adminkey
volumetype: replicate:2
provisioner: kubernetes.io/glusterfs
reclaimPolicy: Delete
volumeBindingMode: Immediate
# 创建 storageclass 资源
kubectl create -f storageclass-glusterfs.yaml
创建pvc
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: dmp-datart-pvc #pvc的名称
namespace: dmp-dev
spec:
storageClassName: glusterfs #storageclass的名称
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
在pod中volumes的配置
volumeMounts:
- mountPath: /datart/files #容器中的路径
name: dmp-datart-storage # volumes名称
volumes:
- name: dmp-datart-storage # volumes名称
persistentVolumeClaim:
claimName: dmp-datart-pvc #pvc的名称
securityContext:
runAsUser: 65534
runAsGroup: 65534
fsGroup: 65534
fsGroupChangePolicy: Always