引言:为什么 K8s 工程师应该了解 Ceph?
对于熟悉 Kubernetes 但对 Ceph 不太了解的工程师来说,理解 Ceph 的架构可能会有一定难度。实际上,Ceph 和 Kubernetes 在设计理念上有许多相似之处。本文将以 Kubernetes 工程师熟悉的视角,帮助大家理解 Ceph 的架构组成和工作机制。
Ceph 与 Kubernetes 架构对比
我们可以将 Ceph 的组件与 Kubernetes 的组件进行类比,从而更容易理解它们的功能和作用。
通过对比 Kubernetes 与 Ceph 的组件架构,帮助 K8s 工程师理解分布式存储。文章类比了 MON 与 Master、OSD 与 Worker、CRUSH 与 Scheduler 等核心概念,并详解了 RADOS、存储池、PG 及 CephFS/RBD/RGW 等服务类型。最后介绍了数据流动、高可用及故障恢复机制,旨在辅助读者设计云原生存储方案并排查问题。
对于熟悉 Kubernetes 但对 Ceph 不太了解的工程师来说,理解 Ceph 的架构可能会有一定难度。实际上,Ceph 和 Kubernetes 在设计理念上有许多相似之处。本文将以 Kubernetes 工程师熟悉的视角,帮助大家理解 Ceph 的架构组成和工作机制。
我们可以将 Ceph 的组件与 Kubernetes 的组件进行类比,从而更容易理解它们的功能和作用。
| Kubernetes | Ceph | 功能对比 |
|---|
| Master Node | MON (Monitor) | 集群状态管理和协调 |
| API Server | MON (Monitor) | 提供集群状态查询接口 |
| etcd | MON (Monitor) | 存储集群状态信息 |
在 Kubernetes 中,Master 节点负责整个集群的管理和协调工作,维护着集群的状态。类似地,在 Ceph 中,MON(Monitor)承担着相似的责任。
MON 的主要职责:
就像 Kubernetes 需要至少一个 API Server 来提供服务一样,Ceph 也需要至少一个 MON 节点才能正常运行。但在生产环境中,通常会部署奇数个 MON 节点(3 或 5 个)以实现高可用性。
| Kubernetes | Ceph | 功能对比 |
|---|---|---|
| Worker Node | OSD (Object Storage Daemon) | 实际的工作负载执行 |
| Namespace | Pool | 资源组织和隔离 |
| Pod | PG (Placement Group) | 工作单元的逻辑分组 |
在 Kubernetes 中,Worker 节点负责运行 Pod,而在 Ceph 中,OSD 节点负责存储实际的数据。
OSD 的主要职责:
就像 Kubernetes 集群可以有多个 Worker 节点一样,Ceph 集群也可以有多个 OSD 节点。每个 OSD 节点通常对应一个物理磁盘或分区。
在 Kubernetes 中,Scheduler 负责将 Pod 调度到合适的节点上运行。而在 Ceph 中,虽然没有独立的调度器组件,但其核心算法 CRUSH(Controlled Replication Under Scalable Hashing)起到了类似的调度作用。
CRUSH 算法决定了数据应该如何分布在整个集群中,它考虑了:
| Kubernetes | Ceph | 功能对比 |
|---|---|---|
| Controller Manager | MGR (Manager) | 集群管理和控制循环 |
| Various Controllers | Various Modules | 特定功能的控制器 |
在 Kubernetes 中,Controller Manager 运行着各种控制器,维护着集群期望的状态。同样,Ceph 的 MGR 也提供了类似的管理功能。
MGR 的主要职责:
| Kubernetes | Ceph | 功能对比 |
|---|---|---|
| CSI Driver | Ceph Client | 存储接口抽象 |
| StorageClass | Pool | 存储类别定义 |
| PV/PVC | CephFS/RBD | 存储资源分配 |
在 Kubernetes 中,通过 CSI(Container Storage Interface)驱动程序来与各种存储系统对接。同样,Ceph 也提供了客户端库和工具来与应用程序交互。
RADOS(Reliable Autonomic Distributed Object Store)是 Ceph 的核心存储层,相当于 Kubernetes 的 etcd 存储层,但更加复杂和功能丰富。
RADOS 的特点:
在 Kubernetes 中,命名空间用于组织和隔离资源。在 Ceph 中,存储池(Pool)扮演着类似的角色。正如你所说,Pool 对应的则是 Namespace。
存储池的特性:
就像在 Kubernetes 中,不同命名空间中的资源彼此隔离一样,在 Ceph 中,不同存储池中的数据也相互独立,拥有各自的配置和策略。
在 Kubernetes 中,Pod 是最小的部署单元,包含了相关的容器。正如你指出的,Pod 对应的是 PG。在 Ceph 中,Placement Group(PG)是数据分布和管理的基本单元。
PG 的作用:
就像 Pod 是一组相关容器的封装一样,PG 是一组相关对象的逻辑集合,它们共同参与数据分布和复制策略。
就像 Kubernetes 提供不同类型的服务(Deployment、StatefulSet、DaemonSet 等),Ceph 也提供了多种存储服务:
这种设计的优势在于:
通过将 Ceph 架构与熟悉的 Kubernetes 架构进行对比,我们可以更容易地理解 Ceph 的工作原理。两者在设计理念上有很多相似之处,都采用了分布式、去中心化的架构思想,都注重高可用性和自我修复能力。
对于 Kubernetes 工程师而言,掌握 Ceph 的基本概念和架构有助于:
希望本文能够帮助熟悉 Kubernetes 的读者更快地理解和掌握 Ceph 的核心概念。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online
将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online