gluster-kubernetes:GlusterFS 原生存储服务部署工具

GlusterFS Native Storage Service for Kubernetes

分支3Tags6
文件最后提交记录最后更新时间
7 年前
8 年前
8 年前
7 年前
8 年前
9 年前
9 年前
8 年前
8 年前
7 年前

gluster-kubernetes

构建状态

GlusterFS 对 Kubernetes 的原生存储服务

gluster-kubernetes 是一个项目,旨在为 Kubernetes 管理员提供一种轻松部署 GlusterFS 作为原生存储服务的方法,将其部署到现有的 Kubernetes 集群中。在这里,GlusterFS 被像 Kubernetes 中的其他应用程序一样管理和编排。这是一种便捷的方式,可以解锁 Kubernetes 中动态配置的持久性 GlusterFS 卷的强大功能。

组件项目

  • Kubernetes:容器管理系统。
  • GlusterFS:扩展型存储系统。
  • heketi:GlusterFS 的 RESTful 存储卷管理接口。

演示文稿

您可以在此处找到社区演示的幻灯片和视频:presentations

>>> 技术视频演示! <<<

文档

快速入门

如果您已有想要使用的 Kubernetes 集群,请确保它符合我们在设置指南中概述的前提条件。

该项目在 vagrant/ 目录中包含一个 Vagrant 设置,可以在虚拟机上启动 Kubernetes 集群。要运行 Vagrant 设置,您的机器需要满足以下先决条件:

  • 至少 4GB 内存
  • 最小 32GB 存储空间(推荐 112GB)
  • Ansible
  • Vagrant
  • Libvirt 或 VirtualBox

要在集群上启动,请在 vagrant/ 目录中运行 ./up.sh

注意:如果计划多次运行 ./up.sh,Vagrant 配置支持缓存软件包和容器镜像。请参阅 vagrant 目录 README,以获取更多关于如何配置和使用缓存支持的信息。

接下来,将 deploy/ 目录复制到集群的主节点。

您需要提供自己的拓扑文件。deploy/ 目录中包含一个样本拓扑文件(gk-deploy 期望的默认位置),可以用于 vagrant libvirt 设置的拓扑。创建自定义拓扑文件时:

  • 确保拓扑文件仅列出 heketi 使用的块设备。heketi 需要访问完整的块设备(如 /dev/sdb、/dev/vdb),它会对其进行分区和格式化。

  • hostnames 数组有点误导。“manage”应该是节点的主机名列表,“storage”应该是节点上的后端存储通信 IP 地址列表。

如果您使用了提供的 vagrant libvirt 设置,可以执行以下命令:

$ vagrant ssh-config > ssh-config
$ scp -rF ssh-config ../deploy master:
$ vagrant ssh master
[vagrant@master]$ cd deploy
[vagrant@master]$ mv topology.json.sample topology.json

上述命令需以管理员权限运行(例如,sudo su 前)。

此时,通过确保所有节点都处于就绪状态来验证 Kubernetes 安装:

$ kubectl get nodes
NAME      STATUS    AGE
master    Ready     22h
node0     Ready     22h
node1     Ready     22h
node2     Ready     22h

注意:要查看 Kubernetes 版本(根据最新官方版本更新),只需运行 kubectl version。这对于故障排除很有帮助。

接下来,要部署 heketi 和 GlusterFS,请运行以下命令:

$ ./gk-deploy -g

如果您已经有预先存在的 GlusterFS 集群,则不需要 -g 选项。

完成后,GlusterFS 和 heketi 应该已安装并准备就绪。您可以设置 HEKETI_CLI_SERVER 环境变量如下,以便直接被 heketi-cli 读取或传递给如 curl 类似的工具:

$ export HEKETI_CLI_SERVER=$(kubectl get svc/heketi --template 'http://{{.spec.clusterIP}}:{{(index .spec.ports 0).port}}')

$ echo $HEKETI_CLI_SERVER
http://10.42.0.0:8080

$ curl $HEKETI_CLI_SERVER/hello
Hello from Heketi

您的 Kubernetes 集群应如下所示:

$ kubectl get nodes,pods
NAME      STATUS    AGE
master    Ready     22h
node0     Ready     22h
node1     Ready     22h
node2     Ready     22h
NAME                               READY     STATUS              RESTARTS   AGE
glusterfs-node0-2509304327-vpce1   1/1       Running             0          1d
glusterfs-node1-3290690057-hhq92   1/1       Running             0          1d
glusterfs-node2-4072075787-okzjv   1/1       Running             0          1d
heketi-3017632314-yyngh            1/1       Running             0          1d

现在,您也应该能够使用 heketi-cli 或其他 heketi REST API(如 GlusterFS 卷插件)的客户端创建/管理卷,然后挂载这些卷来验证其工作状态。有关如何与此配合使用 Kubernetes 应用程序的示例,请参见以下链接:

使用 GlusterFS 动态配置的示例应用

联系方式

gluster-kubernetes 开发者在 Kubernetes Slack 上的 #sig-storage 频道以及 freenode 网络的 #gluster 和 #heketi IRC 频道中交流。

当然,您也可以通过 GitHub 上的 Issues 和 Pull Request 来联系我们。