前言
为什么写作本书
本书第1版出版于2016年,短短几年,Kubernetes已从一个新生事物发展成为一个影响全球IT技术的基础设施平台,成功推动了云原生应用、微服务架构、Service Mesh、Serverless等热门技术的普及和落地,一跃成为云原生应用的全球级基础平台。现在,Kubernetes已经成为软件基础设施领域中耀眼的明星项目,在GitHub上已有超过两万名开源志愿者参与此项目,成为开源历史上发展速度超快的项目之一。
在这几年里:
◎ Kubernetes背后的重要开源公司RedHat被IBM大手笔收购,使RedHat基于Kubernetes架构的先进PaaS平台——OpenShift成为IBM在云计算基础设施中的重要筹码;
◎ Kubernetes的两位核心创始人Joe Beda和Craig McLuckie所创立的提供Kubernetes咨询和技术支持的初创公司Heptio也被虚拟化领域的巨头VMware收购,VMware决定全力拥抱Kubernetes,而且计划直接以Kubernetes为底层核心重新打造全新版的vSphere;
◎ Oracle收购了丹麦的一家初创公司Wercker,然后开发了Click2Kube,这是面向Oracle裸机云(Oracle Bare Metal Cloud)的一键式Kubernetes集群安装工具;
◎ 世界500强中的一些大型企业也决定以Kubernetes为基础重构内部IT平台架构,大数据系统的一些用户也在努力将其生产系统从庞大的大数据专有技术栈中剥离出来靠拢Kubernetes。
谷歌凭借几十年大规模容器应用的丰富经验,首次投入大量人力、财力来开源并主导了Kubernetes这个重要的开源项目。可以预测,Kubernetes的影响力可能超过数十年,所以,我们每个IT人都有理由重视这门新技术。当年,慧与中国通信和媒体解决方案领域的资深专家团一起分工协作、并行研究,并废寝忘食地合力撰写,才促成了这部巨著的出版。当然,这部巨著也对Kubernetes在国内的普及和推广产生了巨大的推动作用。
本书读者对象
本书读者对象范围很广,甚至某些高校也采用了本书作为参考教材。考虑到Kubernetes的技术定位,我们强烈建议这些人群购买和阅读本书:资深IT从业者、研发部门主管、架构师(语言不限)、研发工程师(经验不限)、运维工程师(经验不限)、软件QA和测试工程师(两年以上经验)、以技术为主的售前工作人员(两年以上经验)。
建议在本机上安装合适的虚拟软件,部署Kubernetes环境并动手实践本书的大部分示例,甚至可以直接在公有云上部署或者使用现有的Kubernetes环境,从而降低入门复杂度。
本书概要
这些年,Kubernetes高速发展,先后发布了十几个大版本,每个版本都带来了大量的新特性,能够处理的应用场景也越来越丰富。
本书遵循从入门到精通的学习路线,涵盖了入门、安装指南、实践指南、核心原理、开发指南、网络与存储、运维指南、新特性演进等内容,内容翔实、图文并茂,几乎囊括了Kubernetes当前主流版本的方方面面。
第1章首先从一个简单的实例开始,让读者通过动手实践来感受Kubernetes的强大能力;然后讲解Kubernetes的概念、术语。考虑到Kubernetes的概念、术语繁多,所以特别从它们的用途及相互关系入手来讲解,以期初学者能快捷、全面、准确、深刻地理解这部分内容。
第2章围绕Kubernetes的安装和配置展开讲解。如果要在生产级应用中部署Kubernetes,则建议读者将本章内容全部实战一遍;如果不是,则可以选择部分内容实战,比较重要的是Kubernetes的命令行部分,对这部分越熟练,后面进行研发或运维就越轻松。
第3~4章对于大部分读者来说,都是很关键的内容,也是学会Kubernetes应用建模的关键章节。第3章全面、深入地讲解了Pod的方方面面,其中非常有挑战性的是Pod调度这部分内容,它也是生产实践中相当实用的知识和技能。第4章围绕Service展开深入讲解,涉及相关的服务发现、DNS及Ingress等高级特性。
第5章对Kubernetes的运行机制和原理进行全面、深入的讲解,通过对API Server、Controller、Scheduler、kubelet、kube-proxy等几个核心进程的作用、原理、实现方式等进行深入讲解,可以让读者加深对Kubernetes的认知,所以建议读者全面阅读本章内容。
第6章专门讲解Kubernetes安全方面的内容,因为内容比较复杂,所以涉及的知识点也较多,建议读者选择性阅读和动手实践本章内容。
第7章讲解Kubernetes相对复杂的内容之一——网络部分,涉及的知识面相对较广,包括Kubernetes网络模型、Docker网络基础、Service虚拟网络、CNI网络模型、开源容器网络方案、Kubernetes网络策略及IPv4、IPv6双栈协议等内容,学习曲线和理解曲线都较陡。建议读者多花时间钻研,因为网络也属于容器领域里很重要的基础知识。
第8章讲解Kubernetes存储方面的内容,动态存储管理实战部分的内容对于Kubernetes企业应用落地很有价值,建议读者动手实践完成这部分内容。
第9章是为程序员特别准备的,该章以Java(未来会增加Go语言)为例举例说明如何通过编程方式调用Kubernetes的API,这也是开发基于Kubernetes的PaaS管理平台的重要基础技能之一。
第10~12章侧重于讲解Kubernetes运维方面的技能和知识,包括Windows上的Kubernetes部署、安装等内容,建议需要在生产环境中部署Kubernetes的读者全面阅读并动手实践这几章的内容。
相关资源
本书提供了两个GitHub应用项目供读者学习和实践,其中包括sleep客户端应用项目和flaskapp服务端应用项目。另外,本书作者之一深度参与的Istio官方文档汉化项目也已上线。
本书也提供了QQ群和微信群供读者交流,还提供了本书配套源码下载、勘误反馈与获取渠道。
请在本书封底的“读者服务”处获取以上资源。如有资源更新,则也可通过此处获取。