容器集群管理平台的比较

【云原生技术】云计算与网络:容器应用编排(Container Orchestration and Scheduling Platform,简称COSP)简介 基本概念主要特点主要技术和工具应用场景容器应用编排(Container Orchestration and Scheduling Platform,简称COSP)是指用于管理、调度和协调容器化应用部署的技术和工具。容器应用编排解决了在大规模、分布式环境中自动化部署、管理、扩展和网络配置容器的需求。 阅读详情

容器化和微服务是当前最热话题,不久之前,笔者(据说因为现在都不用笔了,“笔者”的称谓已经不合适了,因为输入用键盘,叫“键人”更为合适)参加QCon上海一个微服务监控的Session,场面爆棚,我不得不在拥挤的过道听完了整个session。随着要管理的容器越来越多,容器的集群管理平台成为了刚需!

Docker Swarm

Swarm是Docker公司在2014年12月初新发布的容器集群管理工具。它可以把多个主机变成一个虚拟的Docker主机来管理。Swarm使用Go语言开发,并且开源,在github上可以找到它的全部source code。Swarm使用标准的Docker API,给Docker用户带来无缝的集群使用体验。2016年7月, Swarm已经被整合进入Docker Engine。

功能

Docker Swarm提供API 和CLI来在管理运行Docker的集群,它的功能和使用本地的Docker并没有本质的区别。但是可以通过增加Node带来和好的扩展性。理论上,你可以通过增加节点(Node)的方式拥有一个无限大的Docker主机。

Swarm并不提供UI,需要UI的话,可以安装UCP,不过很不幸,这个UCP是收费的。

架构

Swarm的架构并不复杂,可以说非常简单。Manager负责容器的调度,Node负责容器的运行,Node运行Docker Daemon和Manager之间通过HTTP来通信。Docker Client通过Manager上暴露的标准Docker API来使用Docker的功能。

Swarm的集群协调和业务发现可以支持不同的第三方组件,包括:

  • Consul
  • Etcd
  • ZooKeeper
  • Docker Hub

如果对集群协调的概念不熟悉,可以参考我的另一篇博客《使用Python进行分布式系统协调 (ZooKeeper,Consul, etcd )》

Swarm的基本容器调度策略有三种:

  • spread  容器尽可能分布在不同的节点上
  • binpack 容器尽可能分布在同一个节点上
  • random 容器分布在随机的节点上

Swarm集群的高可用配置很容易,以下图为例:

manager配置在不同的AWS AZ中,通过领导选举选出Primary manager。

多个节点分布在不同的AZ中,同时Consul/etcd/ZooKeeper也需要配成冗余的。

特点

Docker Swarm的特点是配置和架构都很简单,使用Docker原生的API,可以很好的融合Docker的生态系统。


Kubernetes

Kubernetes是Google开发的一套开源的容器应用管理系统,用于管理应用的部署,维护和扩张。利用Kubernetes能方便地管理跨机器运行容器化的应用。Kubernetes也是用Go语言开发的,在github上可以找到源代码。

Kubernetes 源于谷歌公司的内部容器管理系统Borg,经过了多年的生产环境的历炼,所以功能非常强大。

功能

Kubernetes主要提供一下的功能:

  • 使用Docker对应用程序包装(package)、实例化(instantiate)、运行(run)。
  • 以集群的方式运行、管理跨机器的容器。
  • 解决Docker跨机器容器之间的通讯问题。
  • Kubernetes的自我修复机制使得容器集群总是运行在用户期望的状态。
  • 应用的高可用和靠扩展
  • 支持应用的在线升级(Rolling Update)
  • 支持跨云平台(IaaS)的部署

为了支持这些功能,Kubernetes做了做了很多的抽象概念,所以,刚开始使用Kubernetes,需要学习不少的新概念,包括:

  • Pod 
    Pod是Kubernetes的基本操作单元,把相关的一个或多个容器构成一个Pod,通常Pod里的容器运行相同的应用,或者是相关的应用。Pod包含的容器运行在同一个Minion(Host)上,看作一个统一管理单元,共享相同的volumes和network namespace/IP和Port空间。
  • Job
    Job是一个生命周期比较短的应用,一般只会在出错的情况下重启,可以通过配置Job的并发和运行次数来扩展Job
  • Service
    Service是一个生命周期比较长的应用,会在任何退出时重启,可以通过配置Service的复制(Replica)来达到高扩展和高可用
  • Recplica Controller
    Replication Controller确保任何时候Kubernetes集群中有指定数量的pod副本(replicas)在运行, 如果少于指定数量的pod副本(replicas),Replication Controller会启动新的Container,反之会杀死多余的以保证数量不变。Replication Controller使用预先定义的pod模板创建pods,一旦创建成功,pod 模板和创建的pods没有任何关联,可以修改pod 模板而不会对已创建pods有任何影响,也可以直接更新通过Replication Controller创建的pods

