108

一篇讲透Kubernetes与GlusterFS之间的爱恨情仇(二) - 恒生技术之眼 - 恒生研究院

 7 years ago
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.
neoserver,ios ssh client

一篇讲透Kubernetes与GlusterFS之间的爱恨情仇(二)

上文我们主要介绍了Kubernetes与GlusterFS的部署方式和如何使用手动的方式使用存储时自己创建GlusterFS的卷(GlusterFS的数据存储在卷Volume上)请戳链接回顾:一篇讲透Kubernetes与GlusterFS之间的爱恨情仇(一)

本文我们将继续介绍如何自动利用Kubernetes的 Dynamic Provisioning 特性。自动方式需要先部署Heketi软件,Heketi用来管理GlusterFS,并提供RESTful API接口供Kubernetes调用。Heketi需要使用裸磁盘,假设三个GlusterFS节点上都挂了一块裸磁盘 /dev/xvde。接下来我们进入实战模式

【部署Heketi】

部署在

f_8c541a4c7e88f5731525d3ffc3967ed6.png

安装:(以下安装过程--到安装结束的地方--可以使用 http://192.168.58.228:9007/glusterfs/heketi/ 上的一键安装包安装)
改为公司yum源

f_9fbe68dbb273a7a8ca18a35c5368a239.png

f_9c895184eea89bbedc261e5322cdafac.png

(安装结束)
修改/etc/heketi/heketi.json(省略了没有修改的部分):

f_7e69b0682de53d2b936f5cf6d975ca09.png

这里主要把端口改为8083了(防止冲突),executor 改为 ssh, sshexec 的各项配置也做了相应修改。
其中的keyfile制作方法:
f_5843375d534071616dd0858e00ee8414.png

输入key(随便起的名字)一直回车。制作完成后会在当前目录下生成key、key.pub,把 key.pub 上传到GlusterFS三台服务器的 /root/.ssh/ 下面,并重命名为 authorized_keys,/etc/heketi/heketi.json 中 的 keyfile 指向 生成的 key(包含路径)。
启动:

f_6d3451a58f13b78c500ce490193c7b9c.png

f_10d82fa9afb8d8043696b38d917b5613.png

(Heketi数据目录: /var/lib/heketi)
验证:
f_d1288e42d64767b8ff486319ab0350f8.png

f_48d9912306cbb127da2859b597625f27.png

配置节点
新建 topology.json:

f_8a19e7c34d0e0b17fffc752eaa3195ac.png
f_dc4ced1e87648bb758482a92bbaf44db.png
f_25ea9ff21673b329037383fd8797ed96.png

载入配置:

f_46e397f793f9fcb6955adb42c7b5fd73.png

查看拓扑:

f_07e20e15884834fbdc4a491d338934f5.png

建个大小为2G的volume试试:

f_97dac398462060c35a62051387931e77.png

f_0511ef87223f6696fa6c1cb8da72f817.png

f_fef7566536bf0b641f0aa3fae4d942fb.png

【Kubernetes创建StorageClass】

Kubernetes通过创建StorageClass来使用 Dynamic Provisioning 特性,StorageClass连接Heketi,可以根据需要自动创建GluserFS的Volume,StorageClass还是要系统管理员创建,不过StorageClass不需要每次创建,因为这个不需要很多,不同的PVC可以用同一个StorageClass。
新建文件:glusterfs-storageclass.yaml:

f_844f221bfa46bcfd7abbcee2485b2c05.png

replicate:3代表会创建三个副本复制模式的GluserFS Volume。
执行命令创建:
f_337e0a348e6a3320d26e0addefee18b6.png

f_7928694bfd1aaa626633dbc2056bb2e5.png

【Kubernetes创建应用】

应用部署人员创建pvc及应用(本文还是以mysql为例)
创建两个文件:
▪ glusterfs-pvc.yaml:

f_6ffefb72dc32ec6f7f912a9389588279.png

▪ mysql-deployment.yaml:

f_2072e88ee1eb18ab5d7e2f7657a05aea.png
f_e5bbb1a67ca316e84cb534bc457628ef.png

执行命令创建:

f_a7b70d261d4de4ded90d0a87165dfbf1.png

查看endpoint、service、pv,可以发现这些都自动建好了:

f_efb61cca7fccd5216c074759868e3a17.png

f_de75546157e73aec151c1270460773b4.png

f_0558b4c6a53fb4d5d5c6607f0b8d9dd3.png

查看PVC:

f_6c8c656c9baad9706a12371cd7f41ee8.png

c可以看到PV和PVC已经绑定好。
还是可以用刚才的命令连接到mysql:
f_5ce2f4bdad4101979f7df42ffe1fe131.png

按刚才的方式测试mysql pod重新调度后数据还在不在,可以发现数据还在。

从上一篇文章可以看到手动方式需要系统管理员每次手动建GlusterFS的Volume和Kubernetes的PV,或者系统管理员事先建好一批Volume和PV。而本文所介绍的自动方式则是不需要,Kubernetes可以根据应用部署人员的需要动态创建Volume和PV,节省了很多工作量,所以,得出的结论就是推荐使用自动方式。有更好建议的同学可以留言分享你的观点,我们一起探讨吧!


Recommend

  • 102

    一篇讲透Kubernetes与GlusterFS之间的爱恨情仇(一) 存储是容器编排中非常重要的一部分。Kubernetes从v1.2开始,提供了dynamic provisioning这一强大的特性,可以给集群提供按...

  • 44

    GlusterFS是一个开源的横向扩展文件系统。这些示例提供有关如何允许容器使用GlusterFS卷的信息。

  • 47

    说明 最近由于需要部署有状态服务,没有云环境的支持,不能很好的通过cloud provider调用云磁盘EBS,所以在node节点部署了一套glusterFS分布式文件存储系统,用来提供非结构化数据存储,存储图片,大文件等等. Kuberne...

  • 67

    概观本指南支持在Kubernetes集群中集成,部署和管理GlusterFS容器化存储节点。这使Kubernetes管理员能够为其用户提供可靠的共享存储。包括设置指南、其中包含一个示例服务器pod,它使用动态配置的GlusterFS卷进行存储。对于那些希望测试或了解有关此主题的更多信息...

  • 21

  • 29

    或01数据库并发控制的作用 1.1 事务的概念 在介绍并发控制前,首先需要了解事务。数据库提供了增删改查等几种基础操作,用户可以灵活地组合这几种操作,实现复杂的语义。在很多场景下,用户希望一组操作可以...

  • 30

    Kubernetes,容器管理领域的领导者;GlusterFS,分布式文件系统的后起之秀,他们之间会擦出什么样的火花呢? 用Kubernetes部署的应用可以分为无状态的和有状态的,无状态的应用没有数据,Pod(一个或若干容器的集合)挂了被重新拉...

  • 6

    GlusterFS is a network attached distributed storage solution that connects multiple storage pool from different machines and act as a simple unified storage. It’s a high available, durable storage solution that can scale out and able to store...

  • 4

    在生产环境使用 Kubernetes ,绕不过去的一个问题就是持久化卷。 如果是使用阿里 ACK 托管平台的话,可以用 OSS 来持久化卷,如果是自搭的 kubernetes,那么存储就需要仔细考虑了。 ceph比较复杂,容易出故障。nfs 也不可用,毛病多多。minio倒是...

  • 8

    生产实践:使用 GlusterFS 搭建 Kubernetes 存储卷集群 作者:架构成长指南 2023-12-08 07:59:04 k8s中的StorageClass用于定义和配置持久卷(Persistent Volume)的资源对象。StorageClass 提供了一种抽象层,使得...

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK