乐趣区

关于容器:Docker与k8s的恩怨情仇一成为PaaS前浪的Cloud-Foundry

转载请注明出处:葡萄城官网,葡萄城为开发者提供业余的开发工具、解决方案和服务,赋能开发者。

大家在工作中或者或多或少都接触过 Docker,那你晓得 Docker 以及容器化背地的原理到底是什么吗?

容器化技术满天下,那为什么只有 Docker 被大家所熟知呢?

后 Docker 时代,到底谁才是云原生时代的王者?

咱们置信本系列文章能帮您解答这些纳闷。

被“厌弃”的物理服务器

在云时代以前,开发者如需构建一个线上的站点,必须本人保护物理服务器。然而随着业务倒退,大体量服务器逐步增多,随之而来的是硬件、场地和保护老本的一直进步。对于面向 C 端的站点来说,网络热点事件具备随机性,流量的变动并不可控,难免会遭逢站内流量暴涨的状况。此时如果没有备用服务器,突发的大流量很可能会冲垮整个站点。但在没有突发事件的时候,备用服务器的洽购和保护老本又让人不可疏忽。

(运维的传统艺能:上线拜祖,图片来自网络)

哪里有问题,哪里就有商机。有人想到,如果买一批服务器放在外网,安顿专人治理,而后依照用户的须要租赁进来,不正好解决了这个问题吗?

于是,一场云计算的好戏,正式演出。

虚拟机还是“超重”了

云计算时代的大幕拉开,大厂先后登台,让咱们先简略做一下回顾。

  • 2006 年,亚马逊成立 aws,从云端存储业务开始。
  • 2008 年,云计算初创。
  • 2009 年,阿里云成立。目前最新的数据表明,2020 年度 IaaS 市场份额考察,阿里云位居寰球第三,亚太第一;前两名别离是亚马逊和微软,市场份额达 9.5%,超过谷歌的 6.1%,亚马逊 40.8%,微软 17%。国内市场份额 40%,第二是华为云,占 18%。
  • 2010 年,OpenStack 由 NASA 公布。OpenStack 是一个 IaaS 架构,能够用其架构来搭建本人的公有云,让任何人都能够自行创立和提供云计算服务。比照而言,AWS 和 aliyun 都是自研架构,OpenStack 是开源的。所以公司如果须要,齐全能够接入 OpenStack 搭建本人的公有云。(当然前提须要有 OpenStack 外围开发能力)。
  • 2010-2013 年之间,云计算的寰球份额被 aws 和 OpenStack 瓜分。

这时的云计算技术,实质都是虚拟化技术,将硬件资源作为基础设施提供给用户,简称 IaaS。简略了解,IaaS 就是将一个很大的服务器,通过虚拟化技术拆分成多个小的虚构服务器,提供服务,相似于在本机装了虚拟机。


(云计算主力玩家的进场工夫,图片来自网络)

然而,IaaS 时代的虚拟机还是太过于轻便了。每一台虚拟机都须要耗费 CPU、内存等计算资源能力撑持利用的运行。即使利用再小,零碎的开销都是固定的老本。如何为 IaaS 减肥,让虚拟机零碎的开销降到最低?

2013 年开始,云计算正式进入了 PaaS 时代。PaaS 时代,云计算所销售的单元,从虚拟机变成了利用运行平台。于是,云厂商提供的服务更多,资源利用率也更高了。

什么是 PaaS?咱们用一个艰深的例子来解释。如果咱们当初是一个烧饼店老板,采纳 IaaS 模式意味着咱们须要用他人厨房、锅炉、煤气,本人和面做馅料,做烧饼。如果是 PaaS,咱们烧饼的面粉、馅料和调料都是他人提供好了,咱们只须要把饼烤熟。

云厂商该如何构建一套好用的 PaaS 服务呢?借力开源我的项目,成为各厂商的共识。

Cloud Foundry 开启 PaaS 开源时代

PaaS 的外围是平台。最早呈现在开发者视线中的 PaaS 开源我的项目中,vmware 创建的 Cloud Foundry 是知名度最高的。与 IaaS 提供云上虚拟机的服务形式不同,基于 Cloud Foundry 的云计算可能提供利用托管的性能。开发者只须要通过一条简略的命令比方:cf push “ 我的利用 ”,就能够将我的项目打成一个压缩包,上传到 Cloud Foundry 服务器。而 Cloud foundry 会开启本人的调度器,在一群云主机中找到满足用户需要的主机(零碎版本、性能、个数),而后通过容器化技术,在主机上创立一个容器,在容器中下载压缩包,解压并运行,最终成为一个对外提供服务的利用。

