|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

 

 

posted on   yanqi_vip  阅读(24)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示