QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

容器集群管理工具:四大金刚之对比

  • 2020-03-11
  • 本文字数:3063 字

    阅读完需:约 10 分钟

容器集群管理工具:四大金刚之对比

基于云的基础设施,容器,微服务和新编程平台在世界范围占据了一大块媒体领域,横扫 IT 界。Docker、容器的使用在这几个月内呈爆炸式增长,已经提交了 20 亿的镜像“pulls”;镜像数在 2015 年 11 月就已达 12 亿。从大型国际公司到小型创业公司,容器技术的使用都有明显增长。

集群管理工具总览

很明显,容器在创建和交付应用程序的过程中有着新发展。然而,大范围控制容器部署也会有一些并发症。容器肯定是跟资源相匹配的。故障肯定是越快解决越好。这些挑战会导致集群管理和编排的并发需求。


集群管理工具是一个通过图形界面或者通过命令行来帮助你管理一组集群的软件程序。有了这个工具,你就可以监控集群里的节点,配置 services,管理整个集群服务器。集群管理可以从像发送工作到集群的低投入活动,到像负载均衡和可得性的高介入工作。在这篇文章中,我们来看一下目前比较受欢迎的集群管理工具,并讨论一下他们的优点和面临的挑战。

1、Swarm-Docker

Docker Swarm 让你聚集一些 Docker 引擎到一个虚拟引擎。在一个分布式应用程序环境中,计算元素必须也是可以被分布的。Swarm 允许你在本地聚集 Docker 引擎。有了单个引擎,应用程序可以被扩展得更快,更有效率。Swarm 能够扩容到 50000 个容器,1000 个节点,同时当容器添加到集群的时候一点都不影响性能。


再加上,Swarm 的角色相当于 Docker API。任意可以操作 Docker Daemon 的工具都可以运用 Docker Swarm 的力量在很多主机上进行扩容。这些包括了像 Flynn,Compose,Jenkins 和 Drone 之类不同的主机。


Swarm 也可以在后端运行 Mesos 或者 Kubernetes 的时候,被用来作为前端 Docker 客户端。Swarm 在它的核心内部是一个简单的系统:每个主机运行一个 Swarm 代理与管理员。管理员处理容器的操作和调度。你可以在高可用状态下运行,它使用的是 Consul,ZooKeeper 或者 etcd 来发送容错 events 到后端系统。


Docker Swarm 的一个优点就是,它是一个本地解决办法——你可以用 Docker 命令来实施 Docker 网络,插件和数据卷。Swarm 管理员为 leader 选举创建一些 master 和特定的规定。这些条例实施在初级 master 故障的 event 里。Swarm 调度器以各种各样的过滤包为特色,也包括紧密性和节点标签。过滤包能够附加容器到底层节点,资源得到更好的利用,性能得到提升。

2、Fleet——Core OS

Core OS 被创建来允许弹性扩容,允许管理计算能力。与其通过 apt 或者 yum 安装包,Core OS 觉得倒不如利用 Linux 容器来处理更高抽象水平的 service,提供好处给虚拟机,但是重点是在应用程序上而不是在完成虚拟化主机上。



Fleet 能够在它分享个体初始系统的场景中将 Core OS 集群虚拟化。有了 Fleet,每个机器都有一个代理和一个引擎。虽然单个引擎在集群中的任意节点都是活跃的,但是整个引擎社区一直都是活跃的。Fleet 也可以处理套借口激活——容器可以被用来处理在特殊接口的连接。这就允许系统在需要的时候创建进程而不是等待需求的时候再去创建。


你们的开发运维人员将他们的时间重点花在管理作为 service 创建基础的容器上,同时不需要担心可能出现在单个机器上的潜在问题。Fleet 确保在集群中的容器在操作状态。在发生机器故障的时候,容器会自动转移到健康的机器上。

3、Kubernetes——Google

