一、部署RBD StorageClass

Ceph 可以同时提供对象存储 RADOSGW、块存储 RBD、文件系统存储 Ceph FS。

RBD 即 RADOS Block Device 的简称,RBD 块存储是最稳定且最常用的存储类型。

RBD 块设备类似磁盘可以被挂载。

RBD 块设备具有快照、多副本、克隆和一致性等特性,数据以条带化的方式存储在

Ceph 集群的多个 OSD 中。

注意:RBD只支持ReadWriteOnce存储类型!

1、创建 StorageClass

[root@master01 ~]# cd /root/2/rook/deploy/examples/csi/rbd
[root@master01 rbd]# kubectl apply -f storageclass.yaml

2、校验pool安装情况

[root@master01 rbd]# kubectl -n rook-ceph exec -it $(kubectl -n rook-ceph get pod -l "app=rook-ceph-tools" -o jsonpath='{.items[0].metadata.name}') -- bash

bash-4.4$ ceph osd lspools
1 myfs-metadata
2 .mgr
3 myfs-replicated
4 replicapool

3、查看StorageClass

[root@master01 rbd]# kubectl get sc
NAME              PROVISIONER                  RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
rook-ceph-block   rook-ceph.rbd.csi.ceph.com   Delete          Immediate           true                   3m41s

4、将Ceph设置为默认存储卷

[root@master01 rbd]# kubectl patch storageclass rook-ceph-block -p '{"metadata":{"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'

修改完成后再查看StorageClass状态(有个default标识)

[root@master01 rbd]# kubectl get sc
NAME                        PROVISIONER                  RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
rook-ceph-block (default)   rook-ceph.rbd.csi.ceph.com   Delete          Immediate           true                   5m12s

5、测试验证

创建pvc指定 storageClassName 为 rook-ceph-block

[root@master01 2]# vim rbd-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-mysql-data
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 2Gi
  storageClassName: rook-ceph-block

[root@master01 2]# kubectl apply -f  rbd-pvc.yaml

查看是否创建成功

[root@master01 2]# kg pvc | grep my-mysql-data
NAME            STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS      AGE
my-mysql-data   Bound    pvc-8e6b9c18-bc10-485c-814f-4592f775992b   2Gi        RWO            rook-ceph-block   28s