GlusterFS-Kubernetes云原生存储
- 本文编译来自 https://github.com/gluster/gluster-kubernetes
- 本文地址 https://my.oschina.net/u/2306127/blog/1827193,by openthings, 2018.06.08.
- 参考:
- Gluster官网,https://www.gluster.org/
- Gluster源码,https://github.com/gluster/glusterfs
- Gluster文档,https://docs.gluster.org/en/latest/Quick-Start-Guide/Quickstart/
- Gluster 4.0 & Kubernetes, https://www.gluster.org/gluster-4-0-kubernetes/
- GlusterFS分布式文件系统的安装配置教程,https://yq.aliyun.com/ziliao/75313
- Kubernetes部署GlusterFS
- Adding new glusterfs StorageClass to Kubernetes?
gluster-kubernetes 为Kubernetes管理员提供了快速部署GlusterFS的一个机制,可以把GlusterFS作为原生存储服务部署到已存的Kubernetes集群之中。这里,GlusterFS像任何其它的Kubernetes应用一样管理和编排,这是最为快捷的释放GlusterFS作为动态存储提供者实现持久的GlusterFS存储卷的方法。
项目相关组件
- Kubernetes, 容器集群管理系统。
- GlusterFS, 可伸缩存储系统。
- heketi, GlusterFS的RESTful volume管理接口。
演示教程
社区演示和视频在 here.
>>> Video demo of the technology! <<<
文档
- Quickstart
- Setup Guide
- Hello World with GlusterFS Dynamic Provisioning
- Contact
- Release and Maintenance Policies
快速开始
如果你已经有一个现成的kubernetes集群希望使用,确认下满足这里的要求:setup guide。
该项目包括 vagrant setup,在vagrant/
目录下,用于在虚拟机中启动 Kubernetes 集群进行试验。为了运行vagrant setup, 确认下你的机器满足下面的条件:
- 4GB of memory
- 32GB of storage minimum, 112GB recommended
- ansible
- vagrant
- libvirt or VirtualBox
在 vagrant/
目录下,运行 ./up.sh
即可启动集群。
注意: 如果你计划多次运行./up.sh, vagrant setup 支持缓存的软件包和镜像。请阅读 vagrant directory README 获得更多信息,帮助进行配置和使用缓存支持。
下一步,复制 deploy/
目录到集群的master节点。
你需要提供自己的 topology file。一个示例 topology file 包含在 deploy/
目录下 (default location that gk-deploy expects) ,可以用于vagrant libvirt setup的 topology。当创建topology file时:
-
确认topology file只列出用于heketi's的 block devices。heketi需要存取整个 block devices (e.g. /dev/sdb, /dev/vdb) ,其将被分区和格式化。
-
这里的
hostnames
数组有一点误导,manage
将是节点的hostnames的列表,但是storage将是node上的
IP addresses列表,用于后台的存储通讯。
如果你使用提供vagrant libvirt setup, 你将能够:
$ 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
下面的命令运行时时假定使用 administrative privileges (比如前面加上 sudo su
).
然后,验证下 Kubernetes安装,是否所有节点都已经可用:
$ kubectl get nodes NAME STATUS AGE master Ready 22h node0 Ready 22h node1 Ready 22h node2 Ready 22h
注意: 查看 Kubernetes 版本(which will change based on latest official releases) 运行 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 cluster看起来应该如下的样子(节点取决于配置):
$ 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 (like the GlusterFS volume plugin) 客户端来 创建/管理 volumes,然后mount这些 volumes 以验证是否工作。在Kubernets中应用的使用例子参见:
- GlusterFS-动态卷快速应用,https://my.oschina.net/u/2306127/blog/1827417
联系
gluster-kubernetes 开发者 hang out in #sig-storage on the Kubernetes Slack 和 IRC channels in #gluster and #heketi at freenode network.
可以到GitHub提交 Issues 和 Pull Requests。