返回 登录
0

Kubernetes、Swarm、Mesos最新版本功能比较

Kubernetes,Docker Swarm,Mesos作为时下流行切靠谱的容器框架受到了广大开源爱好者和企业的关注和支持。面对用户需求不断的升级和自身产品不断的改进更新,其功能愈发趋于完善,迭代版本也不断的发布。

新版本概述

Kubernetes作为来自 Google 云平台的开源容器集群管理系统,已经更新到了1.3版本。其基于 Docker 构建一个容器的调度服务。该系统可以自动在一个容器集群中选择一个工作容器供使用,其核心概念是 Container Pod。

新发布的Docker引擎1.1.2包含Swarm模式,在这种模式下对一组Docker引擎进行本机管理,这组引擎称为一个Swarm。内置编排系统,称为SwarmKit。使用DockerCLI可以创建一个Swarm集群,给这个集群部署应用服务,并对集群行为进行管理。

前不久刚刚发布的Mesos1.0.0首先是改进了与docker的集成方式,弃用了docker daemon;其次,新版本大力推进解决了借口规范化问题,新的HTTP API式的开发者能够更容易的开发Mesos框架;最后为了更好的满足企业用户的多租户,安全,审计等需求,新版本提供了更细粒度的授权验证机制。

高可用共享配置和服务发现方面

Kubernetes继续采用熟悉的etcd Active-Standby模式;Docker Swarm支持consul,etcd和ZooKeeper;Mesos则继续选择经典ZooKeeper。

值得注意的是,现在Mesos仅用ZooKeeper进行Leader的选举,并没有用它进行数据的共享。在Mesos中有一个Replicated Log模块,负责进行多个master之间的数据共享,同步等。

为了使Mesos的高可用不依赖第三发的集群,社区正在考虑用Replicated log替代第三方集群进行Leader选举。参考MESOS-3574项目。这种设计可以理解为大集群+小集群,小集群也就是ZooKeeper/etcd/consul集群,它们为大集群服务,比如提供Leader的选举,为大集群提供配置数据的存储和服务发现等功能。在一个复杂的系统中,这个小集群可以为系统的多个服务组建同时提供服务。

容器化技术方面

Kubernetes除支持主流Docker容器(需单独安装Docker组件)以外也支持CoreOS rkt等容器技术;

Docker Swarm原生支持Docker,安装Docker后开启Swarm模式即可使用;

Mesos上,Docker Containerize的力度降低,Mesos Containerize的研发和功能完善显著提升,Mesos 1.0.0的agent无需安装docker程序也可以运行docker容器,或者说,mesos可以自己解析docker镜像来启动容器。

(虽然在docker1.11之后,containerd的引入已经解决了docker daemon重启带来的容器重启问题,但是宿主机的init系统仍然无法直接跟踪进程的生命周期。)另外,Mesos Containerize 对AppC和OCI也有支持。

集群管理,编排和使用和分散设计方面

Kubernetes继续通过经典特色的Pods(协作容器集合),RC,Services,Labels,Proxy等各种组件来管理组建容器集群。

(增加了pods-per-core参数,运行在kubelet节点上每核CPU上最大的POD数量,如果配置了这个参数,那么这个kubelet节点上运行的POD数量不能超过这个参数值,这个参数可以设置成0,表示取消最大的POD数量限制。)

Docker Swarm新增了编排功能,其集群管理与Docker引擎相结合,使用Docker引擎CLI便可创建一个Docker引擎的Swarm,在这个集群中进行应用服务的部署。对于Swarm集群的创建和管理,无需其他额外的编排软件。

Mesos使用Apache下开源分布式资源管理框架,一级调度由Mesos master(AS)管理各slave节点,下发task。二级调度由Framework组件组成,分为调度器(Scheduler),执行器(Executor),另外,Docker Swarm使用Docker引擎,其不是在部署时处理节点角色之间的差异化内容,而是在运行时处理特殊化内容。通过使用Docker引擎可以部署管理节点和工作节点。这就意味着你可从一个单一的磁盘映像上创建一个完整的Swarm集群。

面向服务的组件模式方面

Kubernetes可以在应用模版配置中指定副本数量,服务要求(IO优先,性能优先等),资源使用区间,标签(Labels等)来匹配特定要求达到预期状态;

Docker Swarm利用Docker引擎运用描述性方式,让用户在应用堆栈上定义各种服务的理想状态。例如描述一个应用:包含一个配有信息排队服务的Web前段服务和一个数据库后端;

Mesos则通过Exector结合Isolator(CGroups,GPU,Memory,Disk等)在process(容器)启动前,启动后,销毁后等各种时间点调整资源使用。

本文作者来自轻元科技郭威,该文为上篇。

评论