了解Docker和Kubernetes人应该发现一个有趣的事情,从某种程度上来看Docker、Kubernetes都跟PaaS有些相似,感觉有种说不清道不明的关系。事实上,Docker和 Kubernetes就是脱胎于platform-as-a-service(PaaS),总而言之,它们与PaaS有血缘关系。
谷歌资深产品经理Craig McLuckie认为这也是Docker如此成功的原因之一,也是Google为什么要紧随其后推出基于Docker的容器管理工具Kubernetes。McLuckie认为PaaS***的败笔就是:企图用PaaS来解决所有问题。PaaS用户将其推向一个“experiential cliff”,试图用PaaS解决一些它并不能解决的问题。PaaS忙于解决各种问题,负责在基础设备中部署代码,负责业务编排,负责创建进程,还要负责自动化代码管理。所谓人心不足蛇吞象,这些功能对于一个平台而言实在太多了。于是有人开始想:如果尝试只做其中一两种功能会是什么样呢?
于是,PaaS初创公司dotCloud诞生了。吸取PaaS的前车之鉴,dotCloud只提取出PaaS项目的两项功能:代码封装和分发。可能你已经猜出故事的包袱是什么了,dotCloud公司最终的产物就是Docker容器,随着Docker越来越火,dotCloud公司更名为Docker。“简单”成为Docker的优势,代码像一个“密封单元”一样部署在测试云、生产云等不同环境中。
下一站:Kubernetes
从开发者角度来看Docker的确实现了PaaS的一些承诺。顺着Docker的思路理下去,接下来的问题就是怎样管理容器,于是Kubernetes顺理成章的出现了。Kubernetes是Google推出的开源容器集群管理系统,基于Docker构建一个容器调度服务,为容器化的应用提供资源调度、部署运行、均衡容灾、服务注册、扩容缩容等功能,本质上可看作是基于容器技术的mini-PaaS平台,提取PaaS中的业务编排和管理模块而形成的。
部署容器的过程中***化利用资源是十分重要的,OpenStack、Docker和Kubernetes组合就可以***的实现这一点,这也是Google赞助OpenStack开源组织的原因之一。
近日Google宣布推出Google容器引擎,也就是以服务形式提供的Kubernetes。McLuckie还透露了Kubernetes后期的发展方向。Kubernetes将会向应用方向发展,不再局限于云计算,这样一来Kubernetes就可以在在虚拟机和容器环境中灵活切换了。另外,Google会进一步加强Kubernetes的健壮性,确保它能够应付不同的环境,无论是OpenStack Neutron还是containers-on-bare-meetal。