一、部署CephFS StorageClass¶
CephFS 允许用户挂载一个兼容posix的共享目录到多个主机,该存储和NFS共享存储以及CIFS共享目录相似;
1、创建 StorageClass
[root@master01 ~]# cd /root/2/rook/deploy/examples/csi/cephfs/
[root@master01 cephfs]# kubectl apply -f storageclass.yaml
2、查看StorageClass
[root@master01 cephfs]# kubectl get sc
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
rook-ceph-block (default) rook-ceph.rbd.csi.ceph.com Delete Immediate true 17m
rook-cephfs rook-ceph.cephfs.csi.ceph.com Delete Immediate true 43s
说明:cephfs使用和rbd同样指定storageClassName的值便可,须要注意的是rbd只支持
ReadWriteOnce,cephfs能够支持ReadWriteMany 。
3、测试验证
创建 StorageClass
#编写创建pvc的yaml文件
[root@master01 2]# vim cephfs-pvc.yml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: redis-data-pvc
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 2Gi
storageClassName: rook-cephfs
#应用
[root@master01 2]# kubectl apply -f cephfs-pvc.yml
#验证
[root@master01 2]# kg pvc | grep redis-data-pvc
redis-data-pvc Bound pvc-df9be0ee-5950-4b3e-9c49-0ea09724d17c 2Gi RWX rook-cephfs 33s
建立一个pod来使用pvc做存储并验证持久化效果
#编写测试的yaml文件
[root@master01 2]# vim test-cephfs-pod.yml
apiVersion: v1
kind: Pod
metadata:
name: redis
spec:
nodeSelector:
storage: rook-ceph
containers:
- name: redis
image: registry.cn-hangzhou.aliyuncs.com/abroad_images/redis:6.2
ports:
- containerPort: 6379
name: redisport
volumeMounts:
- mountPath: /data
name: redis-pvc
volumes:
- name: redis-pvc
persistentVolumeClaim:
claimName: redis-data-pvc
#应用
[root@master01 2]# kubectl apply -f test-cephfs-pod.yml
#验证
[root@master01 2]# kgp | grep redis
redis 1/1 Running 0 114s
#创建数据方便进行验证
[root@master01 2]# kubectl exec -it redis -- sh
# redis-cli
127.0.0.1:6379> set mykey "hello world"
127.0.0.1:6379> get mykey
"hello world"
127.0.0.1:6379> BGSAVE
127.0.0.1:6379> exit
# ls
dump.rdb
#删除pod
[root@master01 2]# kubectl delete -f test-cephfs-pod.yml
#再次创建pod
[root@master01 2]# kubectl apply -f test-cephfs-pod.yml
#验证数据持久化
[root@master01 2]# kubectl exec -it redis -- sh
# redis-cli
127.0.0.1:6379> get mykey
"hello world"