一、部署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"