本文購買於極客時間,做者張磊,若有須要請自行購買,若有侵權行爲,請及時與我聯繫。安全
你好,我是張磊,Kubernetes 社區的一位資深成員和項目維護者。微信
2012 年,我還在浙大讀書的時候,就有幸組建了一個雲計算與 PaaS 基礎設施相關的科研團隊,就這樣,我從早期的 Cloud Foundry 社區開始,正式與容器結緣。網絡
這幾年裏,我大多數時間都在 Kubernetes 項目裏從事上游技術工做,也得以做爲一名從業者和社區成員的身份,參與和親歷了容器技術從「初出茅廬」到「塵埃落定」的全過程。架構
而即便從 2013 年 Docker 項目發佈開始算起,此次變革也不太短短 5 年時間,可在現現在的技術圈兒裏,不懂容器,沒聽過 Kubernetes,你還真很差意思跟人打招呼。less
容器技術這樣一個新生事物,徹底重塑了整個雲計算市場的形態。它不只催生出了一批年輕有爲的容器技術人,更培育出了一個具備至關規模的開源基礎設施技術市場。運維
在這個市場裏,不只有 Google、Microsoft 等技術巨擘們廝殺至今,更有無數的國內外創業公司前仆後繼。而在國內,甚至連之前對開源基礎設施領域涉足很少的 BAT、螞蟻、滴滴這樣的巨頭們,也都從 AI、雲計算、微服務、基礎設施等維度多管齊下,爭相把容器和 Kubernetes 項目樹立爲戰略重心之一。分佈式
就在這場因「容器」而起的技術變革中,Kubernetes 項目已然成爲容器技術的事實標準,從新定義了基礎設施領域對應用編排與管理的種種可能。ide
2014 年後,我開始以遠程的方式,全職在 Kubernetes 和 Kata Containers 社區從事上游開發工做,前後發起了容器鏡像親密性調度、基於等價類的調度優化等多個核心特性,參與了容器運行時接口、安全容器沙盒等多個基礎特性的設計和研發。還有幸做爲主要的研發人員和維護者之一,親歷了 Serverless Container 概念的誕生與崛起。微服務
在 2015 年,我發起和組織撰寫了《Docker 容器與容器雲》一書,但願幫助更多的人利用容器解決實際場景中的問題。時至今日,這本書的第 2 版也已經出版快 2 年了,受到了廣大容器技術讀者們的好評。工具
2018 年,我又赴西雅圖,在微軟研究院(MSR)雲計算與存儲研究組,專門從事基於 Kubernetes 的深度學習基礎設施相關的研究工做。
我與容器打交道的這些年,一直在與關注容器生態的工程師們交流,並常常探討容器在落地過程當中遇到的問題。從這些交流中,我發現總有不少類似的問題被反覆說起,好比:
爲何容器裏只能跑「一個進程」?
爲何我原先一直在用的某個 JVM 參數,在容器裏就很差使了?
爲何 Kubernetes 就不能固定 IP 地址?容器網絡連不通又該如何去 Debug?
Kubernetes 中 StatefulSet 和 Operator 到底什麼區別?PV 和 PVC 這些概念又該怎麼用?
這些問題乍一看與咱們日常的認知很是矛盾,但它們的答案和原理卻並不複雜。不過很遺憾,對於剛剛開始學習容器的技術人員來講,它們卻很難用一兩句話就能解釋清楚。
究其緣由在於,從過去以物理機和虛擬機爲主體的開發運維環境,向以容器爲核心的基礎設施的轉變過程,並非一次溫和的改革,而是涵蓋了對網絡、存儲、調度、操做系統、分佈式原理等各個方面的容器化理解和改造。
這就致使了不少初學者,對於容器技術棧表現出來的這些難題,要麼知識儲備不足,要麼雜亂無章、沒法造成體系。這,也是不少初次參與 PaaS 項目的從業者們共同面臨的一個困境。
其實,容器技術體系看似紛亂繁雜,卻存在着不少能夠「牽一髮而動全身」的主線。好比,Linux 的進程模型對於容器自己的重要意義;或者,「控制器」模式對整個 Kubernetes 項目提綱挈領的做用。
可是,這些關於 Linux 內核、分佈式系統、網絡、存儲等方方面面的積累,並不會在 Docker 或者 Kubernetes 的文檔中交代清楚。可恰恰就是它們,纔是真正掌握容器技術體系的精髓所在,是每一位技術從業者須要悉心修煉的「內功」。
而這,也正是我開設這個專欄的初衷。
我但願藉由這個專欄,給你講清楚容器背後的這些技術本質與設計思想,並結合着對核心特性的剖析與實踐,加深你對容器技術的理解。爲此,我把專欄劃分紅了 4 大模塊:
「白話」容器技術基礎: 我但願用饒有趣味的解說,給你梳理容器技術生態的發展脈絡,用最通俗易懂的語言描述容器底層技術的實現方式,讓你知其然,也知其因此然。
Kubernetes 集羣的搭建與實踐: Kubernetes 集羣號稱「很是複雜」,可是若是明白了其中的架構和原理,選擇了正確的工具和方法,它的搭建卻也能夠「一鍵安裝」,它的應用部署也能夠淺顯易懂。
容器編排與 Kubernetes 核心特性剖析: 這是這個專欄最重要的內容。「編排」永遠都是容器雲項目的靈魂所在,也是 Kubernetes 社區持久生命力的源泉。在這一模塊,我會從分佈式系統設計的視角出發,抽象和概括出這些特性中體現出來的廣泛方法,而後帶着這些指導思想去逐一闡述 Kubernetes 項目關於編排、調度和做業管理的各項核心特性。「不識廬山真面目,只緣身在此山中」,但願這樣一個不同凡響的角度,可以給你以全新的啓發。
Kubernetes 開源社區與生態:「開源生態」永遠都是容器技術和 Kubernetes 項目成功的關鍵。在這個模塊,我會和你一塊兒探討,容器社區在開源軟件工程指導下的演進之路;帶你思考,如何同團隊一塊兒平衡內外部需求,讓本身逐漸成爲社區中不可或缺的一員。
我但願經過這些對容器與 Kubernetes 項目的逐層剖析,可以讓你面對容器化浪潮時再也不躊躇無措,有一種撥雲見日的酣暢淋漓。
最後,我想再和你分享一個故事。
2015 年我在 InfoQ 舉辦的第一屆容器技術大會上,結識了當時 CoreOS 的佈道師 Kelsey Hightower,他熱情地和你們一塊兒安裝和體驗微信,談笑風生間,還時不時地安利一番自家產品。
但兩年後也就是 2017 年,Kelsey 已是全世界容器圈兒的意見領袖,是 Google 公司 Kubernetes 項目的首席佈道師,而他的座右銘也變爲了「只佈道,不推銷」。此時,就算你漂洋過海想要親自拜會 Kelsey ,恐怕也得先預定下時間了。
誠然,Kelsey 的「一晚上成名」,與他的勤奮和天賦密不可分,但他對此次「容器」變革走向的準確把握卻也是功不可沒。這也正應了一句名言:一我的的命運啊,固然要靠自我奮鬥,可是也要考慮到歷史的行程。
眼下,你我可能已經錯過了互聯網技術大爆炸的時代,也沒有在數字貨幣早期的狂熱裏分到一杯羹。可就在此時此刻,在沉寂了多年的雲計算與基礎設施領域,一次以「容器」爲名的歷史變革,正呼之欲出。這一次,咱們又有什麼理由做壁上觀呢?
若是你也想登上「容器」這趟高速前進的列車,我相信這個專欄,能夠幫助你打通學習容器技術的「任督二脈」。在專欄開始,我首先爲你準備了 4 篇預習文章,詳細地梳理了容器技術自興起到如今的發展歷程,同時也回答了「Kubernetes 爲何會贏」這個重要的問題,算是我額外爲你準備的一份開學禮物吧。
機會老是留給有準備的人,如今就讓咱們一塊兒開啓此次充滿挑戰的容器之旅!