以上是一些核心概念,除了这些,Kubernetes还提供其它一些概念,来支持应用程序的运维,包括:

  • Label
    对系统中的对象通过Label的方式来管理
  • Namespace
    对对象,资源分组,可以用于支持多租户
  • Config Map
    提供全局的配置数据存储

总之,功能强大,系统概念繁多,比较复杂。

Kubernetes支持安装UI的addon,来管理整个系统:

架构

下图是Kubernetes的基本架构:

  • Master
    Master定义了Kubernetes 集群Master/API Server的主要声明,Client(Kubectl)调用Kubernetes API,管理Kubernetes主要构件Pods、Services、Minions、容器的入口。Master由API Server、Scheduler以及Registry等组成。
    Scheduler收集和分析当前Kubernetes集群中所有Minion节点的资源(内存、CPU)负载情况,然后依此分发新建的Pod到Kubernetes集群中可用的节点。由于一旦Minion节点的资源被分配给Pod,那这些资源就不能再分配给其他Pod, 除非这些Pod被删除或者退出, 因此,Kubernetes需要分析集群中所有Minion的资源使用情况,保证分发的工作负载不会超出当前该Minion节点的可用资源范围
  • Minion
    Minion负责运行Pod,Service,Jobs, Minion通过Kubelet和Master通信。Proxy解决了外部网络能够访问跨机器集群中容器提供的应用服务。

  • etcd
    负责集群的协调和服务发现
特点

Kubernetes提供了很多应用级别的管理能力,包括高可用可高扩展,当然为了支持这些功能,它的架构和概念都比较复杂,当然我觉得为了获得这些功能,值!


Apache Mesos 

Mesos是为软件定义数据中心而生的操作系统,跨数据中心的资源在这个系统中被统一管理。Mesos的初衷并非管理容器,只是随着容器的发展,Mesos加入了容器的功能。Mesos可以把不同机器的计算资源统一管理,就像同一个操作系统,用于运行分布式应用程序。

Mesos的起源于Google的数据中心资源管理系统Borg。你可以从WIRED杂志的这篇文章中了解更多关于Borg起源的信息及它对Mesos影响。

功能

Mesos的主要功能包括:

  • 高度的可扩展和高可用
  • 可自定义的两级调度
  • 提供API进行应用的扩展
  • 跨平台

下图是Mesos的管理界面:

架构

Mesos的基本架构如下


  • Master
    Master负责资源的统一协调和Slave的管理。 Master协调全部的Slave,并确定每个节点的可用资源,聚合计算跨节点的所有可用资源的报告,然后向注册到Master的Framework(作为Master的客户端)发出资源邀约。Mesos实现了两级调度架构,它可以管理多种类型的应用程序。第一级调度是Master的守护进程,管理Mesos集群中所有节点上运行的Slave守护进程。集群由物理服务器或虚拟服务器组成,用于运行应用程序的任务,比如Hadoop和MPI作业。第二级调度由被称作Framework的“组件”组成。
  • Slave
    Salve运行执行器(Executor)进程来运行任务。
  • Framework
    Framework包括调度器(Scheduler)和执行器(Executor)进程,其中每个节点上都会运行执行器。Mesos能和不同类型的Framework通信,每种Framework由相应的应用集群管理。
    Framework可以根据应用程序的需求,选择接受或拒绝来自master的资源邀约。一旦接受邀约,Master即协调Framework和Slave,调度参与节点上任务,并在容器中执行,以使多种类型的任务
  • ZooKeeper
    Zookeeper负责集群的协调,Master的领导选举等
特点

Mesos相比Kubernetes和Swarm更为成熟,但是Mesos主要要解决的是操作系统级别的抽象,并非为了容器专门设计,如果用户出了容器之外,还要集成其它的应用,例如Hadoop,Spark,Kafka等,Mesos更为合适。Mesos是一个更重量级的集群管理平台,功能更丰富,当然很多功能要基于各种Framework。
Mesos的扩展性非常好,最大支持50000节点,如果对扩展性要求非常高的话么,Mesos是最佳选择。


AWS ECS

ECS (Amazon EC2 Container Service )是亚马逊开发出的高度可扩展的高性能容器集群服务。在托管的 Amazon EC2 实例集群上轻松运行容器应用和服务。他最大的好处就是在云上,不需要自己管理数据中心的机器和网络。

