写点什么

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

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

评论

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

面试官问:mysql中时间日期类型和字符串类型的选择

华为云开发者联盟

MySQL timestamp 时间日期 字符串类型

拿捏这10点,玩转云原生应用

BeeWorks

阿里一面灵魂一问:RPC或者HTTP什么时候需要序列化和反序列化?

热爱java的分享家

Java 架构 程序人生 编程语言 经验分享

35岁程序员创业,为何选择云原生赛道

行云创新

云计算 创业 程序员 云原生 CEO

Linux一学就会之Linux详细基本命令操作

学神来啦

bash Linux centos 运维 Shell

这才是Springboot事务创建流程的正确打开方式(附源码分析!)

热爱java的分享家

Java 架构 程序人生 编程语言 经验分享

北京朝阳区有正规等保测评公司吗?联系电话多少?

行云管家

网络安全 等保测评 朝阳区

Java 项目中使用 Resilience4j 框架实现故障隔离

码语者

Java Resilience4j Bulkhead 故障隔离

鸿蒙轻内核源码分析:虚实映射

华为云开发者联盟

鸿蒙 虚拟内存 物理内存 页表 虚实映射

Hadoop企业级生产调优手册(一)

大数据技术指南

11月日更

盘点分布式软总线数据传输技术中的黑科技|HDC2021技术分论坛

HarmonyOS开发者

HarmonyOS

连续 14 年!IBM 荣获 2021 年 Gartner 主存储魔力象限领导者

BeeWorks

50强诞生!2021 OceanBase 数据库大赛百所高校争霸!

OceanBase 数据库

数据库 开源 开发者 比赛 oceanbase

《新程序员》走进微软亚洲研究院

刘旭东

微软 hololens

3分钟教你如何在github上精确的找开源项目?

热爱java的分享家

Java 架构 程序人生 编程语言 经验分享

大会回顾丨游戏用户体验优化如何实践,看大咖怎么说(附PPT下载)

WeTest

还有人不知道鸿蒙智联设备认证咋搞?|HDC2021技术分论坛

HarmonyOS开发者

HarmonyOS

前端开发环境搭建在内网是如何搭建的

@零度

大前端

质量基础设施“一站式”服务信息平台建设,NQI一站式线上搭建

电微13828808271

智能楼宇管理系统开发,智慧楼宇管控系统开发

电微13828808271

自动驾驶汽车的安全架构体系 易筋 ARTS 打卡 Week 77

John(易筋)

ARTS 打卡计划

大数据开发之如何用Scala进行spark开发

@零度

scala 大数据 spark

Remix.run 新手教程

程序员铮铮

JavaScript 大前端 React SSR 教程分享

安全架构|云安全框架及虚拟化技术

明亮安全观

云计算 网络安全 云安全 安全架构

记一次拿到后台权限的过程

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 安全漏洞

Java开发之集成开发环境

@零度

JAVA开发 Java学习 IED

HBase 调优详细剖析

五分钟学大数据

11月日更

Linux学习方法,《Linux一学就会》教你如何学习Linux

侠盗安全

Linux 运维 linux运维 云计算架构师 linux电子书

鸿蒙智联生态服务平台——智能硬件伙伴的最佳拍档|HDC2021技术分论坛

HarmonyOS开发者

HarmonyOS

淘宝客户端安全生产体系建设

阿里巴巴终端技术

ios android 淘宝 客户端 安全生产

【Pandas学习笔记02】处理数据实用操作

恒生LIGHT云社区

Python 数据分析 pandas

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