基于kubesphere的k8s环境部署单点版本的rook-ceph

文章目录

  • 前言
  • 一、rook-ceph是什么?
  • 二、开始部署
    • 1.环境准备
    • 2.软件包准备
    • 3.下载rook-ceph文件
    • 4. 部署operator
    • 5.创建ceph集群
    • 6.创建工具容器,检查集群状态
    • 7.准备dashboard的nodeport端口映射服务
    • 8.准备prometheus的metric端口映射服务
  • 总结


前言

基于kubesphere的k8s环境部署单点版本的rook-ceph,实验性质大于使用性质,不推荐在物理资源有限的情况下使用。


一、rook-ceph是什么?

Rook is an open source cloud-native storage orchestrator, providing the platform, framework, and support for Ceph storage to natively integrate with cloud-native environments.
Rook是一个开源的云原生存储编排器,为Ceph存储提供平台、框架和支持,以便与云原生环境进行本地集成。

二、开始部署

1.环境准备

虚拟机一台

  • 镜像类型:CentOS-7-x86_64-Minimal-2009.iso
  • k8s环境:v1.23.6
  • ceph将使用的磁盘:vda(30G)、vdb(30G)、vdc(30G)

k8s的部署: 在centos7.9上以 All-in-One 模式安装 KubeSphere

2.软件包准备

安装软件包,加载rbd模块

#软件包装备
yum install -y git lvm2 gdisk
#内核加载rbd模块
modprobe rbd
lsmod | grep rbd

备注:删除残留数据,如果部署失败,一定清理下数据,不清理的话会影响下一次的部署

删除配置文件目录
rm -rf /var/lib/rook/
格式化磁盘
gdisk --zap-all /dev/vda
gdisk --zap-all /dev/vdb
gdisk --zap-all /dev/vdc
dd if=/dev/zero of=/dev/vda  bs=1M count=100 oflag=direct,dsync
dd if=/dev/zero of=/dev/vdb  bs=1M count=100 oflag=direct,dsync
dd if=/dev/zero of=/dev/vdc  bs=1M count=100 oflag=direct,dsync

3.下载rook-ceph文件

下载文件并提取核心文件到自己的部署文件夹

cd /tmp/
git clone --single-branch --branch v1.11.6 https://github.com/rook/rook.git
mkdir -p /data/rook-ceph/
cp /tmp/rook/deploy/examples/crds.yaml /data/rook-ceph/crds.yaml
cp /tmp/rook/deploy/examples/common.yaml /data/rook-ceph/common.yaml
cp /tmp/rook/deploy/examples/operator.yaml /data/rook-ceph/operator.yaml
cp /tmp/rook/deploy/examples/cluster-test.yaml /data/rook-ceph/cluster-test.yaml
cp /tmp/rook/deploy/examples/filesystem.yaml /data/rook-ceph/filesystem.yaml
cp /tmp/rook/deploy/examples/toolbox.yaml /data/rook-ceph/toolbox.yaml
cp /tmp/rook/deploy/examples/csi/rbd/storageclass.yaml /data/rook-ceph/storageclass-rbd.yaml
cp /tmp/rook/deploy/examples/csi/cephfs/storageclass.yaml /data/rook-ceph/storageclass-cephfs.yaml
cp /tmp/rook/deploy/examples/csi/nfs/storageclass.yaml /data/rook-ceph/storageclass-nfs.yaml

4. 部署operator

修改镜像仓库信息,operator.yaml中镜像仓库修改为阿里云的镜像仓库配置

ROOK_CSI_CEPH_IMAGE: "quay.io/cephcsi/cephcsi:v3.8.0"
ROOK_CSI_REGISTRAR_IMAGE: "registry.cn-hangzhou.aliyuncs.com/google_containers/csi-node-driver-registrar:v2.7.0"
ROOK_CSI_RESIZER_IMAGE: "registry.cn-hangzhou.aliyuncs.com/google_containers/csi-resizer:v1.7.0"
ROOK_CSI_PROVISIONER_IMAGE: "registry.cn-hangzhou.aliyuncs.com/google_containers/csi-provisioner:v3.4.0"
ROOK_CSI_SNAPSHOTTER_IMAGE: "registry.cn-hangzhou.aliyuncs.com/google_containers/csi-snapshotter:v6.2.1"
ROOK_CSI_ATTACHER_IMAGE: "registry.cn-hangzhou.aliyuncs.com/google_containers/csi-attacher:v4.1.0"

执行部署

# 开始部署
cd /data/rook-ceph
kubectl create -f crds.yaml
kubectl create -f common.yaml
kubectl create -f operator.yaml
# 检查operator的创建运行状态
kubectl -n rook-ceph get pod
# 输出
NAME                                 READY   STATUS    RESTARTS   AGE
rook-ceph-operator-xxxxx-xxxxx   1/1     Running   0          4m9s

5.创建ceph集群

执行部署cluster-test.yaml

kubectl create -f cluster-test.yaml
# 会部署一段时间
kubectl -n rook-ceph get pod
# 查看部署结果,当全部为Running之后部署工具容器进行集群确认

6.创建工具容器,检查集群状态