功能

ECS继承了AWS服务的高扩展和高可用性,安全也可以得到保证。

在基本容器管理的基础上,ECS使用Task和Service的概念来管理应用。

Task类似Docker Compose,使用一个JSON描述要运行的应用。Service是更高一层的抽象,包含多个task的运行实例,通过修改task实例的数量,可以控制服务的伸缩。同时Service可以保证指定数量的Task在运行,当出现错误的时候,重启失败的Task

架构

下图是ECS的架构图:

使用EC2,ELB,安全组等大家熟悉的AWS的概念,AWS用户可以轻松管理你的容器集群。并且不需要付初基本资源以外的费用。

通过ECS agent可以是Container连接到ECS集群。ECS Agent使用Go开发,已开源。

我们并不清楚ECS的调度策略,但是AWS提供了一个例子,如果继承第三方的调度策略。

通过Cloud Watch Log,我们可以很方便的对整个集群进行监控。

特点

如果你是一个AWS的重度用户,ECS是个不错的选择,因为你可以是把你的容器集群运行在AWS的云上,管理起来非常方便。


比较

这里对几个平台做一个简单的比较:

  SwarmKubernetesMesosECS
基本功能Docker原生的集群管理工具开源的容器集群工具,提供应用级别的部署,维护和扩张功能基于数据中心的操作系统基于云的高可用,高扩展容器集群
高层次抽象无

Pod
Job
Service

无Task
Service
应用扩展性无支持Framework 支持支持
应用高可用性无支持Framework 支持支持
集群协调和服务发现

etcd
ZooKeeper
Consul

etcdZooKeeper/
调度策略(Schedule)内置,可扩展内置两级别,可扩展可扩展
监控Logging DriverHeapter,ELK Addon内置CloudWatch
用户界面

CLI
API
UCP UI

CLI
API
UI
API
UI

CLI
API
AWS Console

开发语言GoGoJavaNA
开源是是是否
最大支持管理节点数

官方1000
非官方5000 

官方1000
非官方2000

10000/

总结

四个平台,Swarm是最轻量级的,功能也最简单,适于有大量Docker实例环境的用户。Kubernetes增加了很多应用级别的功能,适用于快速应用的部署和维护。Mesos最重,适用于已经有了相当的应用和容器混合的环境。ECS则推荐给AWS的用户或者不希望自己管理数据中心的云用户。


相关链接

3、OpenShift 入门:容器平台的应用与优势 本文介绍了OpenShift容器平台的应用场景与核心优势,涵盖技术与商业用例,分析了容器相较于虚拟机在资源利用、启动速度和应用密度方面的提升,并探讨了容器在存储需求、有状态与无状态应用扩展中的实现方式。文章还阐述了微服务架构下数据管理的安全性与灵活性,对比了完整集群与Minishift单节点部署的适用场景,并提供了交互方式选择与故障恢复建议,全面指导用户高效部署和管理OpenShift应用。 阅读详情

相关推荐

docker-matrix:Matrix是开发人员的一致开发环境

配置一次,就可以在任何地方运行! Matrix是面向开发人员的开发堆栈环境 想要贡献吗? 查看并解决您感兴趣的问题! 介绍 无论何时更换计算机,或者只是在多台计算机上工作或跨不同的操作系统,Matrix都会提供一致的开发环境。 用法 docker pull shafreeck/matrix:centos docker run -d -p 2222:22 -v $HOME:/root shafreeck/matrix:centos ssh root@localhost -p 2222 默认密码是toor 现在shafreeck/matrix:centos已在多个平台上构建,您可以选择自己喜欢的东西: 从quay.io中拉出 docker pull quay.io/shafreeck/matrix 如果您住在中国,那么daocloud可能是一个更好的选择 docker pull daoc

【实现一个KMatrix矩阵容器类】

6、实现KMatrix删除行列的函数(KMatrix::erase_row(row)、KMatrix::erase_col(col));3、实现KMatrix的初始化函数(KMatrix::init(row_count, col_count))(初始数据为0);8、实现KMatrix的转置(KMatrix KMatrix::transpose() const) (交换行列);9、实现KMatrix的控制台打印输出(KMatrix::print() const) (需要体现矩阵的基本结构);

CarryerCPTER的博客 502

李闻-Matrix:基于Container的大规模集群操作系统

该文档来自李闻在2014 Container技术大会的演讲。

Kubernetes架构基础知识

