news 2026/6/9 17:21:03

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/6/7 6:39:39

深入解析高性能 I/O 的基石:零拷贝(Zero-Copy)技术原理与应用

【精选优质专栏推荐】 《AI 技术前沿》 —— 紧跟 AI 最新趋势与应用《网络安全新手快速入门(附漏洞挖掘案例)》 —— 零基础安全入门必看《BurpSuite 入门教程(附实战图文)》 —— 渗透测试必备工具详解《网安渗透工具使用教程(全)》 —— 一站式工具手册《CTF 新手入门实战教…

作者头像 李华
网站建设 2026/6/8 15:29:09

HarmonyOS 5 极致动效实验室: Canvas 高阶动画的实现

大家好,我是不想掉发的鸿蒙开发工程师城中的雾。 前几期我们玩转了各种标准组件的动画。但在实际开发中,总有一些需求让设计师天马行空,让开发者头秃:“这个波浪起伏的效果怎么做?”、“这个像琴弦一样能拨动的线条怎…

作者头像 李华
网站建设 2026/6/7 7:26:50

ComfyUI由浅入深全方位,AI生图,AI生成视频,AI动画教程

ComfyUI由浅入深全方位【共295课时】:从节点连线到工作流设计的系统化精进之旅 1. 为何295课时?理解ComfyUI的系统复杂性与学习价值 在AI绘画工具层出不穷的今天,相关推荐ComfyUI以其独特的节点式可视化编程界面,重新定义了Stab…

作者头像 李华
网站建设 2026/6/9 8:34:13

YashanDB数据库的读写分离策略分析

YashanDB 是一个高性能的分布式数据库,常用于处理大规模的数据存储和查询。在数据库系统中,读写分离是一种常见的性能优化策略,尤其是在面对高并发的读操作时。以下是针对 YashanDB 数据库的读写分离策略的分析:1. 读写分离的概念…

作者头像 李华
网站建设 2026/6/8 13:31:01

Vue Flow与Pinia状态管理实战指南:构建高效可视化应用

Vue Flow与Pinia状态管理实战指南:构建高效可视化应用 【免费下载链接】learn-agentic-ai Learn Agentic AI using Dapr Agentic Cloud Ascent (DACA) Design Pattern: OpenAI Agents SDK, Memory, MCP, Knowledge Graphs, Docker, Docker Compose, and Kubernetes.…

作者头像 李华
网站建设 2026/6/8 21:02:30

AI赋能千行百业:从金融到制造的深度变革与未来展望

引言:人工智能——第四次工业革命的引擎我们正处在一个由数据、算法和算力共同驱动的智能化时代。人工智能(AI),特别是以大语言模型(LLM)为代表的生成式AI的爆发,不再是科幻小说的情节&#xff…

作者头像 李华