近十幾年來,IT領域新技術、新概念層出不窮,例如DevOps、微服務(Microservice)、容器(Container)、雲計算(Cloud Computing)和區塊鍊(Blockchain)等,直有“亂花漸欲迷人眼”之勢。另外,出于業務的需要,IT應用模型也在不斷地變革,例如,開發模式從瀑布式(Waterfall)到靈活(Agile)再到精益(Lean),甚至是與QA和Operations融合的DevOps,應用程式架構從單體(monolithic)模型到分層模型再到微服務,部署及打包方式從面向實體機到虛拟機再到容器,應用程式的基礎架構從自建機房到托管再到雲計算,等等,這些變革使得IT技術應用的效率大大提升,同時卻以更低的成本傳遞更高品質的産品。
尤其是以Docker為代表的容器技術的出現,終結了DevOps中傳遞和部署環節因環境、配置及程式本身的不同而造成的動辄幾種甚至十幾種部署配置的困境,将它們統一在容器鏡像(image)之上。如今,越來越多的企業或組織開始選擇以鏡像檔案作為傳遞載體。容器鏡像之内直接包含了應用程式及其依賴的系統環境、庫、基礎程式等,進而能夠在容器引擎上直接運作。于是,IT運維工程師(operator)無須關注開發應用程式的程式設計語言、環境配置等,甚至連業務邏輯本身也不必過多關注,而隻需要掌握容器管理的單一工具鍊即可。
部署的複雜度雖然降低了,但以容器格式運作的應用程式間的協同卻成了一個新的亟待解決的問題,這種需求在微服務架構中表現得尤為明顯。結果,以Kubernetes為代表的容器編排系統應需而生。
盡管公開面世不過短短數年時間,Kubernetes業已成為容器編排領域事實上的标準,其近一兩年的發展狀态也在不斷地驗證着Urs H?lzle曾經的斷言:無論是公有雲、私有雲抑或混合雲,Kubernetes都将作為一個為任何應用、任何環境提供的容器管理架構而無處不在。
Kubernetes(來自希臘語,意為“舵手”或“飛行員”)由Joe Beda、Brendan Burns和Craig McLuckie創立,而後Google的其他幾位工程師,包括Brian Grant和Tim Hockin等加盟共同研發,并由Google在2014年首次對外宣布。Kubernetes的開發和設計都深受Google内部系統Borg的影響,事實上,它的許多頂級貢獻者之前也是Borg系統的開發者。
Borg是Google内部使用的大規模叢集管理系統,久負盛名。它建構于容器技術之上,目的是實作資源管理的自動化,以及跨多個資料中心的資源使用率最大化。2015年4月,Borg論文《Large-scale cluster management at Google with Borg》伴随Kubernetes的高調宣傳被Google首次公開,人們終于有緣得窺其全貌。
事實上,正是由于誕生于容器世家Google,并站在Borg這個巨人的肩膀之上,充分受益于Borg過去十數年間積累的經驗和教訓,Kubernetes甫一面世就立即廣受關注和青睐,并迅速稱霸了容器編排技術領域。很多人将Kubernetes視為Borg系統的一個開源實作版本,在Google内部,Kubernetes的原始代号曾經是Serven of Nine,即星際迷航中友好的“Borg”角色,它辨別中的舵輪有七個輪輻就是對該項目代号的緻意,如圖所示。
Kubernetes v1.0于2015年7月21日釋出,緊随其後,Google與Linux基金會合作組建了Cloud Native Computing Foundation(雲原生計算基金會,簡稱為CNCF),并将Kubernetes作為種子技術予以提供。這之後,Kubernetes進入了版本快速疊代期,從此不斷地融入着新功能,如Federation、Network Policy API、RBAC、CRD和CSI,等等,并增加了對Windows系統的支援。
2017年可謂是容器生态發展史上具有裡程碑意義的一年。這一年,AWS、Azure和Alibaba Cloud都相繼在其原有容器服務上新增了對Kubernetes的支援,而Docker官方也在2017年10月宣布同時支援Swarm和Kubernetes編排系統。這一年,RKT容器派系的CoreOS舍棄掉自己的排程工具Fleet,将其商用平台Tectonic的重心轉移至Kubernetes。這一年,Mesos也于9月宣布了對Kubernetes的支援,其平台使用者可以安裝、擴充和更新多個生産級的Kubernetes叢集。這一年,Rancher Labs推出了其2.0版本的容器管理平台并宣布all-in Kubernetes,放棄了其内置多年的容器編排系統Cattle。類似的故事依然在進行,并且必将在一個時期内持續上演。
本文摘編自《Kubernetes進階實戰》,經出版方授權釋出。
推薦閱讀:《Kubernetes進階實戰》 作者 馬永亮
内容簡介:
基于K8S 1.12版本,透徹解析技術架構、元件應用、擴縮容、網絡與存儲政策,以及技術進階等話題 。
馬哥教育CEO馬哥(馬永亮)撰寫,漸進式鋪陳,适合入門與進階 ;
涵蓋Kubernetes架構、部署、核心/自定義資源、擴縮容、存儲卷、網絡插件與政策、安全、排程政策、監控、日志等話題 ;
漸進式講解,手把手示範,大量實操案例,随時動手驗證。