在k8s上编排ceph是容器生态存储方案的一个趋势,能非常简单快速的构建出存储集群,特别适合供有状态服务使用,计算存储分离将使应用的管理变简单,业务层与云操作系统层也能更好的解耦。
本文中需要用的yaml文件和Dockerfile等都放到这个仓库 包含:rook operator ceph cluster storage class配置,mysql wordpress事例,性能测试fio Dockerfile与yaml等
安装
|
查看operator是否成功:
|
然后创建ceph集群:
|
|
查看ceph集群:
|
参数说明:
|
访问ceph dashboard:
|
然后访问https://10.1.86.201:31631 即可
管理账户admin,获取登录密码:
|
|
使用
创建pool
|
创建pvc
在cluster/examples/kubernetes 目录下,官方给了个worldpress的例子,可以直接运行一下:
|
查看PV PVC:
|
看下yaml文件:
|
是不是非常简单。
要访问wordpress的话请把service改成NodePort类型,官方给的是loadbalance类型:
|
外部访问ceph集群
cluster.yaml里有配置,可配置成共享宿主机网络,这样外面可直接连接ceph集群:
|
ceph集群监控
通过prometheus operator配合rook可以快速构建ceph集群的监控,sealyun安装包中已经自带了prometheus operator,所以直接干即可
启动ceph prometheus
注意这里是为ceph单独起了一个prometheus,这样做挺好,因为毕竟可以缓解prometheus单点的压力
|
然后我们的grafana在30000端口,先在grafana上添加数据源
数据源要配置成:
|
|
导入dashboard
还有几个别的dashboard可以导入: Ceph - Cluster Ceph - OSD Ceph - Pools
再次感叹生态之强大
增加节点,删除节点
|
|
把useAllNodes设置成false,然后在nodes列表里增加节点名即可,保存退出后会自动增加ceph节点
|
删除同理,直接edit删除即可,十分强大
性能测试
这里着重说明测试方法,给出在我的场景下的测试结果,用户应当根据自己的场景进行自己的测试。
测试环境
我这里使用阿里云服务器,挂载了一个1000G的磁盘,不过我实际测试时用的盘很少(盘大太慢)
|
可看到一个本地盘和一个ceph挂过来的盘
先搞个fio的镜像
|
测试容器,稍微改一下mysql的yaml:
|
测试过程
进入到容器内跑测试工具:
|
结果:
|
在宿主机上测试:
|
|
这里看到随机读写性能损失约 27%多,这个结论并没有太多参考意义,用户应当根据自己实际场景进行测试
改用ceph共享宿主机网络模式进行测试,结果差不多,并无性能提升
要想排除在容器内测试因素的影响,也可以直接在宿主机上对块设备进行测试,做法很简单,可以把块挂到别的目录上如:
|
bluestore方式
直接使用裸盘而不使用分区或者文件系统的方式部署ceph
|
bluestore模式能显著提升ceph性能,我这边测试随机读写性能提升了8%左右
|
总结
分布式存储在容器集群中充当非常重要的角色,使用容器集群一个非常重要的理念就是把集群当成一个整体使用,如果你在使用中还关心单个主机,比如调度到某个节点,
挂载某个节点目录等,必然会导致不能把云的威力百分之百发挥出来。 一旦计算存储分离后,就可真正实现随意漂移,对集群维护来说是个极大的福音。
比如集群机器过保了需要下架,那么我们云化的架构因为所有东西无单点,所以只需要简单驱逐改节点,然后下架即可,不用关心上面跑的是什么业务,不管是有状态还是无
状态的都可以自动修复。 不过目前面临最大的挑战可能还是分布式存储的性能问题。 在性能要求不苛刻的场景下我是极推荐这种计算存储分离架构的。
常见问题
注意主机时间一定要同步
|
|
ceph cluster无法启动
报这个错误
|
需要把宿主机store.db文件删掉,然后delete pod即可, 主意别指错目录如果自己改了目录的话
|
|
rook删除PVC PV依然存在
因为storageclass回收参数:
|
|
rook-ceph namespace无法删除 cephclusters.ceph.rook.io CRD无法删除
|
把CRD metadata finalizers下面的内容删了,CRD就会自动删除,然后只要rook-ceph namespace里没有东西就会自动清理掉
|
|
使用宿主机网络时集群无法正常启动
集群中单节点时把mon设置成1即可
|
探讨可加QQ群:98488045
本文分享自微信公众号 - sealyun(gh_f33fe7b0c869)。
如有侵权,请联系 [email protected] 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。