- 深入理解Kubernetes網絡系統原理
- 韓相國
- 1723字
- 2025-05-07 11:21:10
Preface 前言
為什么寫本書
隨著虛擬化技術的快速發展,越來越多的公司選擇將產品從本地機房遷移到云端運行,而這些產品無一例外都是通過網絡對外提供服務的。為了能更好地應用網絡通信技術,我們有必要了解虛擬化網絡背后的運作機制,理解各網絡組件的工作原理及特性,并將理論知識應用到產品開發中,提升產品質量。
目前市面上既有很多講述網絡技術理論的著作,也有很多講述虛擬化網絡應用的書籍。前者更多專注于網絡協議、組網等技術細節,偏重于理論;后者則從使用者的角度出發講述如何使用虛擬化網絡。這兩類書籍對于運維和一般的技術人員來說基本夠用,但是對于專門從事虛擬化網絡技術開發、設計的人員來說,這些書的深度遠遠不夠。本書期望在這兩類書籍之間取得平衡:結合實際應用講述虛擬化網絡技術背后的工作原理,讓讀者不僅知道該如何使用虛擬化網絡,還知道為什么要這樣用。
本書從內核實現的角度出發分析虛擬化網絡的工作原理,重點描述其功能的實現,使讀者從根本上理解虛擬化網絡原理,對于希望深入研究虛擬化網絡技術的讀者來說有較高的閱讀價值。軟件技術屬于系統性的工程,一個人如果既了解內核網絡的實現原理,又熟悉應用軟件的業務場景,無疑就可以從全局的角度思考產品的解決方案,做出最合理的選擇。
本書讀者對象
本書適合計算機網絡從業人員閱讀,包括但不限于以下讀者群體。
?通信、IT企業中從事網絡應用的開發人員和軟件架構師。
?從事網絡管理、運維的企事業技術人員。
?高等院校、研究所中網絡技術相關專業的學生和學術研究人員等。
如果你對虛擬化網絡技術感興趣或者從事相關的工作,且想對網絡背后的工作原理尋根究底,那么本書會是一個不錯的選擇。
在閱讀本書之前你需要:
?具備一定的Linux系統操作經驗,熟悉Linux的基本命令;
?具備一定的計算機網絡理論基礎知識,如了解網絡概念、網絡組網基礎;
?具備一定的Kubernetes操作基礎知識,理解Kubernetes的基本概念;
?最好了解或者學習過Linux內核源碼。
如何閱讀本書
首先,本書針對網絡技術從業者的實際需求,進行了對關鍵內容的把握和對講解深度的平衡。例如,以往讀者如果想深入了解Linux內核網絡的實現細節,要么自己閱讀內核源碼,要么參考內核專業書籍,或者將兩種方式相結合。市面上關于Linux內核網絡的圖書雖然系統地講解了Linux內核的實現原理,適合做Linux內核開發的人員閱讀,但對于僅需要大致了解Linux內核網絡而無須深入鉆研的讀者來說太過復雜和冗長。因此,本書從應用的角度出發,呈現Linux內核網絡功能的主體脈絡,既對虛擬化網絡的關鍵技術點詳細展開講解,又不會對內核技術的細節過分深入解讀,做到“夠用”即可。
其次,本書圍繞“Kubernetes網絡系統原理”這一主題進行了體系化的闡述,除了核心基礎知識以外,還提供了重要的拓展知識,涵蓋了進階理論和實踐操作。讀者閱讀本書后,能掌握Kubernetes網絡的整體脈絡,從而將其應用于場景實踐。
具體來說,本書內容如下。
第一篇:通用網絡技術
?第1章關注基礎理論,介紹虛擬化網絡中使用的各種基礎技術,讀者掌握這些基礎后能更好地支撐虛擬化網絡實踐。
?第2~4章關注技術進階理論,講解Linux內核是如何實現這些通用網絡技術的,適用于想要了解網絡背后工作原理的讀者。
第二篇:容器網絡技術原理
?第5章結合第4章介紹的虛擬網絡設備,介紹三種跨網絡命名空間通信解決方案,并以實例化的方式進行功能驗證。
?第6章以Docker引擎為例,介紹三種跨網絡命名空間通信解決方案在容器技術中的應用,實現容器網絡的互通互聯。
?第7章結合實際應用講解Kubernetes網絡通信原理,包括Pod網絡、service網絡和Ingress網絡。
第三篇:Kubernetes網絡插件原理
?第8章介紹Kubernetes CNI網絡插件的概念及其在系統中所處的位置,并結合flannel插件講解CNI插件的工作原理。最后,手動實現Kubernetes使用macvlan/ipvlan網絡作為默認網絡功能。
?第9章結合虛擬化網絡知識實現glue插件。該插件使用macvlan/ipvlan作為Kubernetes默認網絡插件。
附錄
拓展介紹了mount用法、pod網絡命名空間程序、CNI插件測試程序以及測試工具rawudp程序,便于讀者更好地理解及應用Kubernetes網絡技術。
勘誤與支持
本書的所有內容均經過實際測試。然而,盡管我本人及幫助我的人已經盡了最大努力,但是本書仍難免存在疏漏之處。如果讀者發現任何問題,或者對本書有任何意見,請通過郵件聯系我:han.xiangguo@zte.com.cn。
本書中的示例源代碼和完整工程可以在GitHub或者Gitee站點下載:
?GitHub地址:https://github.com/understanding-k8s-network-system。
?Gitee地址:https://gitee.com/understanding-the-k8s-network。
韓相國