Docker近日宣布支持Kubetnetes,擁抱昔日對手,讓業界大為震驚。其實,這一點在回溯過去時就早有苗頭??v觀Docker在編排領域的發展之路,大概這一決定是歷史的必然。這篇文章或許能從另一種視角帶你看看這個業界目前最熱議的話題。
目前Docker技術得到了廣泛應用,在大量需求的驅動下,我們創造了Rancher,在過去三年DockerCon上,Rancher都得到了很多來自用戶的熱情歡迎和積極反響。
DockerCon的特別之處不僅在于它將主要行業玩家全都召集到了一塊,更是因為DockerCon是為數不多的、參會者中用戶數量遠超供應商數量的技術大會。能夠一下子遇到這么多用戶,無論是參會還是贊助都十分值得。和我們的用戶交談,聽取他們的想法,這激勵并啟發著我們更好地改進Rancher產品。
Docker的技術革新正處于關鍵期,最近我們發布了Rancher 2.0 Tech Preview,該版本中我們把Rancher從基于Docker的產品轉變成基于Kubernetes的產品。雖然Docker作為一個應用程序打包和運行的標準取得了極大成功,而Kubernetes在容器基礎設施、編排和生態系統方面都已經超過了Docker,這也是我們選擇Kubernetes的原因。
容器基礎設施
基礎設施所涵蓋的范圍不僅只是打包和運行,它還包括存儲、網絡、負載均衡和安全。三年前,當我們剛開始研發Rancher時,我們認為Docker將會給容器網絡和存儲定義行業提供標準插件接口。盡管Docker和其他諸如SocketPlane(后被Docker收購)、Weveworks和ClusterHQ等早期先驅做了許多出色的工作,并且還得到了如思科、EMC和NetApp等行業領導者的大量支持,然而Docker接口,像libnetwork、容器網絡模型(CNM)和Docker volume插件還是沒能成為可行的標準。我們在Rancher中仍然在CNM和Docker volume插件方面做努力,不過還是遇到了難以逾越的挑戰:
1、我們還沒有實現讓CNM在Docker的內置網絡實現之外工作。比如,現在還不能創建一個脫離Swarm Mode的CNM實現。
2、我們沒法讓Rancher上的Docker volume插件在Docker守護進程下保持可靠性。我記得有一個極具挑戰性的issue,#18504,它導致Docker守護進程會不時地鎖住。暫時還不能解決它,也還沒找到解決方案。
在Rancher 1.2(2016年12月發布)中,通過切換到Kubernetes容器網絡接口(CNI)和Kubernetes Flexvolume存儲框架,我們已經解決了這些問題。因為Rancher2.0是基于Kubernetes的,任何與Kubernetes集成的網絡、存儲、負載均衡和安全性方案都可以在Rancher上開箱即用。
容器編排
我們為Rancher開發了名為Cattle的容器編排器來填補Docker Swarm早期缺失的一些功能,包括服務發現、DNS、服務升級和負載均衡器,希望當Swarm更加完善之后,能夠最終替代Cattle。
然而,在2016年3月Rancher 1.0發布時,Swarm還沒準備好。那個時候Kubernetes還未成熟,容器編排的未來也不是很明朗。因此我們決定,Rancher 1.0要同時支持多編排器:Cattle、Swarm、Kubernetes和Mesos。這樣一來,用戶便不會受限于某個特定的容器編排器,且Rancher的用戶都十分喜歡這一設計。
2016年6月時,Docker公布了Swarm Mode,我們都很為此而激動。Swarm Mode提供了早期Docker Swarm中缺少的許多功能,并且非常接近于Cattle所做的工作。于是我們很快在Rancher中添加了Swarm Mode的支持。
可是直到2017年初,Swarm Mode都沒有得到重視?;蛟S是早期的Swarm Mode實現上存在質量問題,也可能是Kubernetes的發展已經遙遙領先。絕大數Rancher用戶都在使用Cattle和Kubernetes。
Rancher 2.0建立在行業標準Kubernetes之上。Cattle不會消失——它將成為一種內置的Rancher體驗,我們也會持續改進它。通過2.0,我們提供了簡單的基于Kubernetes的Docker和Docker Compose用戶體驗。任何對Docker有基本了解的人都可以快速上手,等用戶熟練掌握之后還能體驗到更進階的原生Kubernetes體驗。
容器生態系統
DockerCon Europe匯聚了大量響當當的贊助商,也無疑吸引了越來越多的Docker用戶。我一直從DockerHub上尋找最新的用戶數據作為Docker增長的基準。在2017年4月的DockerCon Austin上,這個數字是120億,并且在那之后還在增長。
構成Kubernetes生態系統的公司其實差不多,不過參與模式卻完全不同。大多數的生態系統合作伙伴像我們一樣,認為Docker是一種成熟的技術,且擁有大量的用戶。而Kubernetes生態系統更加活躍,因為在這一生態系統中有很多積極的發展、創新和整合。
Docker將何去何從?
早在2016年的12月份,我就曾注意到Docker之父、Docker公司CTO Solomon Hykes在他的一篇blog中,將Docker的定位放在了和OpenShift(以及Rancher 2.0)同樣的層級,這層級是位于Kubernetes之上的??磥韽哪菚r起,Docker就已計劃構建一個全新的、基于Kubernetes之上的Docker產品了?