编排管理成容器云关键,Kubernetes和Swarm该选谁

  不论是公有云还是私有云环境,Docker 在新一代技术架构中的重要地位已经毋庸多言,甚至已经有企业在探索完全 Docker 化。在此背景下,如何选择容器技术栈就成为了企业实践的关键。回答这个问题,首先需要厘清技术体系更新的逻辑,再看可选技术是否符合需求。本文认为,容器的管理和编排将是容器云的关键,而 Kubernetes 是最为成熟的编排技术。

容器管理和编排将成云计算主战场

从云化的诱因说起。中国云计算实践八年多,市场认知逐渐提升,锐意创新企业对云的期待已经不是资源弹性、成本优势那么简单,业务的灵活性和稳定性才是直接目标,当然这背后的应用弹性是研发部门要考虑的,所以 DevOps 的理念正在刺激技术团队的神经,敏捷、灵活、高效的容器技术和微服务架构越来越被关注。

Docker 的理念为“Build, Ship and Run Any App, Anywhere”,通过容器和镜像的特性让 DevOps 变得容易,但 Docker 的前景,更在于支持分布式、服务化设计,实现一系列可独立开发、独立部署和独立扩展的服务组合,以保证业务的灵活性和稳定性。当前AWS、微软、阿里云、IBM、Redhat、VMWare、华为、Intel 等各大公有云和私有云提供商都不约而同地大力投资 Docker,实际上就是认可了这样的趋势。当然,各家技术的选择和产品化的程度是另一回事了。

符合企业需要的容器云技术架构,需要符合DevOps、微服务的方向,能支持分布式应用,故而合适的容器的管理和编排(Orchestration)工具尤为重要。初级的编排,是资源的编排,即针对物理机或者虚拟机;但更高层次的是服务的编排,需要对架构层次在整体上有一个完整的定义。新浪微博平台运维架构师王关胜就曾经分享说,容器编排的核心内容包括服务定义、资源管理、容器调度、服务检测和服务发现等五个方面。

所以说,容器的管理和编排正在成为容器云的主战场。Docker 公司推 Swarm 技术,收购专注于编排的 Conductant 公司,正是为此。

Docker Swarm vs Kubernetes

当前主流的容器集群管理技术,包括了 Docker 官方的 Docker Swarm、Twitter 背书的 Mesos 和 GOOGle 背书的 Kubernetes。由于Apache Mesos 只是一个分布式内核,目前的发展方向是数据中心操作系统(DCOS),它同时支持 Marathon、Kubernetes 和 Swarm 等多种框架,连 Mesosphere 也是 Kubernetes 生态的一员,从编排的角度,讨论 Mesos 意义不大,故而只对比 Docker Swarm 和 Kubernetes。

1. Docker Swarm

Docker Swarm 是 Docker 官方推出的容器管理工具,支持容器的跨宿主节点的集群管理,这让传统的云计算资源管理方式有了新的发展。Docker Swarm 的推出,也是 Docker 从善如流的结果。因为 Docker 曾在很长一段时间内只能运行在单个宿主机上,这让外界和社区感到不满意。于是 Docker 在2014年12月推出了第一个版本的 Swarm,同时发布的 Docker 工具还有 Machine 和 Compose - 后者是 Docker 收购来辅助完善容器编排的产品。

年轻的“三剑客”并不能立即让 Docker 集群对分布式应用的支持达到炉火纯青的境界,外部出自 Google 的 Kubernetes 项目横空出世,提供另一种方案,而内部的 Swarm 目前也正在不断完善之中。Swarm 的最新进化,是在今年 6 月 DockerCon 大会上发布的 Docker 1.12 内置了 Docker 公司声称的“最佳的容器编排工具”——Swarm 模式(Swarm mode),引入了服务的概念,不再以容器作为主要管理对象单元,不再需要额外的KV存储支持服务模型,让扩容缩容、服务发现、滚动更新、负载均衡和路由等功能都更容易实现。

作为 Docker 的编排模式,Swarm mode 是通过独立开发的 SwarmKit 项目来实现的。SwarmKit 的主要功能包括节点发现、基于raft算法的一致性和任务调度等。SwarmKit 通过 Containerd 类似的方式接入Docker Engine,最终通过新的 Docker API 对外提供容器集群服务。根据 Docker 公司的态度,Swarm mode 将会取代之前的 Docker Swarm。新的 Swarm 吸收了 Kubernetes 的一些优点,但作为内置的可选工具让开发者更易于使用——不用另外部署第三方的 Kubernetes 了。

  2. Kubernetes

