最近几天,遇到了一个让我百思不得其解的问题,那就是我使用jenkins pipeline进行简单的测试时,两个stage之间需要1分钟左右的切换时间,想想以往都是超快的,这次咋就这么慢呢?就像下面这么慢(这张图上还好点)!
看到这个时间,真的是想象不到,简单的四个echo而已,居然要这么久,这要是真正部署项目还得了,必须解决才行。于是根据平常的排查思路,先去看下jenkins的日志,看jenkins的设置,看k8s的相关参数,增加资源。真的是一顿操作猛如虎,但是然并卵。
找了几个小时,也问了相关的同事、朋友、老师,还是无济于事。终于,突然想起之前有一个用ansible脚本跑的一个k8s集群,决定上去试试,我目前的k8s集群是自己手动搭建的。
果不其然,在之前的集群上跑的效果极好,看下图
看到了吧,很明显。这个时候不言而喻,手动搭建的集群和自动化脚本搭建的集群有差异,差异造成了我的问题。具体有哪些差异呢?
- 一个是网上ansible脚本搭建,一个是我自己纯手工搭建
- 两种方式的集群存储都是使用ceph,但是方式不一样,ansible方式使用的rbd,手动方式使用cephfs(这里是重点)
- 架构上有不同
于是,经过思考,我觉得是ceph的方式问题,因为我之前看到过一篇文章,就说使用cephfs需要linux内核4.10+,而我们目前的服务器是3.10,呵呵。
但是我打算先用NFS试试,于是重拾信心继续干,果不其然,真的好快。我没事,就是心里有点难受。你自己看吧!
好吧。使用NFS看起来是没啥问题的。那就只能是我使用CEPH有问题了。我还是决定使用ceph的rbd先试一下。扶我起来,我还能行!
嗯!真的是这样子!它快起来了!它真的变快了!
到这里,还有啥可说的。自作自受,别人都踩坑了,你还不信,非要自己下去也试一下。
总结一下,造成出现我的问题并不是集群搭建的方式,也不是使用的文件系统有问题,而是没有正确使用CEPH。