在深入了解Kubernetes时,先和大家回顾下,Kubernetes的发展历程中的关于容器技术与容器的玩家们在每个时间点里的发展状况,以及总结几点为什么K8S会最终赢下这场关于PaaS化的追逐战。
-
2013年,dotCloud公司在PaaS当红时期,毅然选择开源:容器项目 - Docker
-
2014年期间,(6月份)Google公司宣告Kubernetes项目的诞生
-
2014年期间,(12月份)Docker公司发布自家研发的 “Docker原生” 容器集群管理项目Swarm
- 目的:回到PaaS项目,考虑 “让开发者把应用部署到PaaS项目上”。是Docker公司重新定义“PaaS”的关键一环。因为之前Docker公司也是搞PaaS项目的,手头上有资源。
- 同年年底,CoreOS公司【一个基础设施领域创业公司,核心产品是一个定制化的操作系统,用户可以按照分布式集群的方式,管理所有安装了这个操作系统的节点,从而,用户在集群里部署和管理应用就像使用单机一样方便。其依托于一系列开源项目(Container linux, fleet作业调度工具/集群管理项目 , systemd进程管理和rkt容器)】推出:Rocket(rkt)容器
-
2014年期间,(12月份)Docker公司对Fig工具的收购,该Fig项目,在开发者面前第一次提出了“容器编排”的概念。后该项目改名为 “compose”
- "编排"的概念
- "编排" 在云计算行业里不算是新词汇,它主要是指用户如何通过某些工具或者配置来完成一组虚拟机以及关联资源的定义、配置、创建、删除等工作,然后由云计算平台按照这些指定的逻辑来完成的过程
- 容器时代,“编排” 显然就是对Docker容器的一系列定义、配置和创建工作的管理
- Fig就是允许用户把A,B,C三个容器定义在一个配置文件中,并且可以指定它们之间的关联关系。
-
- 小插曲:老牌集群管理项目Mesos和Mesosphere公司 - Mesos是大数据套件之一,最受欢迎的资源管理项目(超大规模集群的管理) - Mesosphere公司发布了一个名为Marathon的项目(实现诸如应用托管和负载均衡的PaaS功能),最后成为Docker Swarm的竞争对手 - Mesos+Marathon的组合实际上进化了一个高度成熟的PaaS项目。该公司提出"DC/OS"(数据中心操作系统)的产品 ,目的让用户像管理一台机器那样管理一个万级别的物理机集群,并且使用Docker容器在该集群上自由地部署应用。
- "编排"的概念
-
2014年-2015年:
- 期间Google公司关停Imctfy项目(一个容器项目),想和Docker公司共同推出一个中立的容器运行时(container runtime)库作为Docker项目的核心依赖(但是没有成功)
- 接着,Docker公司,自己发布了一个容器运行时库Libcontainer。
- 最后,同年六月份,迫于压力,由Docker公司牵头,CoreOS,Google,RedHat等公司共同宣布,Docker公司将Libcontainer捐出,并改名为RunC项目,交给一个完全中立的基金会管理,然后以Runc为依据,大家共同制定一套“容器”和“镜像”的标准和规范。
- (重要)这套规范就是OCI(Open Container Initiative)。OCI的提出,意在将容器运行时和镜像的实现从Docker项目中完全剥离出来。这样做,一方面可以改善Docker公司在容器技术上一家独大的现状,另一方面也为其他玩家不依赖于Docker项目构建各自的平台层能力提供了可能。也就是,不同组织和产商开发的容器能够在不同的runtime上运行。保证容器的可移植性和互操作性。
-
2014年-2015年:
- 容器生态的战场转到容器之上的平台层,或者说PaaS层!
- 期间Google、Redhat等开源基础设施领域玩家们,成立CNCF(云原生计算)的基金会/社区。该基金会以kubernetes项目为基础,来对抗以Docker公司为核心的容器商业生态。
- “三国鼎立时代” 建立:1. Kubernetes项目、2. Docker Swarm项目、3. Mesos项目
- (K8S成功的原因之一)Kubernetes项目设计理念从一开始就避免同Swarm和Mesos社区同质化。而且拥有超前的设计理念,很快就在容器编排和管理上超前。
- (K8S成功的原因之二)在已经囊括了容器监控事实标准的Prometheus项目之后,CNCF社区迅速在成员项目中添加了Fluentd, OpenTracing,CNI接口等一系列容器生态的知名工具和项目。越来越多公司和创业团队开始针对CNCF社区而非Docker公司制定推广策略
-
2016年期间:
- 为了,应对CNCF强猛的势头,Docker公司将(Swarm)容器编排和集群管理功能全部内置到Docker项目当中。
- (K8S成功的原因之三)K8S开始在社区推进“民主化”架构,即从API到容器运行时的每一层,K8S项目都给开发者暴露出了可以扩展的插件机制,鼓励用户通过代码的方式介入到K8S项目的每一个阶段。之后,整个容器社区催生出大量的,基于K8S API和扩展接口的二次创新工作,如下几点。使容器社区不在局限于“打包、发布”这样的PaaS化路线,以开发者为核心,构建一个相对民主和开发的容器生态:
- 微服务治理项目Istio;
- 有状态应用部署框架Operator;
- Rook项目,把Ceph重量级产品封装成了简单的容器存储插件;
-
2017年期间:
- Docker公司将Docker项目容器运行时部分Containerd(和前面提到的libcontainer为前后继承关系)捐赠给CNCF社区,标志这Docker项目已经全面升级成为一个PaaS平台
- Docker公司将Docker项目改名为Moby,然后交给社区自行维护。
- Docker公司全面放弃在开源社区同K9S生态的竞争,转而专注于自己的商业业务。
-
2017年期间(10月份):
- Docker公司,将自己的主打产品Docker企业版中内置K8S项目
-
2018年期间(1月份):
- RedHat 2.5亿美元收购CoreOS
-
2018年期间(3月份):
- Docker公司CTO Solomon Hykes宣传辞职