一篇讲透Kubernetes与GlusterFS之间的爱恨情仇(二) - 恒生技术之眼 - 恒生研究院
source link: http://rdc.hundsun.com/portal/article/827.html?
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
一篇讲透Kubernetes与GlusterFS之间的爱恨情仇(二)
上文我们主要介绍了Kubernetes与GlusterFS的部署方式和如何使用手动的方式使用存储时自己创建GlusterFS的卷(GlusterFS的数据存储在卷Volume上)请戳链接回顾:一篇讲透Kubernetes与GlusterFS之间的爱恨情仇(一)。
本文我们将继续介绍如何自动利用Kubernetes的 Dynamic Provisioning 特性。自动方式需要先部署Heketi软件,Heketi用来管理GlusterFS,并提供RESTful API接口供Kubernetes调用。Heketi需要使用裸磁盘,假设三个GlusterFS节点上都挂了一块裸磁盘 /dev/xvde。接下来我们进入实战模式
部署在
安装:(以下安装过程--到安装结束的地方--可以使用 http://192.168.58.228:9007/glusterfs/heketi/ 上的一键安装包安装)
改为公司yum源
(安装结束)
修改/etc/heketi/heketi.json(省略了没有修改的部分):
这里主要把端口改为8083了(防止冲突),executor 改为 ssh, sshexec 的各项配置也做了相应修改。
其中的keyfile制作方法:
输入key(随便起的名字)一直回车。制作完成后会在当前目录下生成key、key.pub,把 key.pub 上传到GlusterFS三台服务器的 /root/.ssh/ 下面,并重命名为 authorized_keys,/etc/heketi/heketi.json 中 的 keyfile 指向 生成的 key(包含路径)。
启动:
(Heketi数据目录: /var/lib/heketi)
验证:
▲配置节点
新建 topology.json:
载入配置:
查看拓扑:
建个大小为2G的volume试试:
Kubernetes通过创建StorageClass来使用 Dynamic Provisioning 特性,StorageClass连接Heketi,可以根据需要自动创建GluserFS的Volume,StorageClass还是要系统管理员创建,不过StorageClass不需要每次创建,因为这个不需要很多,不同的PVC可以用同一个StorageClass。
新建文件:glusterfs-storageclass.yaml:
replicate:3代表会创建三个副本复制模式的GluserFS Volume。
执行命令创建:
【Kubernetes创建应用】
应用部署人员创建pvc及应用(本文还是以mysql为例)
创建两个文件:
▪ glusterfs-pvc.yaml:
▪ mysql-deployment.yaml:
执行命令创建:
查看endpoint、service、pv,可以发现这些都自动建好了:
查看PVC:
c可以看到PV和PVC已经绑定好。
还是可以用刚才的命令连接到mysql:
按刚才的方式测试mysql pod重新调度后数据还在不在,可以发现数据还在。
从上一篇文章可以看到手动方式需要系统管理员每次手动建GlusterFS的Volume和Kubernetes的PV,或者系统管理员事先建好一批Volume和PV。而本文所介绍的自动方式则是不需要,Kubernetes可以根据应用部署人员的需要动态创建Volume和PV,节省了很多工作量,所以,得出的结论就是推荐使用自动方式。有更好建议的同学可以留言分享你的观点,我们一起探讨吧!
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK