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

news2024/12/22 18:50:14

文章目录

  • 前言
  • 一、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-f0f3f6cfb95d
    health: HEALTH_OK
 
  services:
    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 pgs
    objects: 2 objects, 463 KiB
    usage:   60 MiB used, 90 GiB / 90 GiB avail
    pgs:     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-https
  namespace: rook-ceph
  labels:
    app: rook-ceph-mgr
    rook_cluster: rook-ceph
spec:
  ports:
  - name: dashboard
    port: 7000
    protocol: TCP
    targetPort: 7000
    nodePort: 30808
  selector:
    app: rook-ceph-mgr
    rook_cluster: rook-ceph
  sessionAffinity: None
  type: 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-https
  namespace: rook-ceph
  labels:
    app: rook-ceph-mgr
    rook_cluster: rook-ceph
spec:
  ports:
  - name: metric
    port: 9283
    protocol: TCP
    targetPort: 9283
    nodePort: 30809
  selector:
    app: rook-ceph-mgr
    rook_cluster: rook-ceph
  sessionAffinity: None
  type: NodePort
EOF

# 这里的nodeport端口建议更换为适合自己环境规划的端口
kubectl apply -f metric-external-https.yaml
# 输出
service/rook-ceph-mgr-metric-external-https created

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


总结

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

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

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

相关文章

第16章:InnoDB数据存储结构

一、数据库的存储结构&#xff1a;页 1.磁盘与内存的交互基本单位:页 InnoDB将表中数据划分多个页来存储&#xff0c;InnoDB中页的大小默认是16KB 在数据库中&#xff0c;不论读一行&#xff0c;还是读多行&#xff0c;都是将这些行所在的页从磁盘加载到内存。数据库管理存储…

自动化测试,B、C接口要将A接口返回的参数作为入参,有哪些方法?

在进行自动化测试时&#xff0c;如果需要将A接口返回的参数作为B、C接口的入参&#xff0c;可以通过以下几种方法实现&#xff1a; 如果你想学习自动化测试&#xff0c;我这边给你推荐一套视频&#xff0c;这个视频可以说是B站百万播放全网第一的自动化测试教程&#xff0c;同…

PyTorch 深度学习 || PyTorch 编程基础

PyTorch 编程基础 文章目录 PyTorch 编程基础1. backword 求梯度2. 常用的激活函数2.1 Sigmoid 函数2.2 ReLu 激活函数2.3 Leakly ReLu 激活函数 2. 常用损失函数2.1 均方误差损失函数2.2 L1范数误差损失函数2.3 交叉熵损失函数 3. 优化器 1. backword 求梯度 import torchw …

(十)服务器K8S集群部署SpringBoot项目实战

1.准备springboot项目 可以在 https://start.spring.io/网站准备一个项目&#xff0c;这里作为k8s的学习所以springboot项目中准备一个简单的访问接口即可。 2.服务器环境准备 安装Jdk 1.更新系统软件包&#xff1a; sudo yum update2.安装 OpenJDK 11&#xff1a; sudo…

陶瓷板视觉检测系统和运动控制有什么联系?

陶瓷板视觉检测系统是一种利用现代计算机视觉技术对陶瓷板进行缺陷检测的设备&#xff0c;而运动控制则是一种控制运动的技术&#xff0c;两者之间存在着密切的联系。下面我们将详细介绍陶瓷板视觉检测系统和运动控制之间的联系。 一、陶瓷板视觉检测系统 陶瓷板视觉检测系统…

Redis面试核心技术点和缓存相关问题

目录 Redis的数据结构和原理 Redis持久化&#xff1a;RDB和AOF Redis的集群设计 缓存雪崩、击穿、穿透 高并发场景下缓存和数据库更新策略 Redis的大key和热key和大value 本地缓存 磁盘IO和网络开销 相比于 请求内存IO 要高上千倍&#xff0c;如果某个数据从数据库磁盘读…

第17章:存储引擎

一、查看存储引擎 1.什么是存储引擎 MySQL的存储引擎就是表的类型 2.查看mysql存储引擎 show engines; 二、设置系统默认的存储引擎 1.查看默认的存储引擎 select default_storage_engine; 2.修改默认存储引擎 set default_storage_engineMyISAM; 三、设置表的存储引擎 …

微信小程序开发之云函数本地调试

环境 微信开发者工具 Stable 1.06.2303220云开发控制台 v1.5.47 简介 微信云开发提供了云函数本地调试功能&#xff0c;在本地提供了一套与线上一致的 Node.js 云函数运行环境&#xff0c;让开发者可以在本地对云函数调试&#xff1a; 在本地调试时&#xff0c;可以设置断点…

【MD5知识详解】【面试知识】

