一、遇到的问题¶
问题现象:当执行完下面命令后,名为redis的pod一直处于ContainerCreating状态,提示attacher.MountDevice failed to create newCsiDriverClient: driver name rook-ceph.cephfs.csi.ceph.com not found in the list of registered CSI drivers报错信息
[root@master01 2]# vim test-cephfs-pod.yml
apiVersion: v1
kind: Pod
metadata:
name: redis
spec:
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 -owide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
cluster-test-58f594694b-x4px9 1/1 Running 5 (24m ago) 292d 172.29.55.38 node01 <none> <none>
redis 0/1 ContainerCreating 0 35s <none> master02 <none> <none>
#查看详情
[root@master01 2]# kdp redis
...
...
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 6s default-scheduler Successfully assigned default/redis to master02
Warning FailedMount 2s (x4 over 5s) kubelet MountVolume.MountDevice failed for volume "pvc-4e2181c8-d13c-437e-9fff-cb701416c82e" : kubernetes.io/csi: attacher.MountDevice failed to create newCsiDriverClient: driver name rook-ceph.cephfs.csi.ceph.com not found in the list of registered CSI drivers
问题解决:
将pod固定部署在ceph集群节点上
#添加如下配置
nodeSelector:
storage: rook-ceph
#完整配置文件
[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 -owide | grep redis
redis 1/1 Running 0 5m17s 172.21.231.166 node02 <none> <none>
二、适用场景¶

Cephfs:
优点:
- 1、读取延迟低,I/O带宽表现良好,尤其是较大一些的文件;
- 2、灵活度高,支持k8s的所有接入模式;
- 3、支持ReadWriteMany ;
缺点:
- cephfs的小文件读写性能一般,且写入延迟偏高;
适用场景:
- 适用于要求灵活度高(支持k8s多节点挂载特性);
- 对I/O延迟不甚敏感的文件读写操作或非海量的小文件存储支持。例如:常用的 应用 / 中间件 挂载存储后端;
Ceph RBD:
优点:
-
1、I/O带宽表现良好;
-
2、读写延迟都很低;
- 3、支持镜像快照,镜像转储;
缺点:
- 不支持多节点挂载(只支持ReadWriteOnce);
适用场景:
- 对I/O带宽和延迟要求都较高,没有多个节点同时读写数据需求的应用。例如:数据库。