了解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。