Kubernetes对接GlusterFS小技巧(上)

831 阅读3分钟

众所周知,GlusterFS是一款非常好用的分布式网络文件系统,由于它的开源、可扩展、安装方便等特性,被很多公司采用。特别是云原生时代的到来,也为GlusterFS开启了新的篇章,得到了很多技术人员的大力关注。 于此同时,GlusterFS早期的性能问题、稳定性问题等等,被很多人质疑,迫使GlusterFS的研发人员不断完善和优化产品。在不断调整之下,如今GlusterFS已经迭代至V10开发版,Github关注度突破了3k。你可以说,GlusterFS的性能不及NFS,功能没有Ceph强大,但分布式和轻量化部署,也得到了一部分人的认可。

抱歉,开篇说的有些多了,那么进入主题。

目前网络上大致有2种方案:

  • 第一种是Kubernetes+Heketi+GlusterFS方案,这种接入方式接受的人较多,这主要来源于Heketi出色的管理能力,以及Kubernetes内置较完善的GlusterFS控制器;
  • 第二种是Kubernetes+自定义Controller+GlusterFS方案,该方案则是通过外置Controlerr替代了Heketi完成对GlusterFS卷的管理。

以上2种方案,在选择上没有优劣之分,都可以根据实际情况来采用。本篇主要基于第一种方案,至于部署过程,已经有很多其它网友的方案,这里不再赘述,可参考官方部署指南

GlusterFS部署要点

1、GlusterFS集群的CPU、内存、磁盘要求?

官方对于内存要求是至少4GB,磁盘至少32GB,推荐使用112GB。

在生产环境中,建议CPU和内存至少8核、16GB以上,也可以根据自己的业务情况而定。存储量大,业务线多的场景,适当调高一下CPU、内存、磁盘大小(或者增加磁盘数量)。

2、GlusterFS部署是容器化部署,还是虚拟机(或物理机)部署?

我觉得2种情况都可以,公司资源比较充足的情况下可以使用虚拟机(或物理机)部署,部署流程可参考官网快速入门。在资源较紧缺的情况下,可以选择容器化部署,但为了保证GlusterFS读写性能,尽可能让GlusterFS集群独占节点。

3、GlusterFS集群节点个数

建议按照官方至少3个节点部署,目前测试2个节点会出现问题。

4、Heketi部署是容器化部署,还是虚拟机(或物理机)部署?

这里Heketi建议容器化部署,一方面可以省去额外服务器的管理,另一方面出现故障能及时恢复。需要注意的是,Heketi和GlusterFS集群最好在同一个内网中,异地部署会严重影响数据读写。

5、虚拟机(或物理机)部署时,如何通过heketi初始化磁盘?

可以通过heketi-cli指令加载topology.json文件

heketi-cli load --json=<路径>/topology.json

注意点:

  • 初始化的磁盘要求是经过格式化的,不要进行分区,不要有数据
  • 在区域(zone)的设置上,最好统一设置成1,后续对集群进行扩容时,可进行累加操作

6、如何监控GlusterFS?

这里使用prometheus进行指标监控,需要gluster-exporter安装,安装可参考这里