[单master节点k8s部署]31.ceph分布式存储(二)

Ceph配置

Ceph集群通常是一个独立的存储集群,可以部署在 Kubernetes 集群之外。Ceph 提供分布式存储服务,能够通过 RADOS、CephFS、RBD(块存储)、和 RGW(对象存储)等方式与 Kubernetes 集成。即使 Ceph 部署在 Kubernetes 外部,它依然可以通过存储插件(如 Rook 或 CSI)来为 Kubernetes 提供存储服务。这种架构允许 Ceph 集群和 Kubernetes 集群独立扩展,且 Ceph 可以被多个 Kubernetes 集群或者其他系统(如 OpenStack)同时使用。

教程中配置ceph集群有三个节点,分别是master节点,monitor节点和OSD(object storage deamon)节点。

master节点主要用于管理 Ceph 集群,可以作为管理员机器来执行 Ceph 的命令行工具(如 ceph CLI)和集群的配置操作。这台机器一般会安装 Ceph 部署工具(如 ceph-deploy),但它通常不需要承担存储和监控的职责。事实上master节点不是必须的,可以在ceph集群的任意节点安装ceph CLI,但为了方便管理和保持隔离,通常会保留一个专门的管理节点。

Ceph Monitor (MON) 节点负责管理集群的健康状态,保存集群的元数据(比如集群成员、映射关系、状态信息等)。Monitor 节点会参与选举,决定集群是否可以正常操作。

OSD(Object Storage Daemon)是 Ceph 集群中存储数据的主要组成部分。每一个 OSD 实际上代表一个存储硬盘或者存储分区,负责读写数据、复制数据和心跳检测。

事实上一个高可用的ceph集群需要至少三个monitor和 OSD节点来保证数据复制和高可用性。Monitor节点可以完成仲裁,而越多的OSD节点可以保证冗余和高效的数据存取。

[root@master1-admin ~]# yum install python-setuptools ceph-deploy -y #在 master1-admin、node1-monitor 和 node2-osd 节点安装 ceph
[root@master1-admin]# yum install ceph ceph-radosgw -y
[root@node1-monitor ~]# yum install ceph ceph-radosgw -y
[root@node2-osd ~]# yum install ceph ceph-radosgw -y

ceph-deploy:是 Ceph 的部署工具,用于从管理节点(通常是 admin 节点)管理和部署 Ceph 集群。它允许你从一个节点管理整个 Ceph 集群,包括创建 OSD、Monitor 节点等。

在 master节点安装了ceph-deploy,并且在所有节点安装ceph 和ceph-rados gateway。

配置master

创建一个目录,用于保存ceph-deploy生成的配置文件信息:
在目录中执行命令生成一个master节点,一个monitor节点和一个osd节点

[root@master1-admin ceph ~]# cd /etc/ceph
[root@master1-admin ceph]# ceph-deploy new master1-admin node1-monitor node2-
osd
[root@master1-admin ceph]# ls
#生成了如下配置文件
ceph.conf ceph-deploy-ceph.log ceph.mon.keyring

修改ceph.conf配置文件:

[global]
fsid = af5cd413-1c53-4035-90c6-95368eef5c78
mon_initial_members = node1-monitor
mon_host = 192.168.40.201
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
filestore_xattr_use_omap = true
osd_pool_default_size = 2
mon clock drift allowed = 0.500
mon clock drift warn backoff = 10
把 osd_pool_default_size = 2 加入[global]段,这样只有 2 个 osd 也能达到 active+clean 状态。
mon clock drift allowed #监视器间允许的时钟漂移量默认值 0.05
mon clock drift warn backoff #时钟偏移警告的退避指数。默认值 5
ceph 对每个 mon 之间的时间同步延时默认要求在 0.05s 之间,这个时间有的时候太短
了。所以这里将这两个参数设置为0.5和10。

配置monitor

在master节点初始化monitor:

[root@master1-admin]# ceph-deploy mon create-initial

收集所有密钥: 

配置OSD

 在master节点上将三个节点的目录配置为OSD的存储目录。

[root@ master1-admin ceph]# cd /etc/ceph/
[root@master1-admin ceph]# ceph-deploy osd prepare master1-admin:/dev/sdb 
[root@master1-admin ceph]# ceph-deploy osd prepare node1-monitor:/dev/sdb 
[root@master1-admin ceph]# ceph-deploy osd prepare node2-osd:/dev/sdb

运行成功后激活OSD,并查看状态:

[root@master1-admin ceph]# ceph-deploy osd activate master1-admin:/dev/sdb1
[root@master1-admin ceph]# ceph-deploy osd activate node1-monitor:/dev/sdb1
[root@master1-admin ceph]# ceph-deploy osd activate node2-osd:/dev/sdb1
[root@ master1-admin ceph]# ceph-deploy osd list master1-admin node1-monitor
node2-osd

