GlusterFS Native Storage Service for Kubernetes
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 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 应用程序的示例,请参见以下链接:
联系方式
gluster-kubernetes 开发者在 Kubernetes Slack 上的 #sig-storage 频道以及 freenode 网络的 #gluster 和 #heketi IRC 频道中交流。
当然,您也可以通过 GitHub 上的 Issues 和 Pull Request 来联系我们。
项目介绍
GlusterFS Native Storage Service for Kubernetes