随着虚拟化技术的快速发展,越来越多的公司选择将产品从本地机房迁移到云端运行,而这些产品无一例外都是通过网络对外提供服务的。为了能更好地应用网络通信技术,我们有必要了解虚拟化网络背后的运作机制,理解各网络组件的工作原理及特性,并将理论知识应用到产品开发中,提升产品质量。
目前市面上既有很多讲述网络技术理论的著作,也有很多讲述虚拟化网络应用的书籍。前者更多专注于网络协议、组网等技术细节,偏重于理论;后者则从使用者的角度出发讲述如何使用虚拟化网络。这两类书籍对于运维和一般的技术人员来说基本够用,但是对于专门从事虚拟化网络技术开发、设计的人员来说,这些书的深度远远不够。本书期望在这两类书籍之间取得平衡:结合实际应用讲述虚拟化网络技术背后的工作原理,让读者不仅知道该如何使用虚拟化网络,还知道为什么要这样用。
本书从内核实现的角度出发分析虚拟化网络的工作原理,重点描述其功能的实现,使读者从根本上理解虚拟化网络原理,对于希望深入研究虚拟化网络技术的读者来说有较高的阅读价值。软件技术属于系统性的工程,一个人如果既了解内核网络的实现原理,又熟悉应用软件的业务场景,无疑就可以从全局的角度思考产品的解决方案,做出最合理的选择。
本书适合计算机网络从业人员阅读,包括但不限于以下读者群体。
➢ 通信、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。
韩相国