激活成功的状态: 

创建文件系统 

在指定这些节点上创建 MDS 服务,帮助管理文件系统的元数据。

mds 是 Ceph 文件系统 (CephFS) 中的 元数据服务器(Metadata Server,MDS)。在 CephFS 中,元数据服务器负责管理和存储文件系统的元数据,例如目录结构、文件权限和其他与文件系统操作相关的信息。元数据与实际文件数据分开存储和管理,因此 MDS 主要处理与文件系统操作相关的请求,例如列出目录、查找文件、创建和删除文件等。

通常是 1 到 2 个活动 MDS 节点就可以处理大量的文件系统请求。大多数情况下,不需要每个 OSD 节点都运行 MDS 服务。 

[root@ master1-admin ceph]# ceph-deploy mds create master1-admin node1-monitor
node2-osd

上面的命令会在 master1-adminnode1-monitornode2-osd 这三个节点上各创建一个 MDS 实例。也就是说,最终你会有 3 个 MDS 实例,每个节点一个。 

首先在master节点上通过osd创建池,每一个池包含26个PG。这里的池不一定在master节点上。创建数据池时,Ceph 会使用 CRUSH 算法自动决定数据的分布,而无需手动指定要在哪些 OSD 上创建池。Ceph 会根据池的配置和 OSD 的状态自动选择合适的 OSD 来存储数据。

[root@master1-admin ceph]# ceph osd pool create cephfs_data 26
pool 'cephfs_data' created
[root@master1-admin ceph]# ceph osd pool create cephfs_metadata 26
pool 'cephfs_metadata' created

PG(Placement Group) 是 Ceph 用来分配和管理数据的单位。每个池中的对象会被分配到一个 PG 中,PG 再被分配到 OSD 上。PG 数量的选择对集群性能和数据均衡性有很大影响。

创建一个文件系统fs,名称叫做xianchao,其中元数据池是ceph_metadata,数据池是ceph_data。随后列举文件系统,发现我们刚才创建的这个文件系统。

[root@master1-admin ceph]# ceph fs new xianchao cephfs_metadata cephfs_data
new fs with metadata pool 2 and data pool 1
[root@master1-admin ceph]# ceph fs ls
name: xianchao, metadata pool: cephfs_metadata, data pools: [cephfs_data]

CephFS 允许你在创建文件系统时配置多个数据池。每个数据池可以用于存储不同类型的数据,以满足不同的需求。例如,你可以创建一个池用于存储用户数据,另一个池用于存储日志或临时文件。CephFS 必须有一个元数据池,用于存储文件系统的元数据,如文件名、目录结构、权限等。这是管理文件系统结构和操作的关键。

[root@ master1-admin ceph]# ceph mds stat # 查看 mds 节点状态
xianchao:1 {0=master1-admin=up:active} 2 up:standby

0=master1-admin 指的是 master1-admin 节点正在运行一个 MDS 实例,标识符为 0。
up:standby 表示当前有一个 MDS 处于**待命(standby)**状态,作为活跃 MDS 的备份。如果当前活跃的 MDS 出现问题,这个 standby MDS 将自动接管,保持文件系统的高可用性。

查看ceph健康状态:

[root@master1-admin ceph]# ceph -s
cluster cd296a0b-1f61-4b9f-8cc3-0a57dfab00eb
health HEALTH_OK
monmap e1: 3 mons at {master1-admin=192.168.40.200:6789/0,node1-monitor=192.168.40.201:6789/0,node2-osd=192.168.40.202:6789/0}
election epoch 4, quorum 0,1,2 master1-admin,node1-monitor,node2-osd
fsmap e7: 1/1/1 up {0=node2-osd=up:active}, 2 up:standby
osdmap e20: 3 osds: 3 up, 3 in
flags sortbitwise,require_jewel_osds
pgmap v51: 116 pgs, 3 pools, 2068 bytes data, 20 objects
323 MB used, 164 GB / 164 GB avail
116 active+clean

MGR

Mgr 是 Ceph 集群的管理守护进程,它负责收集和报告集群状态、性能指标,并提供集群管理接口。模块化架构使得 Mgr 可以扩展和自定义,管理员可以根据需求加载不同的管理模块。

K8S挂载Ceph