Kubernetes 由谷歌开发,允许你在许多不同的主机上管理容器化应用程序。它提供工具让你部署,弹性扩容和维护应用程序。Kubernetes 的开发者致力于保持它一直处于可访问、轻量级状态,并且易于使用。它可以在很多云环境中使用,包括私有云,公有云,多云端和混合云。Kubernetes 可以在 fly 上进行自我修复,它以自动复制,自动再启动,自动定位为特色。它可以被不断扩展,它的特点是 hookable,可插拔和模块化。它已经被完全开源,谷歌在 2014 年首次宣布开发它,第一版在 2015 夏天的时候发布。除了最近几年的收获,Kubernetes 本身也是基于谷歌内部十多年使用容器技术的经验。



Kubernetes 使用容器组 pod,并且在同时被调度和部署。调度的基础配置是 pods,因为相比于系统,单个容器会被当成是基础单元。大部分的 pods 最多有 5 个容器,这就组成了一个 service。Pods 会按照需求在现实生活中创建和删除,或许修改。


Kubernetes 是一系列宽松的、可以在很多不同的工作负载下操作的松散耦合原语。它很大程度上依赖于 Kubernetes API 的可扩展性。API 在内部使用,同样的,在外部被容器和拓展版本运行在系统中。目前,已经应用 Kubernetes 的项目和企业包括:Wikimedia Foundation 从本土设置转移到 Kubernetes;eBay 在 OpenStack 上运行 Kuberenetes 和容器;Viacom 用 Kubernetes 创建了一个先进的容器化基础设施。

4、Mesos——Apache

Apache Mesos 是一个集群管理工具,它着重于资源隔离,以及分布式网络或者在框架上分享应用程序,它的构想和开发源于加州大学伯克利分校。


一个开源系统,它会给管理员分享资源、提升集群利用率的功能。目前使用 Apache Mesos 的公司包括:Apple,Airbnb 和 Twitter。


Apache Mesos 对于像 CPU,Disk 和 RAM 之类的计算元件来说是一个抽象层。它运行在每台机器上,其中一台机器被设计来作为 master 来运行其它机器。任意 Linux 程序都可以运行在 Mesos 上面。Mesos 的一个优点就是应对故障,它会提供额外的安全层。



Mesos 被设计来处理成千上万的主机,支持各种各样主机上的工作负载。在一个 Mesos 配置上,你可能会发现 Docker 和 Hadoop 并排运行。几年前,当系统支持 Twitter 的快速扩张的时候 Mesos 做到了可视化。


Mesos 使用代理节点系统来运行任务。代理发送一张可得资源清单到 master。在任意时刻,都会有成千上万的代理节点在进行操作。同样,master 也会分布任务到代理上。

比较不同容器编排工具

Kubernetes 是一个全径且全面的容器管理平台,有动态调度、升级、自动伸缩和持续健康监测的功能。相较而言,Docker Swarm 只是从单个容器引擎提供一个集群系统的视角。


Mesos 和 Kubernetes 比较相似,因为他们都是被开发来解决在集群化环境中运行应用程序的问题。但 Mesos 在运行集群方面不如 Kubernetes,它重点放在它强大的调度功能和它被插在各种各样的调度器的性能上。Mesos 并不是为容器而生的,在容器流行之前就已经被开发出来,它的一些地方被修改来支持容器。


Fleet 利用 etcd,一个和 Core OS 一起做出来被系统化的键值对,对于 Linux 来说是一个系统和 service 管理员。系统化是为单个容器设计,但是 fleet 延展它的性能到一个集群的机器。Fleet 通过允许你运行 service 的一些实例,来帮助项目应对故障。它可以部署单个的容器到任意本地,运行容器在一个或者多个机器上,并且部署一个容器的多个实例。


从另一个方面来说,Fleet 并不适用于处理一些像服务注册,在调度基础上利用,服务发现或者容器间的交流这些在分布式微服务环境中发生的情况。Fleet 在这四个工具中属于比较低调的引擎,所以它最好处于一个像 Kubernetes 或者其它解决方案可以在上面操作的层次。

