kubernetes or docker swarm

之前一直在部署kubernetes, 费了九牛二虎之力,前后差不多1个月,查遍各种资料,终于在1M+2N的上面部署成功了,三个节点通讯分布通讯也无问题了,然后,抽了个时间,将生产环境的一部分访问量引导进来, 没想到,仅检查了两天,节点之前的通讯再次无法访问了,光看那些云里雾里的资料,完全没有头绪,然后算了吧,还是试试其他的吧

docker swarm 的部署,头一天学习,模拟下,检查下,然后就简单部署可以了,然后进行service部分的各种参数尝试,观察效果,第二天,部署正式服务器,这个时候,已经快要休假了,导入一部分的访问量, 简单看下访问,没啥大问题,就休假了。

休完假,上去检查下各个服务器,结果发现其中的一个僵住了,反正就是docker ps 无反映了,从模拟客户端访问,发现偶尔下会有超时的现象存在,估计是访问这个僵住的节点了,然后搜索下,没找到特别明显的 故障点,重启下之后,接着跑数据。

现在,两种方式都尝试过,我再也不想碰kubernetes了。

  1. 部署对比

kubernetes相比docker swarm,要麻烦很多,更多的问题是关于网络互联的,虽然最新的kubeadm解决了一部分,但很多的情况下,你就是偏偏无法访问。而没有完全深入kubernetes的情况下,每分钟成M级别 的日志里找问题是件非常痛苦的事情。而docker swarm在这部分接省略好多,几乎没有碰到什么问题就解决了,唯一不足的是,全都是命令行部署,连个配置文件都没有。

  1. 速度对比

我没有对kubernetes进行过大量的测试,仅是在准备卸载的时候进行了下测试。从我这自己的测试来看,200次访问,大约用了40秒的样子,而docker swarm 用了23秒的样子,由于用来管理的服务器配置非常垃圾, 在取消部署在管理服务器上的配置之后,只用了8秒的样子。虽然样本太小,但也说明了不少问题了。从国外的测试资料来看,应该和架构有关系,kubernetes将系统设计的非常的复杂,而docker swarm一直秉承着 简单的原则,在网络处理方面,比kubernetes要少好多个量级,并且,问题的复杂度也小很多个量级

  1. 系统结构对比

kubernetes的结构图我自己研究了好久,才弄懂一点点,我都不知道如何对运维说这个组织,我想,需要对他们说,等他们博士后毕业后再学部署吧。大部分的集群,都需要从一个点慢慢的变成一条线,一个面, kubernetes的起步就直接是一个面了,而docker swarm要简单的多,几乎不需要解释。简单的来说,kubernetes这玩意太复杂,咱们那疙瘩农村人不懂

  1. 优缺点

kubernetes相对而言,文档很多,插件很多,内容很多,总之,一个字:多,两个字:华丽,三个字:不管用。每个人碰到的问题几乎都是独立的,每个人解决问题的方法也几乎是独立的,尤其涉及到网络部分, 我在部署的时候,虚拟机碰到的是一种问题,局域网部署又是另外一种问题,到了生产环境又是一个新的问题,而最后,有些问题得以解决,有些问题重装了系统都没有解决。但kubernetes部署起来非常的优雅, 通过ui去看部署的每个组件的结构也很方便,给你一种想要立马使用的节奏。而docker swarm的部署就非常的痛苦,通过docker service create等等命令来部署,各种插件不全,文档不全,即使通过Shipyard 这种ui去部署也会不尽人意,还不如命令行来的方便,但docker swarm胜在问题相对比较少,碰到问题解决起来也简单。