kubernetes 要想使用 ceph,需要在 k8s 的每个 node 节点安装 ceph-common,把 ceph节点上的 ceph.repo 文件拷贝到 k8s 各个节点/etc/yum.repos.d/目录下,然后在 k8s 的各个节点 yum install ceph-common -y
部署Ceph的网段需要和K8s在一个网段,保证可以通信。
[root@master1-admin ~]# scp /etc/yum.repos.d/ceph.repo master:/etc/yum.repos.d/
[root@master1-admin ~]# scp /etc/yum.repos.d/ceph.repo node1:/etc/yum.repos.d/
[root@master]yum install ceph-common -y
[root@mnode1]yum install ceph-common -y

创建ceph rbd

将 ceph 配置文件拷贝到 k8s 的控制节点和工作节点
[root@master1-admin ~]# scp /etc/ceph/* master:/etc/ceph/
[root@master1-admin ~]# scp /etc/ceph/* node1:/etc/ceph/
[root@master1-admin ~]# ceph osd pool create k8srbd1 56
pool 'k8srbd' created
[root@master1-admin ~]# rbd create rbda -s 1024 -p k8srbd1
[root@master1-admin ~]# rbd feature disable k8srbd1/rbda object-map fast-diff 
deep-flatten

创建了一个资源池叫做k8srbd1,并创建了块存储rbda,大小为 1024MB,并存储在 k8srbd1 池中。

禁用了RBD映像的几个功能。RBD 是块设备的类型,而 rbda 是该类型的一个具体实例。你可以创建多个 RBD 镜像,比如 rbdarbdb,它们都是 RBD 的具体表现。

值得注意的是,在ceph中创建文件系统的时需要先创建metadata和data,然后创建文件系统,指定metadata和data,metadata 会由MDS管理。

ceph osd pool create cephfs_metadata 128
ceph osd pool create cephfs_data 128
ceph fs new mycephfs cephfs_metadata cephfs_data

而创建rbd的时候只需要按照上述方法创建就可以。

pod挂载ceph rbd

[root@xianchaomaster1 ~]# vim pod.yaml
apiVersion: v1
kind: Pod
metadata:name: testrbd
spec:containers:- image: nginxname: nginximagePullPolicy: IfNotPresentvolumeMounts:- name: testrbdmountPath: /mntvolumes:- name: testrbdrbd:monitors:- '192.168.40.201:6789'- '192.168.40.200:6789'- '192.168.40.202:6789'pool: k8srbd1image: rbdafsType: xfsreadOnly: falseuser: adminkeyring: /etc/ceph/ceph.client.admin.keyring

因为上面我们将ceph的配置文件都复制到k8s节点,所以在目录下可以找到ceph 的keyring

这里的rbda只能被挂载到一个pod,如果需要在别的pod里面挂载rbd镜像,可以在资源池里面创建别的rbd镜像。

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

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

相关文章

王者农药更新版

一、启动文件配置 二、GPIO使用 2.1基本步骤 1.配置GPIO,所以RCC开启APB2时钟 2.GPIO初始化(结构体) 3.给GPIO引脚设置高/低电平(WriteBit) 2.2Led循环点亮(GPIO输出) 1.RCC开启APB2时钟。…

CSS | 响应式布局之媒体查询(media-query)详解

media type(媒体类型)是CSS 2中的一个非常有用的属性,通过media type我们可以对不同的设备指定特定的样式,从而实现更丰富的界面。media query(媒体查询)是对media type的一种增强,是CSS 3的重要内容之一。随着移动互联网的发展,m…

如何在算家云搭建CosyVoice(文生音频)

一、CosyVoice简介 CosyVoice 是一个开源的超强 TTS(‌文本转语音)‌模型,‌它支持多种生成模式,‌具有极强的语音自然可控性。‌ 具有以下特点: 语音合成 :能够将文本转换为自然流畅的语音输出。多语种…

CSS 盒子属性

1. 盒子模型组成 1.1 边框属性 1.1.1 四边分开写 1.1.2 合并线框 1.1.3 边框影响盒子大小 1.2 内边距 注意: 1.3 外边距 1.3.1 嵌套块元素垂直外边距的塌陷 1.4 清除内外边距 1.5 总结

k8s-集群部署1

k8s-集群部署1 一、基础环境准备二、docker环境准备三、k8s集群部署1.kubeadm创建集群2.使用kubeadm引导集群 总结 一、基础环境准备 首先,需要准备三个服务器实例,这里我使用了阿里云创建了三个实例,如果不想花钱,也可以在VM上创…

多输入多输出预测 | NGO-BP北方苍鹰算法优化BP神经网络多输入多输出预测(Matlab)

多输入多输出预测 | NGO-BP北方苍鹰算法优化BP神经网络多输入多输出预测(Matlab) 目录 多输入多输出预测 | NGO-BP北方苍鹰算法优化BP神经网络多输入多输出预测(Matlab)预测效果基本介绍程序设计往期精彩参考资料 预测效果 基本介…