Kubernetes 是一个以 Google Borg 为原型的开源项目。Borg 是 Google 内部使用的集群管理工具,迄今已在 Google 生产环境中运行15年,说久经考验并不过分。Google 新书《Site Reliability Engineering - How Google Runs Production Systems》里面强调,其全球百万台服务器正是通过 Borg 来实现高效管理的,可谓能力卓绝。本来 Borg 是 Google 的秘密武器,但 Google 为了赢得容器云之战,基于 Borg 的经验,结合了来自社区的顶级创意和实践,构建了支持 Docker 容器的 Kubernetes,并将后者开源。

Kubernetes 功能完善,资源调度、服务发现、运行监控、扩容缩容、负载均衡、灰度升级、失败冗余、容灾恢复、DevOps等样样精通,可实现大规模、分布式、高可用的 Docker 集群,Kubernetes面向 PaaS,它直接为解决业务的分布式架构、服务化设计,完整定义了构建业务系统的标准化架构层,即Cluster、Node、Pod、Label等一系列的抽象都是定义好的,为服务编排提供了一个简单、轻量级的方式。

Kubernetes 目前也已经被大量的云计算技术提供商和用户采用,如 EBAY、Yahoo、微软、IBM、英特尔、华为、VMware、HPE、Mirantis、网易、普元、亚信等,当然还包括国内的多家容器云初创公司。

Kubernetes 社区的支持者,则包括(但不限于) Google、Redhat、CoreOS、华为、浙大SEL(浙江大学软件工程实验室)、网易等。Google 卯足了劲儿推广 Kubernetes,在去年不仅加入 OpenStack 基金会,还联合其他20家公司成立开源组织 Cloud Native Computing Foundation(CNCF),就是要保证 Kubernetes 未来在任何基础设施(公有云、私有云、裸机)上都能良好运行,并将推动开源以及合作伙伴社区共同开发容器工具集。

3. 主要特点对比

结合上文,将 Swarm 和 Kubernetes 最新的主要特点对比如下,可见 Kubernetes 增加了很多应用级别的功能,适用于快速应用的部署和维护。

结论

基于 Borg 成熟的经验打造的 Kubernetes,为容器编排管理提供了完整的开源方案,并且社区活跃,生态完善,积累了大量分布式、服务化系统架构的最佳实践。SwarmKit 当然还会迭代会更加优秀的版本,但一来模式有根本的不同,二来完善还需要时间。同时,Docker 公司对未来容器编排管理的技术路线也有挑战,把编排的精华加入 Docker,自然有利于开发者获得集群的能力,却也颠覆了系统级程序专注、松耦合的理念,新架构在生产环境中的稳定可靠,可能还需要更多的说服力。此外,Docker 推出不完全开源的 Docker Datacenter 商业套件,也有可能让社区和生态玩家对 Docker Engine 的商业倾向有所担忧。

所以,从设计模式、工具链、最佳实践和商业模式来看,Kubernetes 都是目前更加让人放心的容器编排管理技术。

  

  

 作者:论坛整理

来源:51CTO

时间: 2024-09-20 00:04:45

编排管理成容器云关键,Kubernetes和Swarm该选谁的相关文章

Docker 管理工具的选择:Kubernetes 还是 Swarm?

本文讲的是Docker 管理工具的选择:Kubernetes 还是 Swarm?[编者的话]选择Kubernetes 或者 Swarm 就像在将 Linux 桌面发行版的范围缩小到两个后选出一个最喜欢的.哪个更满足你的需要如何才是决定因素. [3 天烧脑式基于Docker的CI/CD实战训练营 | 北京站]本次培训围绕基于Docker的CI/CD实战展开,具体内容包括:持续集成与持续交付(CI/CD)概览:持续集成系统介绍:客户端与服务端的 CI/CD 实践:开发流程中引入 CI.CD:Gitl

DockOne微信分享(一二〇):基于Kubernetes的私有容器云建设实践

本文讲的是DockOne微信分享(一二〇):基于Kubernetes的私有容器云建设实践[编者的话]本次分享将为大家介绍易宝支付私有容器云从0到1的建设之路.包括技术选型.理论基础.基于Kubernetes的容器云和CI/CD落地过程中的挑战和踩过的坑. 建设背景及目标 在Docker技术流行开来之前,保证软件交付的质量和速度对于大多数企业来说都是困难的.业务的复杂性带来了应用的复杂性,面对成千上万的不同应用,运维部门需要时刻应对来自不同应用.不同环境的挑战.特别是在自动化运维程度不高的企业,"

