一、遇到的问题

问题现象:当执行完下面命令后,名为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>

二、适用场景

Day02-持久化存储NFS和CEPH-图11

Cephfs:

优点:

  • 1、读取延迟低,I/O带宽表现良好,尤其是较大一些的文件;
  • 2、灵活度高,支持k8s的所有接入模式;
  • 3、支持ReadWriteMany ;

缺点:

  • cephfs的小文件读写性能一般,且写入延迟偏高;

适用场景:

  • 适用于要求灵活度高(支持k8s多节点挂载特性);
  • 对I/O延迟不甚敏感的文件读写操作或非海量的小文件存储支持。例如:常用的 应用 / 中间件 挂载存储后端;

Ceph RBD:

优点:

  • 1、I/O带宽表现良好;

  • 2、读写延迟都很低;

  • 3、支持镜像快照,镜像转储;

缺点:

  • 不支持多节点挂载(只支持ReadWriteOnce);

适用场景:

  • 对I/O带宽和延迟要求都较高,没有多个节点同时读写数据需求的应用。例如:数据库