编排工具满足日益增长的需求

现今的企业需要能够满足他们需求不会出现故障的冗余系统。另外,大数据和数据挖掘需要很多资源来过滤海量信息。除非这些公司适应和修改他们的登录信息系统的方式,不然他们面对更快、更灵活的竞争对手会很快失去阵地。在现在这个高速网络规模的时代,修复单个机器不是一个有效的解决方法。分布式系统允许你快速调度出故障的机器到垃圾箱,并且重新分配资源到健康集群的节点上。这就是管理 Docker 和其它容器集群重要性。


本文转载自才云 Caicloud 公众号。


原文链接:https://mp.weixin.qq.com/s/S0kPNk01ocERJsKaBezn3g


2020-03-11 19:513447

评论

发布
暂无评论
发现更多内容

现成秒合约交易APP系统开发模板

OpenMLDB:一文了解带参数查询语句(paramterized query statement) 的细节

第四范式开发者社区

机器学习 数据库 GitHub 开源 OpenMLDB

OpenMLDB: 一文了解窗口倾斜优化技术细节

第四范式开发者社区

机器学习 数据库 开源技术 OpenMLDB

技术分析| WebRTC开源服务器商业化过程中遇到的问题及挑战

anyRTC开发者

开源 音视频 WebRTC 服务器 实时通信

ZooKeeper分布式配置——看这篇就够了

牧小农

zookeeper 分布式配置

Vue进阶(幺肆叁):如何用绝对定位(position:absolute)完美定位布局及其注意事项

No Silver Bullet

Vue 绝对定位 10月月更

【LeetCode】加一Java题解

Albert

算法 LeetCode 10月月更

数字货币期权交易软件系统开发内容(源码搭建)

官方线索|#1024小鹏汽车科技日#如约而至!关于未来出行,你有什么想象?

搬砖人

1024我在现场

百度商业托管页系统高可用建设方法和实践

百度Geek说

架构 高可用

对自己深度学习方向的论文有idea,可是工程实践能力跟不上,实验搞不定怎么办?

Giant

自然语言处理 机器学习 深度学习 算法 论文

pygame 二次 hello world 项目感知

梦想橡皮擦

10月月更

ARouter 在多 module 项目中实战

逆锋起笔

android arouter 路由框架 阿里arouter

【Flutter 专题】23 图解自定义 Dialog 对话框

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 10月月更

数字货币合约交易APP系统开发介绍(案例)

从零到熟悉,带你掌握Python len() 函数的使用

华为云开发者联盟

Python 数据结构 函数 内置函数 len()

架构3期模块一作业

渐行渐远

架构实战营

模块一

迪马

人脸识别主板能应用哪些产品设备?

双赞工控

安卓主板 工控主板 主板定制

理解 std::declval 和 decltype

hedzr

算法 元编程 C++11 c++17 纯虚函数

有了这个告警系统,DBA提前预警不是难题

华为云开发者联盟

数据库 监控 GaussDB(DWS) 智能监控 告警系统

永续合约APP系统开发简介(搭建)

数字货币合约交易系统开发内容(源码)

👊 【Spring技术特性】采用protostuff和kryo高性能序列化框架实现RestTemplate的序列化组件

码界西柚

spring 序列化协议 序列化机制 10月月更

期货合约系统APP开发简介(搭建)

钉钉宜搭3.0发布:易连接、酷数据、更安全

科技热闻

代码质量管理:SonarQube + Jenkins Pipeline配置

看山

DevOps 10月月更

持续测试、持续集成、持续交付、持续部署和DevOps

FunTester

持续集成 持续交付 持续测试 FunTester 持续构建

永续合约软件系统开发源码搭建

Shopee ClickHouse 冷热数据分离存储架构与实践

Shopee技术团队

数据库 后端 Clickhouse 存储 S3

Java 面试八股文之数据库篇(三)

Dobbykim

容器集群管理工具:四大金刚之对比_容器_才云科技_InfoQ精选文章