# 创建工具容器
kubectl apply -f toolbox.yaml
# 进入工具容器
kubectl -n rook-ceph exec -it deploy/rook-ceph-tools -- bash
# 查看集群状态
bash-4.4$ ceph -s cluster:id:     ec2162d1-cab0-402d-ba04-f0f3f6cfb95dhealth: HEALTH_OKservices:mon: 1 daemons, quorum a (age 11m)mgr: a(active, since 10m)osd: 3 osds: 3 up (since 10m), 3 in (since 10m)data:pools:   1 pools, 32 pgsobjects: 2 objects, 463 KiBusage:   60 MiB used, 90 GiB / 90 GiB availpgs:     32 active+clean

7.准备dashboard的nodeport端口映射服务

备注:这里使用7000端口是因为cluster-test.yaml中dashboard没有做特殊的配置,所以使用默认的mgr的7000端口

cat > /data/rook-ceph/dashboard-external-https.yaml <<EOF
apiVersion: v1
kind: Service
metadata:name: rook-ceph-mgr-dashboard-external-httpsnamespace: rook-cephlabels:app: rook-ceph-mgrrook_cluster: rook-ceph
spec:ports:- name: dashboardport: 7000protocol: TCPtargetPort: 7000nodePort: 30808selector:app: rook-ceph-mgrrook_cluster: rook-cephsessionAffinity: Nonetype: NodePort
EOF# 这里的nodeport端口建议更换为适合自己环境规划的端口
kubectl apply -f dashboard-external-https.yaml
# 输出
service/rook-ceph-mgr-dashboard-external-https created
# 获取admin用户密码
kubectl -n rook-ceph get secret rook-ceph-dashboard-password -o jsonpath="{['data']['password']}" | base64 --decode && echo

使用浏览器访问端口192.168.XXX.XX:30808,使用admin用户登陆,登陆后可以修改密码,也可以新建用户
在这里插入图片描述
成功登陆
在这里插入图片描述

8.准备prometheus的metric端口映射服务

cat > /data/rook-ceph/metric-external-https.yaml <<EOF
apiVersion: v1
kind: Service
metadata:name: rook-ceph-mgr-metric-external-httpsnamespace: rook-cephlabels:app: rook-ceph-mgrrook_cluster: rook-ceph
spec:ports:- name: metricport: 9283protocol: TCPtargetPort: 9283nodePort: 30809selector:app: rook-ceph-mgrrook_cluster: rook-cephsessionAffinity: Nonetype: NodePort
EOF# 这里的nodeport端口建议更换为适合自己环境规划的端口
kubectl apply -f metric-external-https.yaml
# 输出
service/rook-ceph-mgr-metric-external-https created

使用浏览器访问端口192.168.XXX.XX:30809
在这里插入图片描述


总结

还是开头提到的,实验性质大于使用性质。没啥其他的。实验的东西用来提供服务肯定会是一个大坑。

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

记录使用Echarts-gl实现3D地图

一、前言 最近项目需要做个大屏展示的&#xff0c;开始做了第一版用户觉得地图太过于单调了&#xff0c;给我发了一个视频&#xff0c;让我参考着做。我看着视频上的地图旋转了方向、地图有标记、看着像是3D的&#xff08;视频上的地图使用多个图层叠加起来、CSS样式做了旋转&…

Warning: [antd: Menu] `children` will be removed in next major version. Please use `items` instead.

Warning: [antd: Menu] children will be removed in next major version. Please use items instead. andt 更新导致警告 https://ant.design/components/menu-cn/ 在 4.20.0 版本后&#xff0c;我们提供了 的简写方式&#xff0c;有更好的性能和更方便的数据组织方式&#x…

关于remove的用法

java中remove的用法要密切注意自己调用的remove()方法中的&#xff0c;传入的是int类型还是一个对象。 比如上面的程序&#xff0c;list1是一个长度为4的list&#xff0c;list2是1个长度为1的list&#xff0c;但是由于list2.get(0)是一个integer 对象&#xff0c;所以会直接删…

Spring中Bean初始化和销毁的多种方式

Spring中Bean初始化和销毁的多种方式 一、Bean的多种初始化方式1.PostConstruct注解2.实现InitializingBean接口3.声明init-method方法 二、Bean的多种销毁方式1.PreDestroy注解2.实现DisposableBean接口3.声明destroy-method方法 三、总结 Spring中支持在Bean的加载时声明初始…

LayaAir destroy 销毁与 removeChild 移除节点

目录 destroy 释放内存 编码示例 removeChild 移除节点 destroy 销毁节点 1、JavaScript 运行时无法启动垃圾回收器&#xff0c;要确保一个对象能够被回收&#xff0c;需要删除对该对象的所有引用。Sprite 提供的 destory() 方法会帮助设置对象内部引用为 null。 2、例如…

Javascript removeChild()不能删除全部子节点的解决办法

在Javascript中&#xff0c;只提供了一种删除节点的方法&#xff1a;removeChild()。 removeChild() 方法用来删除父节点的一个子节点。 语法&#xff1a; parent.removeChild(thisNode) 参数说明&#xff1a; 参数 说明 thisNode 当前节点&#xff0c;即要删除的节点 parent 当…