SCUC博客摘录「 储能参与电能市场联合出清:SCUC和SCED模型应用于辅助服务调频市场(IEEE39节点系统)」2024年10月6日

2.1 SCUC模型在本方法中,首先利用SCUC模型确定机组出力计划和储能充放电计划。SCUC模型是电力系统经济调度的重要工具,通过优化发电机组出力计划和调度,实现电力系统的经济性和可靠性。在考虑储能的情况下,SCUC模型需要考虑储能的…

一个真实可用的登录界面!

需要工具: MySQL数据库、vscode上的php插件PHP Server等 项目结构: login | --backend | --database.sql |--login.php |--welcome.php |--index.html |--script.js |--style.css 项目开展 index.html: 首先需要一个静态网页&#x…

机器学习(5):机器学习项目步骤(二)——收集数据与预处理

1. 数据收集与预处理的任务? 为机器学习模型提供好的“燃料” 2. 数据收集与预处理的分步骤? 收集数据-->数据可视化-->数据清洗-->特征工程-->构建特征集和数据集-->拆分数据集、验证集和测试集 3. 数据可视化工作? a. 作用&…

基于SpringBoot+Vue的在线投票系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…

JDBC 概述

JDBC 概述 JDBC的基本概念与功能JDBC的工作原理JDBC的组件与类JDBC的类型与特性JDBC的应用场景 JDBC(Java Database Connectivity)即Java数据库连接,是Java编程语言用于与数据库进行连接和操作的API(应用程序编程接口)…

C++面试速通宝典——7

150. 数据库连接池的作用 数据库连接池的作用包括以下几个方面: 资源重用:连接池允许多个客户端共享有限的数据库连接,减少频繁创建和销毁连接的开销,从而提高资源的利用率。 统一的连接管理:连接池集中管理数据库连…

python交互式命令时如何清除

在交互模式中使用Python,如果要清屏,可以import os,通过os.system()来调用系统命令clear或者cls来实现清屏。 [python] view plain copy print? >>> import os >>> os.system(clear) 但是此时shell中的状态是:…

Java 面向对象设计一口气讲完![]~( ̄▽ ̄)~*(上)

目录 Java 类实例 Java面向对象设计 - Java类实例 null引用类型 访问类的字段的点表示法 字段的默认初始化 Java 访问级别 Java面向对象设计 - Java访问级别 Java 导入 Java面向对象设计 - Java导入 单类型导入声明 按需导入声明 静态导入声明 例子 Java 方法 J…

msvcp140.dll丢失的解决方法,详细解读6种解决方法

在使用电脑时,我们可能会遇到提示缺少msvcp140.dll的错误信息。这个提示意味着我们的电脑中缺少MSVCP140.dll这个文件,它是某些程序运行所必需的。如果我们遇到这个问题,应该如何解决呢?本文将详细解析如何解决msvcp140.dll丢失的…

Study-Oracle-10-ORALCE19C-RAC集群搭建

一路走来,所有遇到的人,帮助过我的、伤害过我的都是朋友,没有一个是敌人。 ORACLE --RAC 搭建理念:准备工作要仔细,每个参数及配置都到仔细核对。环境准备完成后,剩下的就是图像化操作,没啥难度,所以图形化操作偷懒不续写了。 一、硬件信息及配套软件 1、硬件设置 RAC…

springboot系列--web相关知识探索二

一、映射 指的是与请求处理方法关联的URL路径,通过在Spring MVC的控制器类(使用RestController注解修饰的类)上使用注解(如 RequestMapping、GetMapping)来指定请求映射路径,可以将不同的HTTP请求映射到相应…

【React】事件机制

事件机制 react 基于浏览器的事件机制自身实现了一套事件机制,称为合成事件。比如:onclick -> onClick 获取原生事件:e.nativeEvent onClick 并不会将事件代理函数绑定到真实的 DOM节点上,而是将所有的事件绑定到结构的最外层…

Mysql数据库约束

前言 数据库是用户数据的最后一道保护屏障,所以数据库存在大量的约束,保证数据库中数据的完整性和可预期性。数据库中,数据类型本身就是一种约束,除此在外还有: null/not null,default, comment…

【大模型 AI 学习】大模型 AI 部署硬件配置方案(本地硬件配置 | 在线GPU)

最近想部署一个开源深度学习项目,但是小编的笔记本电脑是8G的集成显存,且没有GPU,性能肯定是不够的。于是小编在小po站上粗浅了解了一下当前: 1. 大模型 AI本地硬件配置和 2. 云上申请GPU算力的两种方式。简单记录一下: 参考视频…