为K8S集群准备Ceph存储

2023-02-16 00:00:00 集群 代码 节点 部署 复制

  随着K8S存储接口逐渐成熟并顺势推出CSI接口规范后,原来“in-tree”(树内)模式的很多存储插件也逐步迁移到了“out-of-tree”(树外)模式的CSI插件上,甚至有些原来支持的存储卷类型都被直接移除了(例如在K8S v1.26上直接移除了 glusterfs 卷类型),查阅了一下K8S官方新版本的存储相关(Storage/Volumes)的说明,综合新存储支持情况,我们选择Ceph作为K8S集群的存储提供者。

  首先,进入Ceph官网文档查看其安装部署方法,主要看下是否有基于K8S的安装方法,后在官网“Installing ceph>Recommended methods”(推荐的Ceph安装方法)果然发现了基于K8S的安装方法:

   Ceph官方推荐在K8S集群上使用Rook来部署和管理Ceph集群!

  我们进入Rook官网看看,从官网可以看出Rook是为K8S量身定制的,那就它了:

  Ceph是一个在大规模生产集群中提供文件、块和对象存储的分布式存储系统,而Rook是一个专门支持Ceph与云原生环境集成的开源云原生存储协调器。Rook利用K8S的Operator机制推出了自己的Rook operator,实现自动化的Ceph部署和管理。Rook作为云原生存储平台已经从CNCF顺利毕业!

  以上是对Rook简要说明,接下来借助Rook在K8S集群上部署和管理Ceph。

  Rook支持K8S v1.19+的版本,CPU架构为amd64、x86_64或arm64均可,除此之外部署Ceph存储集群还必须至少满足以下先决条件之一

  • 每个节点至少有一块裸设备(Raw devices,未分区未进行文件系统格式化)
  • 裸分区(Raw partitions,未进行文件系统格式化)
  • LVM逻辑卷(LVM Logical Volumes,未进行文件系统格式化)
  • block模式下存储类(storage class)中可用的持久卷(PV)

   这里我们选择为K8S集群的每个工作节点添加一块额外的未格式化磁盘(裸设备),步骤见以下截图:

  将新增的磁盘设置成独立模式(模拟公有云厂商提供的独立磁盘),然后启动K8S集群虚拟机,在工作节点上使用以下命令检查一下磁盘条件是否符合Ceph部署要求:

相关文章