Kubernetes--容器编排技术的发展史

本文目的是描述Kubernetes的诞生史,主要分为四个部分,从开源社区的角度分析云计算的发展史。

一、概述

       为应对业务快速的发展,以及系统的稳定性,各大互联网公司纷纷构建了自己的云计算平台,用于维护自己的业务系统的同时,也提供的对外云计算商业化平台。在这些商业化的云计算平台中亚马逊的AWS可谓是一家独大,但是国内也有一些如阿里云一样的黑马也在百花齐放。学习云计算的整个服务架构,对于每个研发来说算是一把独孤九剑,对自己的职业有莫大的帮助。

        我是一个猿小白,我在之后的一阶段里,会陆续分享我学习云计算知识(k8s)的一些学习笔记,一是为了将自己的学过的东西,记录下来,以备之后的会看;二是为了整理下自己的所思所想,让这些知识在脑海里成为更结构化的东西;三是把自己的见解分享出来,让大家帮进行评判,看看我的理解是否有误,如果有什么不对的地方希望各位大佬指出,我这里好做修改。

        我这里的计划是将自己学习过程中的实操(代码)+理论一一整理出来,方便自己之后回顾。

         对于本篇文章主要我主要是介绍自己整理的和课程中介绍的一些关于云计算的知识

二、阶段一:云计算崛起--AWS和OpenStack

1.云计算概念

        云计算(cloud computing)是分布式计算的一种,指的是通过网络“云”将巨大的数据计算处理程序分解成无数个小程序,然后,通过多部服务器组成的系统进行处理和分析这些小程序得到结果并返回给用户。云计算早期,简单地说,就是简单的分布式计算,解决任务分发,并进行计算结果的合并。因而,云计算又称为网格计算。通过这项技术,可以在很短的时间内(几秒钟)完成对数以万计的数据的处理,从而达到强大的网络服务。(百度百科)

        理解:在我看来云计算就是将计算能力统一包裹起来的计算系统,在这个系统中根据用户的计算任务大小的不同,分配不一样的计算资源,然后供大家使用。

2.什么是AWS

        AWS 全称Amazon web service(亚马逊网络服务),是亚马逊公司旗下云计算服务平台,为全世界各个国家和地区的客户提供一整套基础设施和云解决方案。

        AWS面向用户提供包括弹性计算、存储、数据库、物联网在内的一整套云计算服务,帮助企业降低IT投入和维护成本,轻松上云

3.什么是OpenStack

        OpenStack 是当今最具影响力的云计算管理工具——通过命令或者基于 Web 的可视化控制面板来管理 IaaS 云端的资源池(服务器、存储和网络)。它最先由美国国家航空航天局(NASA)和 Rackspace 在 2010 年合作研发,现在参与的人员和组织汇集了来自 100 多个国家的超过 9500 名的个人和 850 多个世界上赫赫有名的企业,如 NASA、谷歌、惠普、Intel、IBM、微软等。

        OpenStack 系统或其演变版本目前被广泛应用在各行各业,包括自建私有云、公共云、租赁私有云及公私混合云,用户包括思科、贝宝(Paypal)、英特尔、IBM、99Cloud、希捷等。

         AWS和OpenStack,以及阿里云都是云计算的商业化产物,这些系统中不仅提供的能够进行弹性计算的能力,还为很多公司提供了私优化的定制服务。这些系统中包含很多重要的研发中间件,对于研发同学来说不再需要自己去部署特殊的中间件就可部署对应的业务应用,极大的简化了系统维护的成本。

        以上系统都是属于基础架构平台层,如果想要真正的部署一个应用,以及保证服务编排的质量,好多开源社区提供相关的解决方案,包括PaaS,Docker以及k8s。

三、阶段二:云计算平台级服务能力的变革--PaaS

1.PaaS的概念

        PaaS是平台即服务的缩写。他是一种云计算模型。该模型中,开发人员实质上是依靠租用云提供商提供的开发工具,基础架构和操作系统来构建应用程序所需的一切。这是云计算的三种服务模型之一。PaaS极大地简化了Web应用程序的开发,所有后端管理都在后台进行,使开发人员免于必须安装内部硬件和软件来开发或运行新应用程序的麻烦。 

        PaaS,平台即服务。是云计算的一种服务形式。其实并不是一个非常新的概念,像GAE、SAE很早就提供了类似这样的服务。不过在很长一段时间内,PaaS接受程度不高,在跟客户谈及云计算时,普遍都认为云计算就是IaaS,即基础设施服务。但是随着云计算的不断发展,用户发现光有IaaS,虽然简化了对基础设施资源的管理,但是对云计算的终端用户来说通过IaaS只是拿到了一个裸操作系统,要想开发一个软件并部署到云平台上,还需要做很多工作。包括代码的管理、持续集成、自动化测试、交付物管理、应用托管、中间件服务、自动化运维、监控报警、日志处理等等。用户希望通过一个平台能够真正简化开发、测试、部署、运维等工作,使得企业能够真正实现DevOps。   