Kubernetes是拥有大量代码和功能的大型开源项目。读者可能阅读过Kubernetes的相关文章,或在其他项目中涉足这一领域,甚至在工作中使用过Kubernetes。但若想深入理解并有效使用Kubernetes,将其更好地应用于实践,则需要对其有更深入的了解。本章将构建Kubernetes的基本框架,首先,我们将理解容器编排(Container Orchestration)的含义;接着解释几个与Kubernetes相关的重要概念,这些概念将贯穿于全书;之后,深入介绍Kubernetes的体系架构,了解如

人邮异步社区 986

ansible-mesos:适用于AWS中Mesos,Marathon,Docker和HAProxy的Ansible剧本

梅索斯 该剧本使用Ansible 2在具有EC2节点的AWS集群上以高可用性模式部署具有Marathon和HAProxy的Mesos。 设置 本节将在您的计算机上安装Ansible。 安装Ansible 确保已安装Ansible 2。 最简单的方法是从其Git存储库的devel分支中跟踪Ansible: $ git clone --recursive git@github.com:ansible/ansible.git $ cd ansible $ source hacking/env-setup $ ansible --version # Should be ansible 2.x.x 如果Ansible无法正常运作... 从源头使用Ansible需要一些您可能没有的Pip包。 某些Linux发行版首先需要这些附加软件包,否则后续的pip install可能会失败: $ su

微信小程序marker 上的自定义气泡cover-view字体丢失以及max-width不生效问题

微信小程序marker 上的自定义气泡cover-view字体丢失以及max-width不生效问题

weixin_42028275的博客 1502

什么是Kubernetes,以及Orchestration如何重新定义数据中心 ...

在短短四年多的时间里,谷歌内部关于容器管理的项目已经颠覆了VMware、微软、甲骨文以及其他所有未来很具前景的数据中心。 那么到底是什么改变了一切呢?在所有软件依赖操作系统平台的时代,数据中心已经确立了其目的和功能,Kubernetes的功能显得并不那么显著。Kubernetes是一个大规模的、正在进行的软件资源重组的产物,这些资源共同组成了一个网络应用...

weixin_33797791的博客 807

产品经理-面试题目--持续更新

答:面试官,你好,我叫XXX,来自于XXXX,我系统的学习过软件开发,也主动的积累了不少产品方面的实战经验,在学习期间,我自己独立的完成了2个深度项目,一个是仿抖音的短视频APP全流程设计,另外一个是电商后台系统的模块,通过这些项目,我不仅熟练使用Axure等工具做出高保真原型图和清晰的产品框架,也形成了数据驱动和用户优先的思维习惯,另外,我也注重拓展自己的能力边界,拿到了CAIE人工智能证书,我希望能把AI能力融入到产品场景,提升体验和效率,我非常喜欢产品工作带来的创造性和逻辑性,希望有机会加入贵公司。

m0_63966958的博客 958

Kubernetes vs Docker Swarm:终极容器编排选择指南

在当今容器化技术飞速发展的时代,Kubernetes和Docker Swarm作为两大主流容器编排平台,常常让开发者和企业面临选择的困境。无论您是初学者还是资深工程师,本文都将为您提供全面的对比分析,帮助您做出最适合的容器编排选择。 ## 什么是容器编排?为什么它如此重要? 容器编排是现代云原生应用的核心技术,它负责管理、调度和扩展容器化应用。想象一下,当您的应用需要处理数百万用户请求时,手动

gitblog_00004的博客 959

嵌入式开发必看:STM32 DMA双缓冲配置全攻略(含CubeMX教程)

本文详细解析了STM32 DMA双缓冲机制的原理与优势,并提供了基于CubeMX的完整配置教程。通过硬件自动切换两个缓冲区,实现DMA传输与CPU处理的真正并行,有效降低中断频率,提升高速数据采集、音频流处理等场景下的系统效率和实时性。

weixin_29212429的博客 175

CTS实战:如何用set_sense优化时钟树平衡(附ICC2避坑指南)

本文深入探讨了在时钟树综合(CTS)中,如何正确使用`set_sense`命令优化时钟树平衡,并对比了其与`set_disable_timing`的本质区别。通过实战案例详细解析了`-stop_propagation`和`-clock_leaf`参数的应用场景,并提供了ICC2工具中的关键避坑指南,帮助后端工程师精准控制时钟拓扑,避免时序分析漏洞。

weixin_28933797的博客 460

Podman与Docker详细比较:从原理到使用

Podman与Docker详细比较:从原理到使用

xiaobangkeji的博客 2328

HFSS - 双频微带天线设计与仿真

