之前分享了《聊聊调度框架,K8S、Mesos、Swarm 一个都不能少》那么你是否仍在Docker和Kubernetes选择上陷入了困扰?所以不要担心,因为这也是很多人的苦恼,这两者都是非常优秀的容器服务,至于那种更好,其实在很大程度上取决于自身和团队的需求。
在深入研究前,我们需要了解什么是“容器”。
容器是轻量级、独立的镜像,可以用来实现软件,包含了成功运行应用所需的所有内容,工作方式类似于虚拟机(VM),但是它只包含必要的库和设置来执行应用。
Docker Swarm、Kubernetes都提供了相同基础设施中部署和隔离软件的容器,也有很好处理应用的方式,但这两者之间也有一些关键性的区别:
很多工程师,都喜欢在Docker Swarm上工作,因为它很容易使用和实现,但选择了Docker Swarm,它就会比Kubernetes更优秀吗?
需要先了解一下什么是Docker Swarm、Kubernetes。
Docker Swarm
Docker是一个开源平台,它可能意味着一个公司,一个容器平台或Docker集群,本文讨论的是容器技术,所以这里提到的Docker的意思其实是Docker Swarm,Docker Swarm是一个灵活的容器存储平台,以强大的易用性而著称,另一方面,Docker Swarm则完全是为了管理Docker引擎集群。
Kubernetes
Kubernetes是一个流行的开源容器存储程序,它是由谷歌建立的,用来管理其系统,这是一个开源的、可扩展的、强大的工具,可以处理容器,同时提供巨大的可伸缩性和自动化。
去年,作为热门游戏之一的Pokemon Go,也使用了Kubernetes来管理它们的产品和快速扩展,Pokemon Go的成功,自己快速地传播,让人切实地感受到了Kubernetes的力量。
对比
安全和设置
每个工具都有自己的安装和设置过程,想在云端或其他基础设置中管理容器
,很大程度上取决于它是如何建立的,相比之下,Kubernetes对用户的友好度并不如Docker Swarm。Kubernetes:当涉及到安装和设置时,它会给开发者出一些难题,首先,需要为每个操作系统(OS)重新配置,在线文档在这个过程中有很多的帮助,然而在构建定制环境时,可能会变得十分复杂,唯一的解决办法是:搜谷歌。Kubernetes不容易安装和设置的另一个关键原因在实现之前需要进行规划,需要花费大量的时间和精力去规划节点,而且要进行人工整合,因为它并不是所有的东西都可以自动化,这让Kubernetes难以管理。
Docker Swarm:得益于它的命令行界面(CLI),Docker Swarm很容易设置和管理,它使用CLI和GIT类似的语义,这使得应用开发者能够轻易地将新技术集成到工作流当中,与Kubernetes相比,在实现新操作系统、环境的容器时,无需学习新的东西。
综上所述,在安装和设置方面,Docker Swarm略胜一筹。
监控和日志
一旦部署了容器,下一步就是监控节点集群,Kubernetes和Docker Swarm都成功地提供了一个良好的监控和日志记录流程。
对于Kubernetes来说,监控和日志记录集群的方法不止一种,下面有一些方法以供参考:
- 监控:Grafana , Heapster , or Influx
- 日志记录:Kibana (ELK) or Elasticsearch
对于Docker Swarm来说,没有内置的库或进程来监控或记录,但是开发人员可以使用第三方应用来达到目的,第三方监控工具有:Sumo Logic , Retrace , Reimann , and DataDog。
伸缩和性能
使用容器服务的最基本原理是它们提供的可伸缩性,这两个平台都是高度可伸缩的,并且在特定的时间支撑数千个容器,起初,Docker Swarm对大量的容器没有很好的支持,然而,在新的版本后,它就可以支持和Kubernetes的容器数量比肩,两个系统都支持1000个节点集群,这些集群可以支持多大3万个容器。
在性能方面,Kubernetes对Dokcer Swarm有良好的基础,然而,由独立机构完成研究表明,Docker Swarm可以比Kubernetes快5倍的速度去运转容器。
Kubernetes | Docker Swarm |
---|---|
在市场上最成熟的解决方案。 | Docker Swarm提供良好的特性,但受限于其API。 |
Kubernetes也在市场上最受欢迎的解决方案。 | rDocker Swarm的市场Kubernetes相比相对较弱。 |
Kubernetes很难安装和配置。 | Docker Swarm的设置和安装是很容易的。 |
Kubernetes提供内置的日志记录和监控工具。 | Docker只支持第三方监控和日志记录工具。 |
自动定量的CPU利用率是一个很大的因素。 | 可以手动扩展服务。 |
结论
Kubernetes得到了开发者社区的广泛认可,尽管它的安装过程非常艰难,之所以受到欢迎的原因很大程度取决于它提供的灵活性,以及良好的谷歌背景,而Docker Swarm有一个小型的社区,增长略微缓慢。
Kubernetes的庞大社区意味着新的工具、特定和支持。若你是一个小的开发者,想要学习容器服务,那么Kubernetes会有大量的经验可以借鉴,很多志同道合的朋友可以一起学习,而Docker Swarm同样可以根据自身业务需求更深入了解。
原文作者:Damian Wolf
原文链接: