1. 程式人生 > >Docker與Kubernetes,是敵是友?

Docker與Kubernetes,是敵是友?

如果你是一名運維工程師,你就會知道Docker公司的估值已超過10億美元,而且Docker是最受關注的技術品牌之一。Docker容器被稱為容器執行時的事實標準,但是Google公司的Kubernetes正在贏得編排框架市場的勝利。在使用容器技術時,我們經常會遇到這樣一個問題,“使用Kubernetes會傷害Docker嗎?”

許多人認為容器技術的價值在編排層,這是Kubernetes對Docker容器的直接威脅。然而我不認同這個觀點,因為Docker不是一家容器執行時公司,而是一家容器平臺公司。要理解這個概念,我們必須瞭解Docker公司的歷史。

PaaS vs CaaS

Docker公司曾是一家名為dotCloud的公共雲PaaS(平臺即服務)公司。所有的PaaS解決方案都可以利用容器封裝來執行復雜的任務,例如實時遷移,以便可以快速部署軟體,而不需要使用者離線系統或停機。2013年,dotCloud公司開源了其基礎容器技術,稱為Docker專案。與此同時,一個大型技術社群產生了,dotCloud從一家純粹的PaaS公司轉型成為一家名為Docker的容器平臺公司。

在接下來的兩年中,Docker公司籌集了1.9億美元,並闡述了容器即服務(CaaS)的概念。首席技術官Solomon Hykes指出,PaaS的最大挑戰之一是開發人員往往過於規範。CaaS的理念是使用者可以將相關的元件容器化,並在Docker產品和服務的幫助下,搭建一個由容器化元件構成的非規範性平臺。這樣,開發人員就從基礎的IT管道中抽象出來,不再被PaaS供應商提供的技術所捆綁。轉向CaaS使得Docker成為容器平臺公司,而容器只是一種工具。

編排框架

一旦擁抱了容器,使用者就需要一個編排框架來排程和管理容器。最常見的編排框架有Kubernetes、Mesos、Docker Swarm。Kubernetes是目前市場上最成熟的、最具擴充套件性的解決方案,佔有最大的市場份額。上述三個編排框架都開放原始碼,使用者只需為技術支援服務付費。

Kubernetes與Docker容器之間,並不是蘋果與蘋果的比較,你不能將業務流程工具與平臺對比。Kubernetes是Google公司多年來用於大型叢集管理的基礎技術,它於2015年7月釋出。之後的DockerCon 2016上,Docker公司宣佈了具有業務流程功能的Docker Swarm。Docker Swarm的一個優點是與Docker平臺中的許多安全功能整合,如金鑰管理。在容器規模較小的場景下,許多使用者更喜歡使用Docker Swarm,因為它平滑地內置於Docker平臺中。

容器技術的價值在平臺

到目前為止,編排框架競賽的獲勝者是Kubernetes。這使得許多人認為Kubernetes對Docker容器造成了很大的威脅。在DockerCon 2017上,Docker公司釋出了Moby專案,它是一個基於容器平臺(CaaS)的組裝框架。Moby專案使得使用者可以用喜歡的元件來建立定製化的平臺。從下圖可知,編排框架只是容器平臺(CaaS)的一層。

容器平臺

Docker容器不關心使用者使用哪種編排框架,它的工作是讓使用者輕鬆地選擇最喜歡的編排框架,無論Kubernetes、Mesos、Docker Swarm還是其他。這個選擇在價值上無關緊要,真正的價值在於平臺,那才是錢。因此,將Kubernetes與Docker容器進行比較是沒有意義的,Docker的真正的競爭對手是VMWare、CloudFoundry等平臺。

在我看來

在Twitter上,我們看到Google公司的Kelsey Hightower與Docker公司的Solomon Hykes之間喋喋不休,但是我相信Kelsey對於Docker容器缺乏開放性的建設性批評,有助於推動其將Kubernetes作為容器平臺編排層的可行性選擇之一。如果這樣,Google公司就不再是容器生態的敵人,更多的是合作伙伴。

Docker公司的資金收入來源於技術支援服務,生產中執行的Docker容器越多,技術支援服務的收入就越多。對Docker公司來說,重要的是Docker容器使用率的提升。顯然,Kubernetes是最受歡迎的編排框架,被用於驅動大規模的容器應用,而Kubernetes可以使更多的Docker容器投入生產。

在我看來,Kubernetes不是Docker容器的殺手,而是推動者。更進一步地說,編排框架是容器平臺的商品,它會驅動容器執行時的使用。編排框架是容器平臺的關鍵組成部分,它與容器執行時是朋友,而不是敵人。

文章來自微信公眾號:Docker