MD5概述&#xff1a; MD5消息摘要算法&#xff0c;属Hash算法一类。MD5算法对输入任意长度的消息进行运行&#xff0c;产生一个128位的消息摘要(32位的数字字母混合码)。 MD5主要特点: 不可逆&#xff0c;相同数据的MD5值肯定一样&#xff0c;不同数据的MD5值不一样 (一个MD5理…

微信小程序nodejs+vue个人身体健康管理系统56b65

开发语言 node.js 框架&#xff1a;Express 前端:Vue.js 数据库&#xff1a;mysql 数据库工具&#xff1a;Navicat 开发软件&#xff1a;VScode 。配置文件 (自动编号、配置参数值、配置参数名称)&#xff1b; 论坛交流 (自动编号、用户id、状态、父节点id、帖子标题、用户名…

ndoejs基于Vue.js二手书交易网站系统x3oh4

开发语言 node.js 框架&#xff1a;Express 前端:Vue.js 数据库&#xff1a;mysql 数据库工具&#xff1a;Navicat 开发软件&#xff1a;VScode 本毕业设计的内容是设计并且实现一个基于vue框架的二手书交易系统。它是在Windows下&#xff0c;以MYSQL为数据库开发平台&#xf…

chatgpt赋能python:Python取消warning指南:如何避免和处理警告

Python取消warning指南&#xff1a;如何避免和处理警告 如果您已经在使用Python编程&#xff0c;那么您一定会遇到过警告&#xff08;warning&#xff09;这个问题。虽然警告有时可能很有用&#xff0c;但在特定情况下&#xff0c;它们可能会引起程序错误或产生意想不到的行为…

Depcheck 检查前端项目中未使用的依赖包

前言 随着前端项目的迭代&#xff0c;项目中一部分的依赖包可能没被项目所使用的&#xff0c;手动查找这些依赖包耗时又繁琐&#xff0c;有没有根据能够快速的帮助我们识别和清理项目中未使用的依赖包呢&#xff1f; Depcheck 简介 Depcheck 是一款用于分析项目中依赖关系的…

windows下的SVN客户端访问ubuntu下的SVN服务器

目录 第一部分 windows创建本地版本库、连接ubuntu的SVN服务器 步骤0&#xff1a; 步骤一&#xff1a;创建windows本地版本库 步骤二&#xff1a;checkout检测 步骤三&#xff1a;输入之前配置的用户名和密码 第二部分 windows上传文件至SVN服务器 步骤一&#xff1a;添加…

Python数据攻略-DataFrame的创建与基础特性

大家好&#xff0c;我是Mr数据杨&#xff0c;今天我带来的是一本既实用又有趣的Python教程笔记&#xff0c;主角是Pandas DataFrame。它就像《三国演义》中的诸葛亮&#xff0c;机智、实用&#xff0c;可以帮助我们轻松处理各种数据问题。 我们来看如何创建诸葛亮——这个Data…

实现UDP通信(socket接口函数扩展)

一、write/read到send/recv 函数原型&#xff1a; ussize_t send(int sockfd, const void *buf, size_t len, int flags);//发送 ussize_t recv(int sockfd, void *buf, size_t len, int flags);//接收 前三个参数同read/write一样&#xff1b; ussize_t read(int fd, voi…

2023CCPC河南省赛 VP记录

感觉现在的xcpc&#xff0c;风格越来越像CF&#xff0c;不是很喜欢&#xff0c;还是更喜欢多点算法题的比赛 VP银了&#xff0c;VP银也是银 感觉省赛都是思维题&#xff0c;几乎没有算法题&#xff0c;感觉像打了场大型的CF B题很简单没开出来&#xff0c;一直搞到最后&…

Android crash 流程详解(二):NE

源码基于&#xff1a;Android R 接上一篇博文&#xff1a;《Android crash 流程详解(一)&#xff1a;JE》 0. 前言 在上一篇博文剖析了java layer exception 的处理流程&#xff0c;本文将继续剖析 Android crash 的另一部分&#xff0c;即 native 端的 crash&#xff0c;又称…

【JavaEE】网络编程之UDP套接字

目录 1、网络编程基础 2、UDP数据报套接字编程 2.1.DatagramSocket API&#xff08;方法&#xff09; 2.2、DatagramPacket API&#xff08;方法&#xff09; 2.3、InetSocketAddress API 3、基于UDP socket写一个回显服务器 3.1、服务器端 3.2 、客户端 3.3、完…

机器学习常识 21: 卷积神经网络

摘要: 卷积操作保留体现了空间相关性. 1. 卷积操作 图 1. 卷积操作 Valid 方式. 图 1 下平面标定的 3 3 3 \times 3 33 区域, 对应于个 3 3 3 \times 3 33 卷积, 这 9 9 9 个数对应着相乘, 然后相加, 获得了上平面标定的 1 1 1 个小区域的值. 注意这里不是矩阵的乘法. 卷…