news 2026/3/17 22:04:11

Rook部署——k8s集群中使用ceph

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Rook部署——k8s集群中使用ceph

比起君子讷于言而敏于行,我更喜欢君子善于言且敏于行。

目录

前言

一、为什么选 Rook?

二、Rook 低层原理(必须理解的组件)

1. CRD(CustomResourceDefinition)——抽象出“Ceph 资源”

2. Rook Operator(核心自动化大脑)

3. Ceph Daemons(真正干活的)

三、Rook 架构图

四、 Rook 需要哪些 YAML(这是最重要的部分)

1. 部署 Rook 控制面(CRD + Operator)

2. 部署 Ceph 集群(跟硬盘有关)

3. 可选的(按需创建)

五、各个yaml的作用

六、操作命令

总结


前言

想在k8s集群中使用ceph,应该怎么做呢?使用Rook


一、为什么选 Rook?

裸 Ceph 是给 2010 年代裸机/虚拟机环境设计的,Rook 是给 2020 年代 Kubernetes 时代而生的 Ceph。Rook 不是存储系统,它只是 Ceph 的自动化运维系统(Operator)。

Rook 只需要你:写 yaml 、 Apply、 让 Operator 自动 reconcile。然后所有组件自动出现、自动扩容、自动修复。

它的唯一作用:让 Ceph 能以 Kubernetes 原生方式运行、扩容、自愈,硬盘自动接管

Ceph = 真正存储
Rook = Ceph 的大脑 + 自动驾驶仪
K8s = 环境 + 编排

二、Rook 低层原理(必须理解的组件)

1. CRD(CustomResourceDefinition)——抽象出“Ceph 资源”

Rook 把 Ceph 的东西全部抽象成 Kubernetes API 对象:

Ceph 组件Rook 的 CRD
整个 Ceph 集群CephCluster
存储池CephBlockPool
文件系统 CephFSCephFilesystem
OSD 存储设备CephCluster.storage.devices
Mgr / MonCephCluster.mgr / mon
RBD StorageClassStorageClass
RGW/对象存储CephObjectStore

Rook 让 Kubernetes 本身能够理解“Ceph 这个东西”。

2. Rook Operator(核心自动化大脑)

Operator 是一个永远处于 “observing → reconciling → fixing” 的控制回路:

CRD YAML 变化 → Operator 看到了 ↓ Operator 生成 Ceph 配置 / 命令 ↓ Operator 创建相应的 Pod、OSD、mon、mgr ↓ 确保状态达到你 YAML 要的样子

它会一直监控

  • Ceph 守护进程是否运行

  • MON quorum 是否健康

  • OSD 是否 down / out

  • 新硬盘是否出现

  • 节点是否加入/退出集群

你只写 YAML → 其它全部 Operator 负责。这就是 Kubernetes 的operator 模式

3. Ceph Daemons(真正干活的)

在容器里跑真正的 Ceph 服务:

组件作用
ceph-mon整个集群的脑,维护 map
ceph-mgrDashboard、Prometheus、Orchestrator 模块
ceph-osd管 HDD/SSD(你的 8T/2T)
ceph-mdsCephFS 的 namespace server
ceph-rgwS3 网关(可选)

Rook 帮你管理它们,但它们本身就是原生 Ceph。

三、Rook 架构图

CRD:让 Kubernetes“知道”什么是 Ceph(像提供新 API)

Operator:看 YAML → 生成 Pod → 控制 Ceph(自动化运维系统)

Ceph 容器:真正的存储系统

四、 Rook 需要哪些 YAML(这是最重要的部分)

1. 部署 Rook 控制面(CRD + Operator)

这一步是所有集群通用的,不涉及磁盘。

通常有三个文件(只需 apply 一次):

文件作用
crds.yaml定义 CephCluster / CephBlockPool / CephFilesystem 等 CRD
common.yamlRBAC、namespace、service accounts
operator.yamlOperator 主体,负责启动大脑

📌执行这 3 个文件后,集群不包含任何 Ceph,只是“准备好 Ceph 的大脑”

2.部署 Ceph 集群(跟硬盘有关)

这是最核心的cluster.yaml。这个文件明确告诉 Rook:

  • Ceph 要在哪里跑

  • 要启用哪些模块

  • 如何使用你的硬盘

  • 有几个 MON

  • 是否开启 dashboard

  • 是否使用 SSD 作为 WAL/DB

📌这个 YAML = 整个 Ceph 的定义
OSD 出现与否、设备如何使用,都在这里。

3. 可选的(按需创建)

YAML作用
CephFilesystem创建 CephFS,自动部署 MDS
CephBlockPool创建 RBD 池
StorageClass给 K8s PVC 提供 Ceph RBD/FS 卷
CephObjectStoreS3 服务
CephObjectStoreUser创建 S3 用户

未来最常用的是:

  • CephFS(共享文件存储)

  • RBD(持久化块存储)

五、各个yaml的作用