一、设计指标 中心频率:1.9GHz、2.45GHz 匹配情况:中心频率处S11S_{11}S11​参数小于-20dB 介质板厚度:1.6mm 介质板介电常数:3.8 馈电方式:50Ω\OmegaΩ同轴线馈电 二、双频微带天线 获得双频工作的一种最简单的方法是辐射贴片的长度对应-一个频率谐振,其宽度对应另一个频率谐振,然后从对角线的一角馈电,就能使同一个辐射贴片工作于两个频率上。其结构如下图所示。 从图中可以得知,x轴上的A点(x,0)为激发TM10_{10}10​模式的50Ω\OmegaΩ馈电点,由

MaxWei 1万+

k8s(1)-核心概念篇

Kubernetes 是一个开源的容器编排引擎,用来对容器化应用进行自动化部署、 扩缩和管理。Kubernetes 是一个可移植、可扩展的开源平台,用于管理容器化的工作负载和服务,方便进行声明式配置和自动化。Kubernetes 拥有一个庞大且快速增长的生态系统,其服务、支持和工具的使用范围广泛。

chenqiang_python的博客 124

从0到1打造一台机器人走起来

1)本体机械结构设计,依据人体生物学和生物力学知识,结合机器人运动时各关节扭矩需求,进行合理选用电机,比如胯部需要大扭矩,腿部惯量小等2)硬件拓扑上,分层架构的信号层和功率协同工作,高带宽,低延时,硬实时3)步态规划设计与验证环节实机回溯和部署过程:Real2Sim,Sim2Sim,Sim2Real。

weixin_43163941的博客 244

半导体器件仿真:双极型晶体管仿真_15.双极型晶体管的高级仿真技术

双极型晶体管(Bipolar Junction Transistor, BJT)是一种重要的半导体器件,广泛应用于放大、开关和调制等电路中。随着半导体技术的发展,对BJT的仿真要求也越来越高。本节将详细介绍双极型晶体管的高级仿真技术,包括器件模型的选择、仿真参数的优化、温度效应的考虑以及噪声分析等。

2401_87715305的博客 1244

从零搭建高可用Java应用平台:DevOps自动化部署全流程揭秘

掌握高可用Java应用搭建秘诀,揭秘DevOps自动化部署全流程。面向1024 Java开发者专属技术沙龙报名,涵盖微服务部署、CI/CD实践与容器化方案,提升系统稳定性与交付效率,值得收藏,点击了解详情。

CodePulse的博客 892

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

K8S入门

原文链接:https://k8s.easydoc.net/docs/dRiQjyTY/28366845/6GiNOzyZ/9EX8Cp45 一、简介 为容器化应用提供集群部署和管理的开源工具,Google开发 主要特性: 高可用,不宕机,自动灾难恢复 灰度更新,不影响业务正常运转 一键回滚到历史版本 方便的伸缩扩展(应用伸缩,机器加减)、提供负载均衡 有一个完善的生态 需要熟悉docke...

寻找到底哪里有蓝天 177

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Docker学习整理

docker 容器阿里云docker安装脚本:curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -DaoCloud 的安装脚本:curl -sSL https://get.daocloud.io/docker | sh镜像:特殊的文件系统,由多层文件系统组成,提供容...

weixin_30252709的博客 277

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Portainer堪称最优秀的容器化管理平台

Portainer是一款开源的容器管理平台,支持多种容器技术,如Docker、Kubernetes和Swarm等。它提供了一个易于使用的Web UI界面,可用于管理和监控容器和集群。Portainer旨在使容器管理更加简单和可视化,并且它适用于各种规模的容器环境,从个人计算机到企业级部署,而且能够一次性管理多种类型的多个集群。

7739

企业容器云管理平台选型指南

容器云管理平台是一个中间态的产品,对下能够实现集群的生命周期管理,对上能够实现对 Kubernetes 上运行的应用的生命周期管理,同时还需具备企业所需的功能。有不少厂商提供了优秀的解决方案,面对琳琅满目的产品,我们该如何选择?

Rancher 1087

Docker容器集群管理之Swarm

  Docker容器集群管理主流方案 Swarm Docker公司自研发的集群管理系统。 Kubernetes Google开源的一个容器集群管理系统,用于自动化部署、扩展和管理容器应用。也称为K8S Mesos Mesos是一个集群资源调度系统,对集群中的资源进行分配和管理。Marathon是运行在Mesos之上的一个服务管理框架,可管理容器生命周期。 Dock...

abtmh02622的专栏 211
上一篇: 大数据搜索选开源还是商业软件?ElasticSearch 对比 Splunk
下一篇: 使用开源软件快速搭建数据分析平台
刚是程序员
博客等级 码龄9年 47粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值