CSDN 每日一练用例数据缺失了怎么办?

CSDN 每日一练用例数据缺失了怎么办&#xff1f; 引子1、用例与结果不匹配2、阅读理解困难3、用例数据缺失 用例数据缺失&#xff0c;却有人 AC &#xff1f;神奇的 c28761 津津的储蓄计划70093 近视的小张 小结最后的吐槽 引子 老顾最近几个月经常在 CSDN 举办的周赛上浑水摸…

Spring中bean的初始化和销毁几种实现方式详解

关联博文&#xff1a;Spring中Bean的作用域与生命周期 Bean的生命周期 &#xff1a; 创建bean对象 – 属性赋值 – 初始化方法调用前的操作 – 初始化方法 – 初始化方法调用后的操作 – …-- 销毁前操作 – 销毁方法的调用。 先放一张图吧。 【1】init-method和destroy-me…

js-removeChild()

下面给大家介绍Javascript removeChild()删除节点的方法&#xff0c;具体详情如下所示&#xff1a; 在Javascript中&#xff0c;只提供了一种删除节点的方法&#xff1a;removeChild()。 removeChild() 方法用来删除父节点的一个子节点。 语法&#xff1a; parent.removeCh…

删除节点removeChild()

removeChild() 方法从子节点列表中删除某个节点。如删除成功&#xff0c;此方法可返回被删除的节点&#xff0c;如失败&#xff0c;则返回 NULL。 语法: nodeObject.removeChild(node) 参数: node &#xff1a;必需&#xff0c;指定需要删除的节点。 我们来看看下面代码&a…

Js removeChild、addChild

1. <html><head><meta http-equiv"Content-Type" content"text/html; charsetUTF-8"><title>添加删除记录练习升级</title><link rel"stylesheet" type"text/css" href"ex_2_style/css.css&qu…

【注意】js 里面 removeChild 使用的坑

这有坑啊&#xff0c;使用removeChild 循环删除 子元素们的时候 是【0】而不是【i】 这是因为 你每次删完一个 子元素们的 下标就会发生改变 比如 allSpan【0】 allSpan【1】 removeChild(allSpan【0】) 以后 &#xff0c;allSpan【1】 就不再是 allSpan【1】了&#xff0c;…

关于removeChild() 方法

removeChild() 方法 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 开发工具与关键技术&#xff1a; JS 撰写时间&#xff1a;2021/7/8 注意红色箭头指向内容&#xff0c;本文将分为6张图片&#xff0c;并按从上到下顺序操作 1.我们先简…

4.C++多线程-- unique_lock(类模板)

1.unique_lock 1. unique_lock<mutex> myUniLock(myMutex); 完全可以取代lock_guard 2. unique_lock 也可以使用----std::adopt_lock 3.使用adopt_lock&#xff0c;之前要先使用lock. 4.std::chrono::milliseconds my_sleepTime(20000)//20000毫秒 std::this_thread:…

打开浏览器的同时会在主页外同时打开芒果TV,抖音等网站

问题&#xff1a;每次打开谷歌浏览器的同时会同时打开芒果TV&#xff0c;抖音等网站。导致每次都要进行网页关闭&#xff0c;非常麻烦。 解决&#xff1a;在扩展程序中有一个叫做“省钱购”的程序&#xff0c;只需要将其移走就可以了。 扩展程序的位置&#xff1a;自定义及控…

最新超漂亮UI仿芒果TV听书网站模板双端+苹果CMS内核

正文: 苹果cms超漂亮UI高仿芒果TV听书网站模板带手机端。 手机版修改logo&#xff0c;ting_wap/images/logo.png 电脑版修改logo&#xff0c;ting_pc/img/logo.png 编辑推荐后台推荐5颗星&#xff0c;新势力/热播榜单后台推荐9颗星。 程序: wwyfeu.lanzoum.com/iQ0F00gbt…

芒果播放器介绍

芒果播放器 芒果全能播放器能播放所有格式的视频、音频文件、以及主流图片文件。短小精悍、简洁明了、绿色&#xff0c;无广告&#xff0c;其FLASH播放比暴风音影更真实。原本为教育教学服务&#xff0c;广大师生反应较好&#xff0c;现全面推广。 【1.1版下载地址】 http://…

非常简单下载芒果tv视频的方法(无需安装任何软件)

1、打开芒果tv网站&#xff0c;找到需要下载的视频地址比如&#xff1a;https://www.mgtv.com/b/328606/5533377.html?fpase 2、打开网页&#xff1a;https://www.parsevideo.com/mgtv/ 3、输入需要分析的视频地址&#xff1a; 4、分析结果如下&#xff0c;并点击第二行的下…

最新芒果TV视频下载方法-马赛克视频助手

芒果TV是一款资源丰富的互联网视频平台。它除了可以看视频外&#xff0c;还可以将这些视频下载下来。但官方是不支持视频下载的&#xff0c;那么芒果TV该怎么下载视频么&#xff1f;接下来就让我们一起去看看吧。 今天小编就教大家如何把上面喜欢的视频下载下来 1.这里我们需…