YAML属于 Rook 哪一层?它控制什么?什么时候 apply?
crds.yamlk8s API定义 Ceph 的所有资源类型第一次部署 Rook 时
common.yamlRBAC权限、ServiceAccount、Namespace第一次部署 Rook 时
operator.yamlRook 大脑Operator 的 Pod & Controller第一次部署 Rook 时
cluster.yaml你的集群定义MON/OSD/MGR、磁盘分配、网络有 HDD 时执行
filesystem.yamlCephFS创建 MDS + Pool + FSCeph 集群 ready 后
block-pool.yamlRBDRBD 池(给 PVC 用)需要块存储时
storageclass.yamlK8s SCPVC 自动绑定 Ceph做持久化卷时
objectstore.yamlRGWSwift/S3 接口做 S3 时

注意:cluster.yaml优先级最高。crds.yaml、common.yaml、operator.yaml只负责“让 Rook 自己跑起来”。Ceph 集群的实际配置永远以cluster.yaml 为准。所以首次run的时候可以直接用官方的模板

六、操作命令

# 安装调试工具(非必须但推荐) sudo apt install -y lvm2 ceph-common jq #下载适合k8s1.21的版本,主要是用examples cd /home/ubuntu git clone --single-branch --branch v1.11.9 https://github.com/rook/rook.git cd rook/deploy/examples # 部署 CRDs + common + operator(上一步已cd,这一步用的是需要用examples里面的yaml) kubectl create namespace rook-ceph kubectl apply -f crds.yaml -f common.yaml -f operator.yaml # 验证,有点儿耐心,等一下,拉取镜像需要时间。这一步之后,集群里已经“认识 Ceph 这个东西”了。 kubectl -n rook-ceph get pods #准备好适合自己的cluster.yaml kubectl apply -f cluster.yaml #这个镜像总是无法自动拉取,不清楚为什么,可以先手动拉一下 sudo docker pull rook/ceph:v1.11.9 #这次应该能看到:rook-ceph-mon-* rook-ceph-mgr-* ,耐心等一等 kubectl -n rook-ceph get pods # 验证 kubectl -n rook-ceph get pods -o wide # 看看dashboard,UI页面 kubectl -n rook-ceph get svc | grep dashboard kubectl -n rook-ceph get pod -l app=rook-ceph-mgr -o wide #让系统自动分配一个 30000-32767 端口 kubectl -n rook-ceph patch svc rook-ceph-mgr-dashboard -p '{"spec":{"type":"NodePort"}}' #查看一下分到了哪个端口,进行ip+端口访问即可 kubectl -n rook-ceph get svc rook-ceph-mgr-dashboard

总结

重点还是搞清楚yaml,基本上就不会有什么问题。后续我会再整理cluster.yaml的详细内容分析,彻底吃透它。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/15 12:27:59

穿越机PID参数调节

前言 之前发了一篇用RPY滑块调PID参数的,虽然飞的手感还可以,但是从PTB工具分析后 还是有超调(在飞机的表现就是有回弹),所以想直接调整PID参数来达到理想效果。 直接调整PID 我们取消PRY模式,直接进行P…

作者头像 李华
网站建设 2026/3/15 17:51:47

【RCE】利用 Python 沙箱绕过实现任意代码执行的完整案例分析

本文内容仅供学习交流使用,未经授权不得进行非法渗透测试。 文章目录 背景 1.利用 ctypes 绕过黑名单 2.基于时间回显:time-based Blind 技巧 3.使用 raise 主动回显异常 4.通过 importlib/imp 绕过黑名单导入模块 5.利用写文件 + import 的方式进行自定义模块注入 6.compile…

作者头像 李华
网站建设 2026/3/15 17:36:42

HarmonyOS 5 极致动效实验室:给 UI 注入“物理动效”

大家好,我是不想掉发的鸿蒙开发工程师城中的雾。 前两期我们聊了“怎么动”和“怎么飞”,今天这期咱们聊点用户操作体验相关的——“手感”。 为什么有的 App 滑动起来像是在摸丝绸,有的却像是在磨砂纸?为什么 iOS 的控制中心滑…

作者头像 李华
网站建设 2026/3/15 16:26:23

Nextcloud文件压缩下载实用指南:轻松管理云端文件

Nextcloud文件压缩下载实用指南:轻松管理云端文件 【免费下载链接】server ☁️ Nextcloud server, a safe home for all your data 项目地址: https://gitcode.com/GitHub_Trending/se/server 还在为Nextcloud中大量文件的下载而烦恼吗?想要一次…

作者头像 李华
网站建设 2026/3/15 16:11:21

YashanDB数据库的多活架构设计与实施经验分享

如何实现数据库的高可用性与强一致性,同时支持多实例并发读写,是当前数据库技术面临的重要挑战。多活架构作为解决方案,能够有效提升系统的容错能力和业务连续性,但其设计和实现复杂,尤其是在保障数据一致性、优化性能…

作者头像 李华