DockOne微信分享(一四三):FreeWheel基于Kubernetes容器云构建与实践:应用编排与服务质量保证

本文讲的是DockOne微信分享(一四三):FreeWheel基于Kubernetes容器云构建与实践:应用编排与服务质量保证[编者的话]随着公司业务不断发展以及逐渐向微服务的转变,我们借助于Kubernetes容器化解决方案来标准化和简化应用发布的整个流程,使原来需要大量人工维护和干预的工作变为自动化.本次内容主要是FreeWheel现阶段基于Kubernetes容器化经验和实践的总结,目标是提供一个持续.稳定.高效的容器云平台. 服务健康检查与自我恢复 对线上业务来说,保证服务的正常稳定是重

《开源容器云OpenShift:构建基于Kubernetes的企业应用云平台》一3.2 核心组件详解

3.2 核心组件详解 OpenShift的核心组件及其之间的关联关系如图3-2所示.OpenShift在容器编排层使用了Kubernetes,所以OpenShift在架构上和Kubernetes十分接近.其内部的许多组件和概念是从Kubernetes衍生而来,但是也存在一些在容器编排层之上,OpenShift特有的组件和概念.下面将详细介绍OpenShift内部的核心组件和概念. 3.2.1 Master节点 在介绍Master节点前,我们先补充一些内容.OpenShift集群可以由一台或多台主

IBM基于Kubernetes的容器云全解析

讲师介绍  刘光亚IBM云计算开发架构师   Apache Mesos PMC & Committer OpenStack Magnum Core Member Member - IBM Academy of Technology 西安Mesos & OpenStack Meetup组织者      基于Kubernetes的容器云   容器云最主要的功能是以应用为中心,帮助用户把所有的应用以容器的形式在分布式里面跑起来,最后把应用以服务的形式呈现给用户.容器云里有两个关键点,一是容器编排

Docker 开源集群管理和容器编排工具 SwarmKit

最近Docker公司开源了Docker集群管理和容器编排工具SwarmKit,其主要功能包括节点发现.基于raft算法的一致性和任务调度等. 基本概念 服务器上运行SwarmKit工具的swarmd命令后,即可将其加入到服务器集群中,该服务器就成为集群中的一个节点.SwarmKit将节点分为两类: 工作节点负责通过执行器运行任务.SwarmKit的默认执行器为Docker容器执行器(Docker Container Executor); 管理节点负责接收和响应用户的请求,将集群状态调节成最终状态

【重磅】完美融合Kubernetes,Ghostcloud企业级容器云平台EcOS率先实现双容器调度

前言 给大家报道一个最新重磅消息:最新版Ghostcloud企业级容器云平台EcOS(Enterprise Container Operation System)已完美支持容器市场最主流的调度引擎Kubernetes,并于今日正式上线啦!内置自研容器调度框架Newben和开源引擎Kubernetes,意味着EcOS平台率先实现了双容器调度引擎的融合.(新平台EcOS-Kubernetes现已开放试用申请,请至文末扫码申请.) EcOS平台是Ghostcloud推出的企业级容器云PaaS/CaaS

【大会】容器云服务专家精灵云成2017全球云计算开源峰会关注焦点

2017全球云计算开源峰会于4月19-20日在北京国家会议中心举行,作为云计算开源技术的年度顶级"party",现场大咖云集,共同探讨和分享开源技术在云计算领域的N种玩法.本次峰会从代码.社区和产业三大方向探讨云计算开源技术的实践和应用,作为企业级容器云服务方面的领导者,Ghostcloud精灵云也在本次峰会上分享了Docker在金融行业的应用,干货不绝,收获无数行业关注.同时,精灵云也带来了众多福利,改变世界的"盒子"在大会现场吸引了一大批参会者的围观,前来咨询和

DockOne微信分享(一四二):容器云在万达的落地经验

本文讲的是DockOne微信分享(一四二):容器云在万达的落地经验[编者的话]容器生态是现在非常火热的技术生态之一,个人认为它主要囊括着四个方面的技术栈:一是容器核心技术栈(包括 Docker.rkt 及第三方公司自主研发的容器 Engine 等):二是容器基础技术栈(包括容器网络.存储.安全及服务发现等):三是容器编排技术栈(包括 Mesos/Marathon.Swarm.Kubernetes 及 OpenShift 等):四是容器应用技术栈(主要包括 CI/CD.监控.日志及微服务框架等).