使用ceph rdb做k8s后端存储(ceph-csi storageclass

news/2025/10/17 17:55:38/文章来源:https://www.cnblogs.com/hxlasky/p/19148607

环境:
Os:Centos 7
k8s:v1.28

ceph:14.2.22

 

###############################################ceph端分配存储##############################
1.分配osd pool和创建用户
[root@master tmp]#ceph osd pool create dynamics-pool 8
[root@master tmp]#ceph auth get-or-create client.dynamics-user mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=dynamics-pool' -o ceph.client.dynamics-user.keyring

这里我们创建了用户 dynamics-user,后面的配置会使用到

2.查看 dynamics-user 的秘钥:
[root@master tmp]# ceph auth get-key client.dynamics-user
AQAmu+xo7MsnJhAAUzvdoEWnunVNGQhdSz1o6Q==

 

#######################################storageclass部署#########################
1.查看k8s版本
[root@master my_kubernetes]# kubectl version
Client Version: v1.28.2
Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3
Server Version: v1.28.13

 

2.ceph版本
[root@master my_kubernetes]# ceph version
ceph version 14.2.22 (ca74598065096e6fcbd8433c8779a2be0c889351) nautilus (stable)

 

3.下载ceph-csi
下载地址:
https://github.com/ceph/ceph-csi/releases/tag/v3.11.0
我这里下载的是:v3.11.0

4.下载后进行解压
解压后找到如下目录:
/root/ceph-csi/ceph-csi-3.11.0/deploy/rbd/kubernetes
我们会使用该目录下的部署yaml文件

[root@master rbd]#tar -xvf ceph-csi-3.11.0.tar.gz
[root@master rbd]# pwd
/root/ceph-csi/ceph-csi-3.11.0/deploy/rbd
[root@master rbd]# ls -al
total 4
drwxrwxr-x 4 root root 45 Oct 17 09:41 .
drwxrwxr-x 6 root root 173 Apr 2 2024 ..
drwxrwxr-x 2 root root 184 Apr 2 2024 kubernetes

 

我们拷贝一份出来,根据自己的情况进行修改
[root@master rbd]#cp -r -p kubernetes my_kubernetes

 

5.编辑csi-config-map.yaml

[root@master rbd]# more /root/ceph-csi/ceph-csi-3.11.0/deploy/rbd/my_kubernetes/csi-config-map.yaml
#
# /!\ DO NOT MODIFY THIS FILE
#
# This file has been automatically generated by Ceph-CSI yamlgen.
# The source for the contents can be found in the api/deploy directory, make
# your modifications there.
#
---
apiVersion: v1
kind: ConfigMap
metadata:name: "ceph-csi-config"
data:config.json: |-[{"clusterID": "1508a2da-5991-487a-836c-d6e6527b1dc7","monitors": ["192.168.1.108:6789","192.168.1.105:6789","192.168.1.106:6789"]}]

 

 

6.创建名称空间并部署csi-config-map
kubectl create ns ceph-csi ##创建namespace --done
kubectl -n ceph-csi create -f csi-config-map.yaml

 

7.新建kms-config文件

内容保留空白

[root@master my_kubernetes]# more hxl_csi-kms-config-map.yaml
---
apiVersion: v1
kind: ConfigMap
data:config.json: |-{}
metadata:name: ceph-csi-encryption-kms-config[root@master my_kubernetes]# kubectl create -n ceph-csi -f hxl_csi-kms-config-map.yaml

 

8.新建一个ceph-config文件,ceph.conf中的内容与ceph集群中 /etc/ceph/ceph.conf 的内容保持一致

[root@master my_kubernetes]# more hxl_ceph-config-map.yaml 
---
apiVersion: v1
kind: ConfigMap
data:ceph.conf: |[global]fsid = 1508a2da-5991-487a-836c-d6e6527b1dc7public_network = 192.168.1.0/24mon_initial_members = master, node1, node2mon_host = 192.168.1.108,192.168.1.105,192.168.1.106auth_cluster_required = cephxauth_service_required = cephxauth_client_required = cephxmon_allow_pool_delete = trueosd pool default size = 2 mon clock drift allowed = 2 mon clock drift warn backoff = 30 # keyring is a required key and its value should be emptykeyring: |
metadata:name: ceph-config[root@master my_kubernetes]#kubectl -n ceph-csi create -f hxl_ceph-config-map.yaml

 

9.新建一个secret文件

[root@master my_kubernetes]# more hxl_csi-rbd-secret.yaml
apiVersion: v1
kind: Secret
metadata:name: csi-rbd-secretnamespace: ceph-csi
stringData:userID: dynamics-useruserKey: AQAmu+xo7MsnJhAAUzvdoEWnunVNGQhdSz1o6Q==
[root@k8s-master02 kubernetes]# kubectl create -f hxl_csi-rbd-secret.yaml

这里的userID和userKey填写上面步骤生成的

 

10.将所有yaml文件的namespace从default改成ceph-csi

[root@master my_kubernetes]# sed -i "s/namespace: default/namespace: ceph-csi/g" $(grep -rl "namespace: default" ./)

##检查配置文件中namespace是否更改成功
[root@master my_kubernetes]# cat csi-provisioner-rbac.yaml

 

11.创建rbac权限

[root@master my_kubernetes]#kubectl create -f csi-provisioner-rbac.yaml

 

12.部署ceph-csi相关容器

替换yaml文件中的镜像,原有镜像可能下载不了
[root@k8s-master02 kubernetes]# sed -i 's#quay.io/cephcsi/#registry.cn-shenzhen.aliyuncs.com/hxlk8s/#' csi-rbdplugin*
[root@k8s-master02 kubernetes]# sed -i 's#registry.k8s.io/sig-storage/#registry.cn-shenzhen.aliyuncs.com/hxlk8s/#' csi-rbdplugin*

[root@master my_kubernetes]# kubectl -n ceph-csi create -f csi-rbdplugin-provisioner.yaml ##这个部署默认是3个副本,我这里的环境修改成2个副本
[root@master my_kubernetes]# kubectl -n ceph-csi create -f csi-rbdplugin.yaml
[root@master my_kubernetes]# kubectl -n ceph-csi create -f csidriver.yaml
[root@master my_kubernetes]# kubectl -n ceph-csi create -f csi-nodeplugin-rbac.yaml

 

##检查pod是否都已启动

[root@master my_kubernetes]# kubectl get pod -n ceph-csi
NAME                                         READY   STATUS    RESTARTS   AGE
csi-rbdplugin-6xczb                          3/3     Running   0          142m
csi-rbdplugin-f7smn                          3/3     Running   0          142m
csi-rbdplugin-provisioner-7dbb74fb75-6kv56   7/7     Running   0          142m
csi-rbdplugin-provisioner-7dbb74fb75-rtlnt   7/7     Running   0          142m

 

13.创建StorageClass

[root@master my_kubernetes]# more hxl_storageclass.yaml
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:name: csi-rbd-sc
provisioner: rbd.csi.ceph.com
parameters:clusterID: 1508a2da-5991-487a-836c-d6e6527b1dc7pool: dynamics-poolimageFeatures: layeringcsi.storage.k8s.io/provisioner-secret-name: csi-rbd-secretcsi.storage.k8s.io/provisioner-secret-namespace: ceph-csicsi.storage.k8s.io/controller-expand-secret-name: csi-rbd-secretcsi.storage.k8s.io/controller-expand-secret-namespace: ceph-csicsi.storage.k8s.io/node-stage-secret-name: csi-rbd-secretcsi.storage.k8s.io/node-stage-secret-namespace: ceph-csicsi.storage.k8s/fstype: ext4
reclaimPolicy: Delete
allowVolumeExpansion: true
mountOptions:- discard[root@k8s-master02 kubernetes]# kubectl create -f hxl_storageclass.yaml
storageclass.storage.k8s.io/csi-rbd-sc created[root@master my_kubernetes]# kubectl get sc
NAME         PROVISIONER        RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
csi-rbd-sc   rbd.csi.ceph.com   Delete          Immediate           true                   5s

 

14.创建PV

可以直接使用安装包自带的pvc.yaml文件,目录如下:

cd /root/ceph-csi/ceph-csi-3.11.0/examples/rbd
[root@master rbd]# more pvc.yaml
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: rbd-pvc
spec:accessModes:- ReadWriteOnceresources:requests:storage: 1GistorageClassName: csi-rbd-sc[root@master rbd]#kubectl create -f pvc.yaml[root@master rbd]# kubectl get pvc
NAME      STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
rbd-pvc   Bound    pvc-aa4c6cc7-6a3c-42d9-8a7c-53b162162073   1Gi        RWO            csi-rbd-sc     2s

 

15.测试 pod 挂载 pvc

15.1 准备yaml文件

[root@master ceph_test]# more /root/ceph-csi/ceph-csi-3.11.0/deploy/rbd/my_kubernetes/rbd-test-pod1.yml
apiVersion: v1
kind: Pod
metadata:name: rbd-test-pod1
spec:containers:- name: nginximage: registry.cn-shenzhen.aliyuncs.com/hxlk8s/nginx:latestimagePullPolicy: IfNotPresentvolumeMounts:- name: data-volumemountPath: /usr/share/nginx/html/volumes:- name: data-volumepersistentVolumeClaim:claimName: rbd-pvcreadOnly: false

 

15.2 应用
[root@master my_kubernetes]# kubectl apply -f rbd_nginx_deployment.yml

 

15.3 查看运行情况

[root@master my_kubernetes]# kubectl get pods
NAME                  READY   STATUS    RESTARTS   AGE
rbd-d6799c7fc-44cp2   1/1     Running   0          30s

 

15.4 进入容器查看

[root@master my_kubernetes]#kubectl exec -it rbd-d6799c7fc-44cp2 -- bash
root@rbd-d6799c7fc-44cp2:/# df -hT |grep /dev/rbd0
/dev/rbd0               ext4     976M  2.6M  958M   1% /usr/share/nginx/html

可以看到/dev/rbd0已经被格式化成ext4并且挂载到了/usr/share/nginx/html

 

15.5 进入容器修改内容

[root@master my_kubernetes]#kubectl exec -it rbd-d6799c7fc-44cp2 -- bash
root@rbd-d6799c7fc-44cp2:/# cd /usr/share/nginx/html
root@rbd-d6799c7fc-44cp2:/usr/share/nginx/html# ls -al
total 20
drwxr-xr-x 3 root root  4096 Oct 17 07:51 .
drwxr-xr-x 3 root root    18 Aug 13 18:52 ..
drwx------ 2 root root 16384 Oct 17 07:51 lost+found
root@rbd-d6799c7fc-44cp2:/usr/share/nginx/html# echo 123 > index.html
root@rbd-d6799c7fc-44cp2:/usr/share/nginx/html# chmod 644 index.html

 

15.6 访问容器查看内容

[root@master my_kubernetes]# kubectl get pods -o wide
NAME                  READY   STATUS    RESTARTS   AGE   IP              NODE    NOMINATED NODE   READINESS GATES
rbd-d6799c7fc-44cp2   1/1     Running   0          3m    10.244.104.37   node2   <none>           <none>[root@master my_kubernetes]# curl 10.244.104.37
123

内容可以正常被访问到,我们将容器删除,然后让他自己重新启动一个来看看文件是否还存在

 

[root@master my_kubernetes]# kubectl delete pods rbd-d6799c7fc-44cp2
pod "rbd-d6799c7fc-44cp2" deleted

一会后自动创建一个新的pod

[root@master my_kubernetes]# kubectl get pods -owide
NAME                  READY   STATUS    RESTARTS   AGE   IP              NODE    NOMINATED NODE   READINESS GATES
rbd-d6799c7fc-5bnbl   1/1     Running   0          84s   10.244.104.38   node2   <none>           <none>

 

再次访问
[root@master my_kubernetes]# curl 10.244.104.38
123
可以看到,也是没有问题的,这样k8s就正常的使用了rbd存储

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/939071.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025 最新火烧板源头厂家推荐排行榜:自有矿山加持 + 品质卓越,芝麻灰 / 五莲花等石材采购优选指南

当前火烧板市场面临多重采购困境:部分厂家缩减生产流程导致产品色泽不均、质地松软,难以适配建筑与装修行业的高品质需求;多数中小型商家缺乏自有矿山,原材料依赖外购,常因供应中断或品质波动延误工程进度;加工精…

【IEEE出版、吉首大学主办】第二届智能机器人与自动控制国际学术会议 (IRAC 2025)

第二届智能机器人与自动控制国际学术会议 (IRAC 2025) 2025 2nd International Conference on Intelligent Robotics and Automatic Control 在这里看会议官网详情 中国-吉首 | 2025年11月28日-30日 收录类型:IEEE …

第三次课动手动脑合集

链接:https://files.cnblogs.com/files/blogs/847696/动手动脑3.zip?t=1760694634&download=true编译错误的原因是:在Test类的main方法中,尝试创建Foo类的对象obj1时,没有传递任何参数。但Foo类定义了一个带参…

2025 年火山石厂家最新推荐排行榜:聚焦自有矿藏与全自动生产,涵盖滤料填料等多品类企业权威指南人工湿地填料/人工湿地滤料/黑色/红色火山石厂家推荐

当前火山石应用已广泛覆盖污水处理、人工湿地、园林造景等多个领域,市场需求持续攀升,但采购端却面临诸多困境。不少采购方因缺乏专业判断,难以辨别厂家资质,常遭遇原料不稳定导致的产品性能波动、生产设备落后引发…

mysql5.7.44升级到8.0.34 mysql跨版本升级实战操作 windows环境

mysql5.7.44升级到8.0.34 mysql跨版本升级实战操作 windows环境背景 服务器当前数据库版本为mysql5.7.22 通过小版本直接升级到mysql5.7.44 (5.7.44是当前大版本最新状态);然后我们通过mysql5.7.44 可直接升级到my…

【SPIE出版、往届已检索】第十届能源系统、电气与电力国际学术会议 (ESEP 2025)

ESEP 2025已通过SPIE - The International Society for Optical Engineering (ISSN: 0277-786X)出版审核,EI 见刊检索稳定! 第十届能源系统、电气与电力国际学术会议 (ESEP 2025) 2025 10th International Conferenc…

2025 防火隔断厂家最新推荐排行榜:甲级防火玻璃隔断厂家深度测评,精选优质品牌助力采购决策

引言随着建筑行业对防火安全的要求日趋严苛,防火隔断作为关键防护设施,市场需求持续攀升,但行业乱象却让采购者陷入困境。部分品牌缺乏核心技术,产品耐火性能不达标,无法在火灾中有效阻隔火势与有毒烟气;新兴品牌…

2025-10-17

2025-10-17今天测试新写的npc,发现参考的那个微架构图有问题(或者说还不够完善),修改之后dummy测试程序通过了,但是add测试程序有问题,发现一直在死循环。这一刻我才意识到cpu出了问题调试起来会有多难受,这还是…

2025 年最新推荐!国内优质球墨铸铁管厂家排行榜,涵盖市政 / 给水 / 水利工程用管,助力采购高效选材

当前基础设施建设对球墨铸铁管需求持续增长,但市场品牌繁杂、质量参差不齐,部分产品存在抗压性不足、防腐性能差等问题,给工程质量埋下隐患。采购方在选择时,常因缺乏专业鉴别能力,难以精准挑选适配市政、给水、水…

Nexpose 8.24.0 for Linux Windows - 漏洞扫描

Nexpose 8.24.0 for Linux & Windows - 漏洞扫描Nexpose 8.24.0 for Linux & Windows - 漏洞扫描 Rapid7 on-prem Vulnerability Management, released Oct 15, 2025 请访问原文链接:https://sysin.org/blog/…

有趣评测小程序系统:开启视频与答题变现新创业风口

在当下小程序创业热潮中,一款兼具实用性与盈利性的工具成为众多创业者的迫切需求。有趣评测小程序系统作为 “天天变现” 的配套小程序,凭借答题与视频变现的核心功能,依托微擎系统实现便捷交付,为微信小程序创业者…

看图猜成语达人小程序:一站式趣味与变现解决方案

在小程序生态蓬勃发展的当下,兼具娱乐性与商业价值的应用成为市场热点。“看图猜成语达人” 小程序依托微擎系统,融合经典成语文化与创新互动模式,不仅为用户带来沉浸式猜谜体验,更为主理人提供低门槛、高潜力的流…

Metasploit Pro 4.22.8-20251014 (Linux, Windows) - 专业渗透测试框架

Metasploit Pro 4.22.8-20251014 (Linux, Windows) - 专业渗透测试框架Metasploit Pro 4.22.8-20251014 (Linux, Windows) - 专业渗透测试框架 Rapid7 Penetration testing, released October 15, 2025 请访问原文链接…

设备租赁归还小程序系统:免人工化租赁管理解决方案

在设备租赁场景中,人工登记效率低、押金退还流程繁琐、用户数据难追溯等问题长期困扰运营者。这款基于微擎系统开发的设备租赁归还小程序,以 “免人工” 为核心亮点,覆盖从用户租赁下单、押金垫付到管理员审核归还、…

Navcat如何上传数据大的sql文件?

1.选中当前需要导入数据库的服务器,右键选择“新建数据库”; 2.选中数据库下的表,右键打开菜单,选中 “运行SQL文件”,选中文件 3.选中文件后,其余设置保持默认,点击开始,上传文件 4.等待上传完毕,提示Finis…

实测PaddleOCR-VL:文心4.5最强衍生模型如何重构文档处理效率

百度最新开源的PaddleOCR-VL基于ERNIE-4.5-0.3B语言模型训练,以92.6分登顶OmniDocBench V1.5榜单,成为当前性能最强的OCR多模态模型。该模型突破性地采用两阶段处理架构:先通过PP-DocLayoutV2进行版面分析与阅读顺序…

高考语文 词类活用

定义:词类活用是指某些词临时改变其基本语法功能去充当其他词类,或者基本功能未变而用法比较特殊的现象。 汉语的词类和句法成分(主谓宾定状补)不存在简单的一一对应关系,但是我们可以将大多数情况下词类与句法成…

使用Scalar.AspNetCore来管理你的OpenApi

一直觉得很好的一个组件,网上介绍少得可怜,没办法,只有自己爬官网了,又是对照git又是看doc文档,总算是玩明白了,现在完全抛弃那个谁谁谁了。因人喜好各取所长吧 先来官方参考地址: https://learn.microsoft.com…

2025年市面上景观灯品牌推荐排行榜:权威解析与选择指南

摘要 随着城市化进程加速和智慧城市建设推进,景观灯行业在2025年迎来新一轮发展高峰,市场需求持续增长,注重节能环保、智能化和定制化趋势。本文基于行业数据、用户口碑和专家评测,为您呈现市面上景观灯品牌的综合…