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