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

news2024/10/7 15:26:36

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: nginx
   name: nginx
   imagePullPolicy: IfNotPresent
   volumeMounts:
   - name: testrbd
     mountPath: /mnt
   volumes:
   - name: testrbd
     rbd:
       monitors:
       - '192.168.40.201:6789'
       - '192.168.40.200:6789'
       - '192.168.40.202:6789'
       pool: k8srbd1
       image: rbda
       fsType: xfs
       readOnly: false
       user: admin
       keyring: /etc/ceph/ceph.client.admin.keyring

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

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

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

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

相关文章

SumatraPDF一打开就无响应怎么办?

结论:当前安装版不论32位还是64位都会出现问题。使用portable免安装版未发现相关问题。——sumatrapdf可以用于pdf, epub, mobi 等格式文件的浏览。 点击看相关问题和讨论

如何使用 Python 的 logging 模块记录日志

如何使用 Python 的 logging 模块记录日志 在编写 Python 程序时,日志记录是一个非常重要的部分。日志不仅帮助你在开发过程中调试代码,还可以在程序正式运行时提供诊断信息,帮助定位问题。如果你正在构建一个复杂的系统或者开发大型应用程序…

【数据结构】【队列】算法汇总

一、顺序队列【相当于一维数组】 1.准备工作 #define MAXQSIZE 100 typedef struct{QElemType*base;int front;int rear; }SqQueue; 2.队满,队空。入队,出队 二、链式队列 1.准备工作 typedef struct Qnode{ElemType data;struct Qnode*next; }Qnod…

深入浅出解析大模型:探索智能体(Agent)

大语言模型 vs 人类 大语言模型很强大,就像人类的大脑一样拥有思考的能力。如果人类只有大脑,没有四肢,没有工具,是没办法与世界互动的。如果我们能给大模型配备上四肢和工具呢?大模型是不是就会打破次元壁&#xff0…

GD32F4xx USB MSC Host调试记录

本文记录GD32F4xx MCU的RTX系统工程内移植USB MSC Host的例程代码,适配自制的电路板,实现向USB内写入数据。有关USB的一些基础信息,可以参考本专栏的另一篇文章《GD32 MCU USB开发学习记录》。 目录 1. USB MSC host 例程1.1、硬件接口2.2、USB msc host 例程2.2.1 工程目录…

dz论坛可可积分商城插件价值399元

界面简洁美观大方,适合各类站点。支持多用户商城,可让商家入驻站点发布商品,亦可站长自己发布商品。支持向商家抽佣抽成功能,可设置商家在成交商品后按一定比例扣除抽成,达到网站盈利目的采用队列技术处理,…

【ubuntu22.04】 搭建自己的镜像站 【harbor】【docker compose】【超详细】

文章目录 什么是 harbor特点主要功能 部署配置 dns初始化下载 dns编辑 named.conf.local编辑 named.conf.options配置正向解析配置反向解析解析扩展 部署 harbor修改配置执行 prepare执行 install.sh查看镜像访问 自制镜像创建镜像仓库上传镜像开始推送拉取镜像 什么是 harbor …

宏队列和微队列

1、javascript是一个单线程语言。 javascript 语言的目的(待补充) 2、主线程执行完成之后,再执行微队列,微队列执行完成后再执行宏队列 3、promise的构造函数传入的回调函数是同步执行 4、promise的then函数会直接加入微队列&…

Java 中的 LinkedHashMap

让我们从一个简单的 Java 代码片段开始,演示如何在 Java 中创建和使用 LinkedHashMap。 import java.util.LinkedHashMap; public class LinkedHashMapCreation { public static void main(String[] args) { // Create a LinkedHashMap of S…

【AI知识点】批归一化(Batch Normalization)

批归一化(Batch Normalization,BN) 是一种用于加速神经网络训练并提高模型稳定性的方法,最早由 Sergey Ioffe 和 Christian Szegedy 在 2015 年提出。批归一化通过在每一层对神经网络中的激活值进行标准化,使得每一层的…

半路出家:如何转行成为软件开发者——之找到一份工作

一、前言 一个半路出家的软件开发者,尽管只有短短几年软件开发的相关经验,却可以凭借他在其他领域积累的丰厚经验,最终一举超过单纯拥有更多软件开发经验的同行【有时拥有不同的专业背景(甚至是与软件完全不搭界的行业&#xff09…

SpringBoot赋能旅游管理:系统设计与实现

第三章 系统分析 3.1可行性分析 对所有的系统来说,都有可能会受到时间和空间上的制约。所以,我们在设计每一个项目的时候,必须对该系统实行可行性分析,这样不但能够降低项目的危害,还能改降低人力、物力和财力的损耗。…

弱网(不限于 Wi-Fi)环境的传输优化分析

参见 Wi-Fi弱网传输优化不成功有感 早在几年前还做传输优化时,我就非常不赞同在弱网环境激进传输的优化策略,我一直觉得这是在劣化传输,这观点一直影响着我,我也屡次因为这个与经理发生冲突。这观点如下表述: 弱网环…

【SpringSecurity】基本流程

【中文文档: Spring Security 中文文档 :: Spring Security Reference】 【英文文档&#xff1a;Spring Security】 以下内容只是记录springsecurity最简单的一种验证流程&#xff0c;所有配置基本都是默认的配置。 引入依赖 <dependency><groupId>org.springf…

GPU Puzzles讲解(一)

GPU-Puzzles项目可以让你学习到GPU编程和cuda核心并行编程的概念&#xff0c;通过一个个小问题让你理解cuda的编程和调用&#xff0c;创建共享显存空间&#xff0c;实现卷积和矩阵乘法等&#xff0c;通过每个小问题之后还会奖励一个狗狗小视频&#x1f601; 下面是项目的仓库&…

大模型面试宝典:问题全集及权威解答

导读 自ChatGPT开启大模型时代以来&#xff0c;大模型正迎来飞速发展&#xff0c;现在从事大模型开发相关工作可谓是处在时代的风口。那么大模型面试需要哪些技能和技巧呢&#xff0c;本文详细整理了全套的面试问题及答案&#xff0c;希望对大家有所帮助&#xff01; 目录 [x…

脉冲神经网络(SNN)论文阅读(六)-----ECCV-2024 脉冲驱动的SNN目标检测框架:SpikeYOLO

原文链接&#xff1a;CSDN-脉冲神经网络&#xff08;SNN&#xff09;论文阅读&#xff08;六&#xff09;-----ECCV-2024 脉冲驱动的SNN目标检测框架&#xff1a;SpikeYOLO Integer-Valued Training and Spike-Driven Inference Spiking Neural Network for High-performance …

MySQL数据库专栏(二)SQL语句基础操作

目录 数据库操作 创建数据库 查看数据库 选择数据库 删除数据库 数据表操作 数据表数据类型 数据表列约束 数据表索引 创建表 查看表 查看表结构 删除表 数据表的增删改操作 …

自由学习记录

约束的泛型通配符? Java中的泛型 xiaomi和byd都继承了car&#xff0c;但是只是这两个类是car的子类而已&#xff0c;而arraylist<xiaomi> ,arraylist<byd> 两个没有半毛钱继承关系 所以传入的参数整体&#xff0c;是car的list变形&#xff0c;里面的确都能存car…

YOLO11改进 | 卷积模块 | 添加选择性内核SKConv【附完整代码一键运行】

秋招面试专栏推荐 &#xff1a;深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 &#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 在标准卷积神经网络 (CNN) 中&#xff0…