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

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介:

   不论是公有云还是私有云环境,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
相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
13天前
|
Kubernetes 调度 Docker
深入探讨容器编排技术:从Docker到Kubernetes
容器编排在现代IT中日益关键,从Docker到Kubernetes,助力应用的自动化部署和扩展。Docker提供容器技术,打包应用及环境为镜像,通过引擎、镜像、容器、网络和存储组件实现隔离运行。Kubernetes作为高级容器编排平台,管理Pod(多容器集合),其核心包括API服务器、控制器管理器、调度器和Kubelet。Kubernetes集群由Master和Worker节点构成,实现Pod的高效调度和运行。
36 6
|
Kubernetes Docker Python
《Docker 简易速速上手小册》第10章 朝着 Docker Swarm 和 Kubernetes 迈进(2024 最新版)
《Docker 简易速速上手小册》第10章 朝着 Docker Swarm 和 Kubernetes 迈进(2024 最新版)
31 0
|
6天前
|
存储 Kubernetes C++
【专栏】Kubernetes VS Docker Swarm:哪个容器编排工具更适合你?
【4月更文挑战第27天】对比Kubernetes和Docker Swarm:K8s在可扩展性和自动化方面出色,有强大社区支持;Swarm以简易用著称,适合初学者。选择取决于项目需求、团队技能和预期收益。高度复杂项目推荐Kubernetes,快速上手小项目则选Docker Swarm。了解两者特点,助力选取合适容器编排工具。
|
5天前
|
网络协议 Java Docker
使用docker编排容器(下)
使用docker编排容器(下)
8 0
|
5天前
|
Java 应用服务中间件 nginx
使用docker编排容器(上)
使用docker编排容器
7 0
|
8天前
|
运维 Kubernetes Linux
10分钟搭建Kubernetes容器集群平台(kubeadm)
10分钟搭建Kubernetes容器集群平台(kubeadm)
|
9天前
|
Kubernetes Ubuntu Linux
Kubernetes(K8S)集群管理Docker容器(部署篇)
Kubernetes(K8S)集群管理Docker容器(部署篇)
|
9天前
|
存储 Kubernetes Docker
Kubernetes(K8S)集群管理Docker容器(概念篇)
Kubernetes(K8S)集群管理Docker容器(概念篇)
|
9天前
|
Kubernetes Ubuntu Docker
Kubernetes(K8S v1.1版本) 集群管理Docker容器之部署篇
Kubernetes(K8S v1.1版本) 集群管理Docker容器之部署篇
|
18天前
|
存储 运维 Kubernetes
构建高效稳定的容器化运维环境:Docker与Kubernetes的协同
【4月更文挑战第14天】 在当今快速发展的云计算时代,容器技术以其轻量级、快速部署和易于管理的优势,成为现代应用交付的标准。本文将深入探讨如何通过Docker和Kubernetes的整合使用来构建一个高效且稳定的容器化运维环境。我们将分析Docker容器的基本概念,探索Kubernetes在容器编排方面的强大能力,以及两者结合所带来的益处。文章还将讨论在实际部署中可能遇到的挑战,并提出相应的解决方案。

相关产品

  • 容器服务Kubernetes版