深入剖析kubernetes-開篇詞 | 打通“容器技術”的任督二脈

本文購買於極客時間,作者張磊,如有需要請自行購買,如有侵權行爲,請及時與我聯繫。

開篇詞 | 打通“容器技術”的任督二脈

你好,我是張磊,Kubernetes 社區的一位資深成員和項目維護者。

2012 年,我還在浙大讀書的時候,就有幸組建了一個雲計算與 PaaS 基礎設施相關的科研團隊,就這樣,我從早期的 Cloud Foundry 社區開始,正式與容器結緣。

這幾年裏,我大多數時間都在 Kubernetes 項目裏從事上游技術工作,也得以作爲一名從業者和社區成員的身份,參與和親歷了容器技術從“初出茅廬”到“塵埃落定”的全過程。


而即使從 2013 年 Docker 項目發佈開始算起,這次變革也不過短短 5 年時間,可在現如今的技術圈兒裏,不懂容器,沒聽過 Kubernetes,你還真不好意思跟人打招呼。

容器技術這樣一個新生事物,完全重塑了整個雲計算市場的形態。它不僅催生出了一批年輕有爲的容器技術人,更培育出了一個具有相當規模的開源基礎設施技術市場。

在這個市場裏,不僅有 Google、Microsoft 等技術巨擘們廝殺至今,更有無數的國內外創業公司前仆後繼。而在國內,甚至連以前對開源基礎設施領域涉足不多的 BAT、螞蟻、滴滴這樣的巨頭們,也都從 AI、雲計算、微服務、基礎設施等維度多管齊下,爭相把容器和 Kubernetes 項目樹立爲戰略重心之一。

就在這場因“容器”而起的技術變革中,Kubernetes 項目已然成爲容器技術的事實標準,重新定義了基礎設施領域對應用編排與管理的種種可能。


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 爲什麼會贏”這個重要的問題,算是我額外爲你準備的一份開學禮物吧。

機會總是留給有準備的人,現在就讓我們一起開啓這次充滿挑戰的容器之旅!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章