
前言
之前看到過一句話,大概意思是:學技術如果隻去專研技術本身,那麼你學到的技術就是“冷冰冰”的,而如果在了解技術背後的背景和有趣的發展曆程後再去學習,這樣你學習的技術才會“有血有肉”,更加有趣。
我特别贊同也覺得很有道理,是以第一期就想寫一寫docker、k8s、Google、CNCF等有關雲原生組織、技術的發展曆程以及彼此之間的“恩怨糾葛”,希望學習雲原生技術的夥伴能“知其然并知其是以然”!
說起“雲原生技術”,大家可能有點懵,隻聞其聲,不明其意。但是雲原生背後典型的幾個公司或者技術産品的名稱可能大家經常聽到:比如容器技術的代表公司docker;容器編排技術開源産品kubernetes(因為K和S之間有8個字母簡稱K8S);微服務治理架構Service Mesh;比如CoreOS;更有非常有名的Google、IBM、redhat(已經被IBM收購)、阿裡雲、vmware;開源技術基金會,linux基金會以及雲原生基金會(CNCF);對了,還有一個老家夥,早期開源paas平台 Cloud Foundry。
今天要講的主角有Google、docker、K8S;配角是CoreOS。(如有雷同,純屬巧合)
Docker“橫空出世”
-
2010年幾個大胡子年輕人在舊金山成立了一家叫做 PaaS
平台的公司,起名為dotCloud,雖然dotCloud期間獲得過一些融資,但随着大廠商(微軟、谷歌、亞馬遜等)殺入PaaS平台,dotCloud舉步維艱。
- 2013年的IT技術,AWS和openstack如日中天,當時是IAAS的天下,雲裡霧裡的雲計算最終都落地成了虛拟機以及公有雲的資源賬單!
-
2013年開源的paas項目Cloud
Foundry卻屬于雲計算中的一股清流,在經曆了艱難的paas概念普及階段後,吸引了大批國内外廠商參與paas開源平台的建設。而2013年之前“Docker”這個詞還隻是dotCloud這個公司内部的一個容器項目的名稱,dotCloud這個公司的創業者們也是Paas熱潮中的一份子,但是dotCloud微不足道,小的可憐,他主打的産品和Cloud Foundry社群脫節,長期無人問津,眼看着就要被PAAS潮流無情的抛棄!
- 2013年dotCloud公司決定開源自己的容器項目“Docker”,顯然這在當時沒人Care,因為“容器”不是新鮮玩意,大家都知道他是基于linux的核心技術(namespace和cgroupe)實作,這和Cloud Foundry底層技術大部分都一樣。但是恰恰是那一小部分的不一樣(docker的鏡像打包技術)造就了Docker的雄起。
- 2013年,Docker項目開源後短短幾個月内迅速崛起,紅遍大江南北,以秋風掃落葉之勢迅速幹掉其他paas社群,他們甚至都沒資格成為Docker的競争對手就已經出局,Docker雄心勃勃大有統一容器江湖之勢。
- Docker崛起的時候CoreOS也是其中的一員,在容器生态圈中CoreOS的标簽就是:專為容器設計的作業系統。作為互補,CoreOS+Docker曾經也是容器部署的明星套餐。CoreOS為Docker的推廣和源碼社群都做出了巨大的貢獻。
- 2014年随着Docker通過開發或者收購,逐漸完善容器雲平台的各個元件,準備打造Docker自己的生态圈以後,CoreOS發現docker想抛棄自己,docker的一系列布局與自己有直接競争關系,是以CoreOS也憤怒的釋出了另一個開源容器引擎Rocket簡稱rkt作為兩家的分手宣言,至此兩家分道揚镳!
雲原生技術的前世今生前言Docker“橫空出世”“江湖大佬”出山“容器編排”戰争打響聊一下CNCF(雲原生基金會)結束語
“江湖大佬”出山
Google公司秘而不宣的使用容器已經有十幾年了,本想關鍵時候做殺手锏,沒想到docker居然搞出了docker容器還開源了,且發展勢頭極其迅猛。Google坐不住了,擔心自己的江湖地位受到挑戰。于是财大氣粗的Google就大力扶持docker的“反對派”陣營-CoreOS,kubernetes一經推出就原生支援rkt容器引擎,并且在2015年4月Google還給CoreOS投資了1200萬美刀,而CoreOS也釋出了Tectonic,成為首個支援企業版本kubernetes的公司。從此容器生态江湖分為兩大陣營Google和Docker。
“容器編排”戰争打響
2014年,當Google發現CoreOS在容器生态領域實在不是Docker的競争對手之後,決定換道超車,于當年宣布推出kubernetes容器叢集編排工具,并在2014年6月7日将初始版本代碼送出到Github上完全開源,當年7 月 10 日微軟、RedHat、IBM、Docker 加入Kubernetes 開源社群。
2014年的Docker公司雄心勃勃,于2014年底在DockerCon上釋出了自己研發的“Docker原生”容器叢集管理項目DockerSwarm,并想與kubernetes一較高下。Mesosphere公司的Mesos + Marathon(馬拉松)的項目更是早期容器編排解決方案的領頭羊,像是有3億使用者的Twitter以及蘋果語音助手Siri就是使用mesos作為後端叢集管理工具。
但由于kubernetes基于Google内部使用的容器叢集管理系統Borg+Omega,在谷歌已經平穩運作了15年,Google将他們自己超大範圍的技術經驗帶到了容器編排中,該填的坑早已經被谷歌的技術大神們填了,是以推出後不到三年橫掃docker swarm和mesos marathon容器編排工具。
2017年10月17日,随着docker宣布支援kubernetes開始,其實容器編排的戰争就已經結束了,整個行業已經聚焦到K8S家門前!截止2017年6月,據CNCF統計:K8S占據着77%的市場佔有率;docker swarm則隻有21%,遠遠落後;第三名Mesos則是13%。
聊一下CNCF(雲原生基金會)
2015年7月,由Google牽頭并聯合linux基金會以及一大票牛掰的技術公司(IBM、microsoft、redhat等等)成立了CNCF(Cloud Native Computing Foundation),緊接着就把kubernetes1.0版本的源代碼捐獻給CNCF。
這給大家傳遞的資訊就是K8S是大家的,是以K8S一出世就讓大家趨之若鹜,而借着CNCF,谷歌糾集了除了docker以外容器領域的幾乎全部力量,此時docker如果不加入CNCF就會被CNCF抛棄掉。
後來CNCF就提出,如果容器要快速發展就必須要标準化,不能受控于一家公司,由誰來制作容器的一系列标準化?為了給docker機會,就讓docker去制定标準化(OCI),畢竟在容器領域Docker的技術還是領先的,是以docker的容器運作時(runtime)從一開始的LXC進化到libcontainer,再到最後的runC,完全符合OCI标準!
結束語
本期就先唠到這兒,接下來我将從linux的namespace、Cgroup、chroot開始,逐漸完成對容器(docker)及容器編排技術(K8S)的梳理。這其實既是幫助自己做知識體系整理,也是跟大家交流探讨的共同進步。
特别希望大家在了解雲原生背後的這些故事後,能夠和我一起繼續深入學習探索雲原生相關的技術,并持續關注雲原生類解決方案的落地實踐。