k8s集群部署gluster及使用系列(二)

224 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第2天,点击查看活动详情

本文根据阅读文档及实验观察整理,个人理解,定有谬误,仅作参考。

理解heketi

heketi简介

Heketi是一个提供RESTful API管理GlusterFS卷的框架,便于管理员对GlusterFS进行操作:

  • 可以用于管理GlusterFS卷的生命周期;
  • 能够在OpenStack,Kubernetes,Openshift等云平台上实现动态存储资源供应(动态在GlusterFS集群内选择bricks构建volume);
  • 支持GlusterFS多集群管理。
  • 如果不是在k8s集群里使用gluster分布式存储,没必要部署heketi,可以通过nfs、gluster自带客户端等方式访问gluster分布式存储。 heketi.png

heketi引导gluster集群

使用gluster + heketi服务时,gluster节点主机需要有未格式化为文件系统的磁盘或分区,gluster节点只需要保证glusterd服务正常运行且相关网络端口访问权限正常,不需要手动组建集群,待部署heketi服务后,由heketi进行集群的初始配置。

heketi管理存储卷流程

heketi在k8s v1.25之前仍提供k8s in-tree的存储插件,通过storageclass声明gluster的存储机器特定参数,调用heketi插件创建符合要求的pv。 或者手动创建gluster类型volume,设置gluster集群的访问拓扑和gluster卷的访问路径。

heketi在gluster节点调用lvm进行磁盘的pv、vg、lv创建和扩缩容 创建新的lv后,格式化为xfs文件系统(默认) 挂载为gluster节点的brick 多个节点的brick组成一个gluster volume供客户端使用。

heketi数据持久化

heketi本身是有状态的,生产部署时,需要一个高可用存储持久化它的状态数据,而作为高可用存储的gluster尚未部署好,所以需要先启动一个临时bootstrap heketi,初始化gluster集群并在集群上创建一个存储卷,将本地持久化数据复制一份到存储卷上,然后启动一个新的heketi部署,挂载该gluster存储卷并导入持久化数据。