文档章节

数人云|关于Docker Swarm&K8S,几大要素免踩坑

数人云
 数人云
发布于 2017/08/28 10:43
字数 1488
阅读 3
收藏 0

数人云之前分享了《聊聊调度框架,K8S、Mesos、Swarm 一个都不能少》那么你是否仍在Docker和Kubernetes选择上陷入了困扰?所以不要担心,因为这也是很多人的苦恼,这两者都是非常优秀的容器服务,至于那种更好,其实在很大程度上取决于自身和团队的需求。

在深入研究前,我们需要了解什么是“容器”。

容器是轻量级、独立的镜像,可以用来实现软件,包含了成功运行应用所需的所有内容,工作方式类似于虚拟机(VM),但是它只包含必要的库和设置来执行应用。

Docker Swarm、Kubernetes都提供了相同基础设施中部署和隔离软件的容器,也有很好处理应用的方式,但这两者之间也有一些关键性的区别:

很多工程师,都喜欢在Docker Swarm上工作,因为它很容易使用和实现,但选择了Docker Swarm,它就会比Kubernetes更优秀吗?

image

需要先了解一下什么是Docker Swarm、Kubernetes。

Docker Swarm

Docker是一个开源平台,它可能意味着一个公司,一个容器平台或Docker集群,本文讨论的是容器技术,所以这里提到的Docker的意思其实是Docker Swarm,Docker Swarm是一个灵活的容器存储平台,以强大的易用性而著称,另一方面,Docker Swarm则完全是为了管理Docker引擎集群。

image

Kubernetes

Kubernetes是一个流行的开源容器存储程序,它是由谷歌建立的,用来管理其系统,这是一个开源的、可扩展的、强大的工具,可以处理容器,同时提供巨大的可伸缩性和自动化。

去年,作为热门游戏之一的Pokemon Go,也使用了Kubernetes来管理它们的产品和快速扩展,Pokemon Go的成功,自己快速地传播,让人切实地感受到了Kubernetes的力量。

image

对比

安全和设置

每个工具都有自己的安装和设置过程,想在云端或其他基础设置中管理容器 ,很大程度上取决于它是如何建立的,相比之下,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倍的速度去运转容器。

KubernetesDocker Swarm
在市场上最成熟的解决方案。Docker Swarm提供良好的特性,但受限于其API。
Kubernetes也在市场上最受欢迎的解决方案。rDocker Swarm的市场Kubernetes相比相对较弱。
Kubernetes很难安装和配置。Docker Swarm的设置和安装是很容易的。
Kubernetes提供内置的日志记录和监控工具。Docker只支持第三方监控和日志记录工具。
自动定量的CPU利用率是一个很大的因素。可以手动扩展服务。

结论

Kubernetes得到了开发者社区的广泛认可,尽管它的安装过程非常艰难,之所以受到欢迎的原因很大程度取决于它提供的灵活性,以及良好的谷歌背景,而Docker Swarm有一个小型的社区,增长略微缓慢。

Kubernetes的庞大社区意味着新的工具、特定和支持。若你是一个小的开发者,想要学习容器服务,那么Kubernetes会有大量的经验可以借鉴,很多志同道合的朋友可以一起学习,而Docker Swarm同样可以根据自身业务需求更深入了解。

原文作者:Damian Wolf 原文链接:https://dzone.com/articles/docker-vs-kubernetes-prons-and-cons?utm_source=tuicool&utm_medium=referral

© 著作权归作者所有

共有 人打赏支持
数人云
粉丝 16
博文 101
码字总数 328110
作品 0
朝阳
架构师
私信 提问
当容器与CI/CD相遇,7个建议送给你

当容器与CI/CD相遇,7个建议送给你 数人云博客2017-09-193 阅读 ci 数人云: Docker是CI/CD的早期采用者,通过利用如GIT等源代码控制机制的正确集成,Jenkins可以在开发者每次提交代码时启动...

数人云博客
2017/09/19
0
0
如期而至的 Swarm 新工具 Crane 开源解读

中秋节前,数人云技术团队推出了一款新的基于SwarmKit技术栈的工具。大家可能都了解到数人云的容器技术栈是用Mesos驱动的,为什么在Docker刚发布最新的1.12版之后,我们要做出这个工具呢?在...

达尔文
2016/10/17
2.8K
2
Meetup北京报名开启|一起吹响Container+集结号

Meetup北京报名开启|一起吹响Container+集结号 数人云博客2017-08-0112 阅读 container开启 Container技术在国内的落地实践, 已进阶Container+ 8月阅兵仪式,一睹超强装备的风采, 技术圈也...

数人云博客
2017/08/01
0
0
微服务架构企业级增强产品,数人云推出统一配置中心Hawk

微服务架构企业级增强产品,数人云推出统一配置中心Hawk 数人云博客2017-11-221 阅读 架构服务产品配置 11月16日,数人云在PaaS Innovation大会上,正式发布企业应用架构管理体系EAMS,这是数...

数人云博客
2017/11/22
0
0
基于Ansible+Docker快速实现DCOS云平台部署

本文根据DCOS联盟第一期线上分享整理而成 大家好,今天给大家分享自动快速部署DCOS服务相关组件的一些实践。 本次分享将包括以下内容: 部署在master1 和 master2 两台主机,通过检查这两台主...

刘金烨
2016/11/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

码云项目100,水一发

简单回顾一下: 早期构想最多的,是希望能将PHP一些类和编码分区做得更细,所以很多尝试。但不得不说,PHP的功能过于单一,是的,也许写C/C++扩展,可以解决问题,那我为什么不用C#或者Golan...

曾建凯
今天
3
0
Spring应用学习——AOP

1. AOP 1. AOP:即面向切面编程,采用横向抽取机制,取代了传统的继承体系的重复代码问题,如下图所示,性能监控、日志记录等代码围绕业务逻辑代码,而这部分代码是一个高度重复的代码,也就...

江左煤郎
今天
4
0
eclipse的版本

Eclipse各版本代号一览表 Eclipse的设计思想是:一切皆插件。Eclipse核心很小,其它所有功能都以插件的形式附加于Eclipse核心之上。 Eclipse基本内核包括:图形API(SWT/Jface),Java开发环...

mdoo
今天
3
0
SpringBoot源码:启动过程分析(一)

本文主要分析 SpringBoot 的启动过程。 SpringBoot的版本为:2.1.0 release,最新版本。 一.时序图 还是老套路,先把分析过程的时序图摆出来:时序图-SpringBoot2.10启动分析 二.源码分析 首...

Jacktanger
今天
6
0
小白带你认识netty(二)之netty服务端启动(上)

上一章 中的标准netty启动代码中,ServerBootstrap到底是如何启动的呢?这一章我们来瞅下。 server.group(bossGroup, workGroup);server.channel(NioServerSocketChannel.class).optio...

天空小小
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部