2.Cloud Foundry的PaaS的问题

        Cloud Foundry的PaaS主要提供的能力就是打包以及分发能力,由于需要在一个虚拟机上启动很多个来自不同用户的应用,Cloud Foundry 会调用操作系统的 Cgroups 和 Namespace 机制为每一个应用单独创建一个称作“沙盒”的隔离环境,然后在“沙盒”中启动这些应用进程。这样,就实现了把多个用户的应用互不干涉地在虚拟机里批量地、自动地运行起来的目的。

        使用Cloud Foundry的PaaS时,用户就必须为每种语言、每种框架,甚至每个版本的应用维护一个打好的包。这个打包过程,没有任何章法可循,更麻烦的是,明明在本地运行得好好的应用,却需要做很多修改和配置工作才能在 PaaS 里运行起来。而这些修改和配置,并没有什么经验可以借鉴,基本上得靠不断试错,直到你摸清楚了本地应用和远端 PaaS 匹配的“脾气”才能够搞定。

        由于通过Cloud Foundry的PaaS在构建应用时,需要将应用的整体环境进行打包,且不同应用的打包方式不能统一,这对于开发来说是比较麻烦的,这时Docker的出生就很好的解决了这个问题。

四、阶段三:应用托管能力的升级--Docker

1.Docker的概念

        Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 LinuxWindows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

2.Docker的原理概述

        Docker部署服务是通过Docker镜像的方式进行应用的部署,虽然Docker镜像也是压缩的应用包,但是这个压缩包比PaaS的应用可执行文件 + 启停脚本的组合就要丰富多了。Docker镜像这个压缩包包含了完整的操作系统文件和目录,也就是包含了这个应用运行所需要的所有依赖,所以你可以先用这个压缩包在本地进行开发和测试,完成之后,再把这个压缩包上传到云端运行。

3.Docker的编排问题

        虽然Docker解决了Cloud Foundry的PaaS的压缩问题,但是对于部署集群的编排能力,Docker是不具备的。虽然呼气Docker公司发布Docker中封装了Swarm,但是由于Google和RetHat等公司的集体围攻下,还是不及k8s的编排能力。

五、阶段四:容器编排--Kubernetes

1.Kubernetes的概念

        kubernetes,简称K8s,是用8代替名字中间的8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。 

        传统的应用部署方式是通过插件或脚本来安装应用。这样做的缺点是应用的运行、配置、管理、所有生存周期将与当前操作系统绑定,这样做并不利于应用的升级更新/回滚等操作,当然也可以通过创建虚拟机的方式来实现某些功能,但是虚拟机非常重,并不利于可移植性。

        新的方式是通过部署容器方式实现,每个容器之间互相隔离,每个容器有自己的文件系统 ,容器之间进程不会相互影响,能区分计算资源。相对于虚拟机,容器能快速部署,由于容器与底层设施、机器文件系统解耦的,所以它能在不同云、不同版本操作系统间进行迁移。

        容器占用资源少、部署快,每个应用可以被打包成一个容器镜像,每个应用与容器间成一对一关系也使容器有更大优势,使用容器可以在build或release 的阶段,为应用创建容器镜像,因为每个应用不需要与其余的应用堆栈组合,也不依赖于生产环境基础结构,这使得从研发到测试、生产能提供一致环境。类似地,容器比虚拟机轻量、更“透明”,这更便于监控和管理。

2.功能概述

        Kubernetes是Google开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请求进行负载均衡。

六、总结

        本文刚开始解释了自己对云计算学习的初衷,然后开始介绍云计算的概念,介绍一些当前比较重要的商业化云计算的企业,然后给出PaaS、Docker等部署层的概念,最后说明由于Docker的多机部署能力不足,所以引入k8s,k8s的创建是由于Google和RetHat对于Docker的一个反制措施,防止一家独大的危险。更多关于k8s的历史可以查看相关的文章,我这里只是一个概述。下篇文章我这会给出容器的概念,以及实现细节。

大家如果有什么问题可以直接指正

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值