此外,Cloud Foundry 平台对这些利用我的项目提供散发,灾备,监控,重启等等服务(这也是咱们提供给用户的外围服务)。这种托管服务解放了开发者的生产力,让他们不必再关怀利用的运维情况,而是分心开发本人的利用。而这就是 PaaS 的“初心”,平台即服务。


(Cloud Foundry 提供的服务)

这里就会有同学问了,容器是什么?容器是用来解决多个利用资源抵触与隔离性问题的技术。Linux 上的 namespace 机制和 cgroups 命令都能用做资源隔离和限度,这些都是容器技术。

容器技术并不是 Docker 创立的,在 Docker 衰亡之前,就曾经被其余公司商用了,然而为什么当初一谈起容器,所有人第一工夫想到的就是 Docker 呢?这就要提到 Cloud Foundry 的死亡。

从 Cloud Foundry 到 Docker

Cloud Foundry 仿佛曾经和咱们当初应用的云性能区别不大,但 2021 年的现实情况却是 Cloud Foundry 曾经死了。

咱们看过互联网上很多文章,再联合咱们活字格私有云开发的教训,咱们认为这个我的项目的致命缺点集中它的打包机制上。

Cloud Foundry 最外围的组件就是利用的打包和散发机制,也是开发者打交道最多的性能。Cloud Foundry 为每一种支流的语言都定义了一套打包的形式,这些形式之间毫无章法。但就是这个打包性能,成了 Cloud Foundry 的软肋,始终为用户所诟病。开发者不得不为每一种语言,每一种框架,甚至是每个版本利用保护一个打好的包,还有可能呈现本机运行胜利,打了个包上传上去之后就无奈运行的状况。状况最重大的时候,开发者在调试云平台零碎上花的工夫都曾经比开发一个新软件的工夫要长了。

原本是为赋能开发者的而生的技术,Cloud Foundry 却对开发者如此不敌对。当开发者的埋怨积攒到肯定水平,想要在 PaaS 浪潮地方站稳脚跟的 Cloud Foundry 被后起之秀 Docker“红牌罚出局”也就牵强附会了。

最后,Docker 是一个过后还叫 dotCloud 的公司(2010 年由所罗门海克斯创立,Y Combinator 孵化)开发的容器我的项目。在 Cloud Foundry 困于打包问题时,Docker 正在轻轻积蓄力量,在开源后的短短几个月内就迅速崛起,成为一个不容忽视的 PaaS 技术计划,吸引了云服务开发者的眼球。

滑稽的是,在 Docker 刚开源的时候,Cloud Foundry 的首席产品经理 James Bayer 就在社区做了一次具体的比照,通知用户 Docker 和 Cloud Foundry 一样,都是应用了 Namespace 和 Cgroups 技术的沙箱而已,没什么值得关注的。

事实上,Docker 也的确就和他所说的一样,采纳了这个“传统”的技术计划,然而 Docker 与 Cloud Foundry 相比,做了一点小小的翻新,体现了所罗门海克斯的远见。从 2010 他就开始思考利用打包的一致性与复用性问题,并提出了翻新的解决方案,最终对 Cloud Foundry 造成了毁灭性的打击。这个解决方案就是 Docker 镜像。

(Docker,图片来自官网)

刚开源的 Docker 迅速爆火,憨态可掬的小鲸鱼,对用户敌对的文档,三分钟部署一个 Nginx 集群的宣传语,以及 Docker Image 这个“微不足道的翻新”,让 Docker 席卷整个 PaaS 畛域。

Docker 的制胜法宝:镜像

Docker 胜利的要害,在于 Docker 镜像简直完满地解决了 Cloud Foundry 在打包方面的软肋。

所谓的镜像,其实也是一个压缩包,然而比起 Cloud Foundry 那种执行文件 + 启动脚本的打包后果,镜像提供给用户的是一套残缺的运行环境,每一个镜像都能够指定操作系统版本,外部能够构建程序执行的文件构造,并且一份镜像能够齐全共享在多处应用。

此外,Docker 还给开发者提供了一套欠缺的镜像制作流程,这套流程与编程语言和框架无关。开发者只须要依照该流程,定制对应程序所须要的运行的操作系统环境即可。

总之,Docker 镜像完满解决了两个问题:

1. 本地环境和服务器环境的差别
2. 同一份镜像能够让所有的机器进行复用

从这一刻开始,PaaS 的市场曾经齐全是 Docker 的天下。

小结

本文是系列文章的第一期,咱们一起回顾了 IaaS 取代物理服务器,基于 IaaS 构建 PaaS 的倒退路线。在构建 PaaS 时,咱们经验了 Cloud Foundry 的没落,见证了 Docker 的胜利。

然而,只依附 Docker 就能构建起残缺的 PaaS 服务吗?咱们的活字格私有云版最终抉择了哪个技术计划?云计算的故事还没有讲完,敬请期待下期精彩内容。

退出移动版