|NO.Z.00246|——————————|CloudNative|——|KuberNetes&存储进阶.V12|——|Ceph.v06|ceph测试|ceph块存储|
一、ceph块存储的使用:创建StorageClass和ceph的存储池
### --- 注:块存储一般用于一个Pod挂载一块存储使用,相当于一个服务器新挂了一个盘,只给一个应用使用。
~~~ # 进入StorageClass配置文件目录并修改配置参数
~~~ 注:因为我是试验环境,所以将副本数设置成了2(不能设置为1),生产环境最少为3,且要小于等于osd的数量,其他配置可以参考视频:
[root@k8s-master01 ceph]# pwd
/root/rook/cluster/examples/kubernetes/ceph
[root@k8s-master01 ceph]# vim csi/rbd/storageclass.yaml
spec:
failureDomain: host
replicated:
size: 2
### --- 创建StorageClass和存储池
[root@k8s-master01 ceph]# kubectl create -f csi/rbd/storageclass.yaml -n rook-ceph
cephblockpool.ceph.rook.io/replicapool created
storageclass.storage.k8s.io/rook-ceph-block created
### --- 查看创建的cephblockpool和storageClass(StorageClass没有namespace隔离性)
[root@k8s-master01 ceph]# kubectl get cephblockpool -n rook-ceph
NAME AGE
replicapool 27s
[root@k8s-master01 ceph]# kubectl get sc
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
rook-ceph-block rook-ceph.rbd.csi.ceph.com Delete Immediate true 32s
二、此时可以在ceph dashboard查看到该Pool,如果没有显示说明没有创建成功

三、挂载测试:创建一个MySQL服务
### --- 进入到k8s安装目录下
[root@k8s-master01 ceph]# cd /root/rook/cluster/examples/kubernetes
### --- 创建一个mysql服务
[root@k8s-master01 kubernetes]# kubectl create -f mysql.yaml
service/wordpress-mysql created
persistentvolumeclaim/mysql-pv-claim created
deployment.apps/wordpress-mysql created
### --- mysql.yaml文件下有一个PVC配置
~~~ pvc会连接刚才创建的storageClass,然后动态创建pv,然后连接到ceph创建对应的存储
~~~ 之后创建pvc只需要指定storageClassName为刚才创建的StorageClass名称即可连接到rook的ceph。如果是statefulset,只需要将volumeTemplateClaim里面的Claim名称改为StorageClass名称即可动态创建Pod,
~~~ claimName为pvc的名称
~~~ 因为MySQL的数据不能多个MySQL实例连接同一个存储,所以一般只能用块存储。相当于新加了一块盘给MySQL使用。
[root@k8s-master01 kubernetes]# vim mysql.yaml
spec:
storageClassName: rook-ceph-block
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Gi
spec:
containers:
- image: mysql:5.6
name: mysql
env:
- name: MYSQL_ROOT_PASSWORD
value: changeme
ports:
- containerPort: 3306
name: mysql
volumeMounts:
- name: mysql-persistent-storage
mountPath: /var/lib/mysql
volumes:
- name: mysql-persistent-storage
persistentVolumeClaim:
claimName: mysql-pv-claim
### --- 创建完成后可以查看创建的po、pvc和pv
[root@k8s-master01 kubernetes]# kubectl get po
NAME READY STATUS RESTARTS AGE
busybox 1/1 Running 1 63m
wordpress-mysql-6965fc8cc8-fvtrt 1/1 Running 0 2m59s
[root@k8s-master01 kubernetes]# kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
mysql-pv-claim Bound pvc-a22e54cf-9d96-4070-b3a7-90a2fa73c249 20Gi RWO rook-ceph-block 3m8s
[root@k8s-master01 kubernetes]# kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
pvc-a22e54cf-9d96-4070-b3a7-90a2fa73c249 20Gi RWO Delete Bound default/mysql-pv-claim rook-ceph-block 3m9s
四、此时在ceph dashboard上面也可以查看到对应的image

Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
——W.S.Landor
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了