写点什么

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

  • 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:513511

评论

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

如何使用JavaScript开发AR(增强现实)移动应用

汪子熙

JavaScript AR 1月月更 增强现实

用 K3s 来运行安装和极狐GitLab Runner

极狐GitLab

一个cpp协程库的前世今生(二十四)对象池与栈内存池

SkyFire

c++ cocpp

作业帮基于 Flink 的实时计算平台实践

Apache Flink

大数据 flink 编程 实时计算 IT

Awesome DAO 文章和资源推荐(8/100)

hackstoic

DAO

行业先锋畅聊 Flink 未来 —— FFA 2021 圆桌会议(北京)

Apache Flink

大数据 flink 编程 后端 实时计算

一文了解 MySQL 中的锁

Ayue、

MySQL 数据库 1月月更

从智能汽车到智慧出行,区块链能打通车联网的任督二脉吗?

CECBC

SparkSQL的入门实践教程

华为云开发者联盟

sql spark 编程 Sparksql 结构化数据

自动驾驶浪潮下,如何给技术迭代插上数据的“翅膀”?

澳鹏Appen

人工智能 自动驾驶 智能汽车 智能驾驶 数据标注

微信业务架构图及学生管理系统架构设计实践

IT屠狗辈

系统架构 架构实战营 微信业务架构图

征文投稿丨在轻量应用服务器上部署SpringBoot项目

阿里云弹性计算

阿里云 用户投稿 轻量应用

Web or Native 哪个才是元宇宙的未来(下)?

Orillusion

WebGL 元宇宙 Metaverse webgpu

恒源云(GPUSHARE)_attention decoder效果不佳时如何应对

恒源云

深度学习 计算机视觉

农业掀起“上链”潮 区块链等数字技术正成为乡村振兴新动力

CECBC

微信业务架构、学生管理系统(草稿)

Geek_16d2b8

架构训练营

Hive企业级性能优化

五分钟学大数据

hive 1月月更

代码之外的生存指南,先掌握这五步。

叶小鍵

手把手教你丨小熊派移植华为 LiteOS-M

华为云开发者联盟

华为 鸿蒙 LiteOS 小熊派 移植

高并发环境下,6个构建缓存服务需要注意的问题

华为云开发者联盟

缓存 高并发 开发 并发 缓存服务

一款基于Java语言开发的,开源商业应用的模块化开发框架和智能管理平台-Axelor

马农驾驾驾

Java 系统开发 BPM 开发框架 智能管理

直播回顾:准确性提升到 5 秒级,ssar 独创的 load5s 指标有多硬核?| 龙蜥技术

OpenAnolis小助手

Linux 开源

亚信科技AntDB数据库荣获“2021金融科技应用创新突出贡献奖”

亚信AntDB数据库

AntDB 金融行业 亚信科技

Mybatis中的VFS是个啥

尹昶胜

mybatis

TortoiseSVN 执行清理( cleanUp )失败的解决方案

编程三昧

svn 开发工具 1月月更

SAST 为什么会成为网络安全领域的下一件大事?

旋极智能

静态分析 静态测试工具 代码静态分析

微信业务架构+学生管理系统毕设方案

李大虾

#架构实战营 「架构实战营」

一条SQL查询语句是如何执行的?

蝉沐风

MySQL sql 面试

恒源云(GPUSHARE)_AdderSR: Towards Energy Efficient Image Super-Resolution学习笔记

恒源云

人工智能 深度学习 计算机视觉

Hive 数据倾斜问题定位排查及解决

五分钟学大数据

hive 1月月更

面向复杂度架构设计之学生管理系统

晨亮

「架构实战营」

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