基本信息
书名:Kubernetes权威指南——从Docker到Kubernetes实践全接触
原价:89
作者:龚正 等编著
出版社:电子工业
出版日期:2015-(咨询特价)
ISBN(咨询特价)
字数:(咨询特价)
页码:412
版次:1
装帧:平装
开本:16开
编辑推荐
我相信这是一本到目前为止对从事云计算领域技术实践的人来说非常有价值的书籍。Kubernetes是容器生态圈中的重要一员,发展速度非常快,现在已经拥有500多名代码贡献者。本书囊括了Kubernetes入门、运行机制、原理和高级案例等内容,由浅入深地介绍了Kubernetes容器云平台,并围绕着生产环境中可能出现的问题,给出了大量的典型案例,有很好的可借鉴性。本书作者全部来自惠普公司云计算实战一线,敏锐地捕获和探索着各种IT前瞻技术,有着全面而扎实的技术架构体系、对创新技术天生的热情、国际技术领先者的视野,还有着对企业级IT架构的深入把握。
目录
第1章 Kubernetes入门1
1.1 Kubernetes是什么1
1.2 为什么要用Kubernetes4
1.3 从一个不简单的Hello World例子说起5
1.3.1 创建redis-master Pod和服务7
1.3.2 创建redis-slave Pod和服务10
1.3.3 创建frontend Pod和服务12
1.3.4 通过浏览器访问网页15
1.4 Kubernetes基本概念和术语16
1.4.1 Node(节点)16
1.4.2 Pod18
1.4.3 Label(标签)20
1.4.4 Replication Controller(RC)24
1.4.5 Service(服务)26
1.4.6 Volume(存储卷)30
1.4.7 Namespace(命名空间)34
1.4.8 Annotation(注解)35
1.4.9 小结36
1.5 Kubernetes总体架构36
1.6 Kubernetes安装与配置38
1.6.1 安装Kubernetes38
1.6.2 配置和启动Kubernetes服务39
1.6.3 Kubernetes的版本升级46
1.6.4 内网中的Kubernetes相关配置46
1.6.5 Kubernetes对Docker镜像的要求——启动命令前台执行48
第2章 Kubernetes核心原理49
2.1 Kubernetes API Server 分析49
2.1.1 如何访问Kubernetes API49
2.1.2 通过API Server 访问Node、Pod和Service52
2.1.3 集群功能模块之间的通信55
2.2 调度控制原理56
2.2.1 Replication Controller57
2.2.2 Node Controller60
2.2.3 ResourceQuota Controller62
2.2.4 Namespace Controller64
2.2.5 ServiceAccount Controller与Token Controller64
2.2.6 Service Controller与Endpoint Controller65
2.2.7 Kubernetes Scheduler71
2.3 Kubelet运行机制分析75
2.3.1 节点管理75
2.3.2 Pod管理76
2.3.3 容器健康检查77
2.3.4 cAdvisor资源监控78
2.4 安全机制的原理80
2.4.1 Authentication认证80
2.4.2 Authorization授权83
2.4.3 Admission Control准入控制84
2.4.4 Secret私密凭据88
2.4.5 Service Account92
2.5 网络原理95
2.5.1 Kubernetes网络模型95
2.5.2 Docker的网络基础97
2.5.3 Docker的网络实现109
2.5.4 Kubernetes的网络实现117
2.5.5 开源的网络组件127
2.5.6 Kubernetes网络试验131
第3章 Kubernetes开发指南145
3.1 REST简述145
3.2 Kubernetes API详解147
3.2.1 Kubernetes API概述147
3.2.2 API版本152
3.2.3 API详细说明152
3.2.4 API响应说明154
3.3 使用Java程序访问Kubernetes API156
3.3.1 Jersey156
3.3.2 Fabric(咨询特价)
3.3.3 使用说明169
第4章 Kubernetes运维指南191
4.1 Kubernetes核心服务配置详解191
4.1.1 基础公共配置参数191
4.1.2 kube-apiserver192
4.1.3 kube-controller-manager195
4.1.4 kube-scheduler196
4.1.5 Kubelet197
4.1.6 kube-proxy199
4.2 关键对象定义文件详解200
4.2.1 Pod定义文件详解200
4.2.2 RC定义文件详解203
4.2.3 Service定义文件详解204
4.3 常用运维技巧集锦206
4.3.1 Node的隔离和恢复206
4.3.2 Node的扩容207
4.3.3 Pod动态扩容和缩放208
4.3.4 更新资源对象的Label208
4.3.5 将Pod调度到指定的Node209
4.3.6 应用的滚动升级210
4.3.7 Kubernetes集群高可用方案213
4.4 资源配额管理217
4.4.1 指定容器配额217
4.4.2 全局默认配额218
4.4.3 多租户配额管理221
4.5 Kubernetes网络配置方案详解223
4.5.1 直接路由方案224
4.5.2 使用flannel叠加网络226
4.5.3 使用Open vSwitch228
4.6 Kubernetes集群监控232
4.6.1 使用kube-ui查看集群运行状态232
4.6.2 使用cAdvisor查看容器运行状态236
4.7 Trouble Shooting指导241
4.7.1 对象的Event事件242
4.7.2 容器日志243
4.7.3 Kubernetes系统日志244
4.7.4 常见问题246
4.7.5 寻求帮助249
第5章 Kubernetes高级案例进阶250
5.1 Kubernetes DNS服务配置案例250
5.1.1 skydns配置文件251
5.1.2 修改每个Node上的Kubelet启动参数254
5.1.3 创建skydns Pod和服务254
5.1.4 通过DNS查找Service255
5.1.5 DNS服务的工作原理解析256
5.2 Kubernetes集群性能监控案例257
5.2.1 配置Kubernetes集群的ServiceAccount和Secret258
5.2.2 部署Heapster、InfluxDB、Grafana261
5.2.3 查询InfluxDB数据库中的数据265
5.2.4 Grafana页面查看和操作268
5.3 Cassandra集群部署案例269
5.3.1 自定义SeedProvider270
5.3.2 通过Service动态查找Pod271
5.3.3 Cassandra集群新节点的自动添加274
5.4 集群安全配置案例275
5.4.1 双向认证配置275
5.4.2 简单认证配置279
5.5 不同工作组共享Kubernetes集群的案例280
5.5.1 创建namespace281
5.5.2 定义Context(运行环境)281
5.5.3 设置工作组在特定Context环境中工作282
第6章 Kubernetes源码导读285
6.1 Kubernetes源码结构和编译步骤285
6.2 kube-apiserver进程源码分析289
6.2.1 进程启动过程289
6.2.2 关键代码分析291
6.2.3 设计总结306
6.3 kube-controller-manager进程源码分析310
6.3.1 进程启动过程310
6.3.2 关键代码分析313
6.3.3 设计总结321
6.4 kube-scheduler进程源码分析323
6.4.1 进程启动过程323
6.4.2 关键代码分析328
6.4.3 设计总结335
6.5 Kubelet进程源码分析337
6.5.1 进程启动过程337
6.5.2 关键代码分析342
6.5.3 设计总结365
6.6 kube-proxy进程源码分析366
6.6.1 进程启动过程367
6.6.2 关键代码分析368
6.6.3 设计总结383
6.7 Kubectl进程源码分析384
6.7.1 kubectl create命令385
6.7.2 rolling-upate命令389
后记396
作者介绍
龚正 / 惠普公司高级顾问
拥有超过10年的IT行业从业经历,以及丰富的云计算、大数据分析和企业级应用架构设计、实施经验,是电信、金融、互联网等领域的资深行业专家。
吴治辉 / 惠普公司系统架构师
拥有超过15年的软件研发经验,专注于电信软件和云计算方面的软件研发,拥有丰富的项目架构设计经验,是业界少有的具备很强Coding能力的S级资深架构师,也是《ZeroC Ice权威指南》的作者。
叶伙荣 / 惠普公司资深系统架构师、大数据技术和云计算专家
拥有15年IT行业开发、设计、系统架构和咨询工作经验,曾参与多个CMM I5项目,熟悉各种大数据和云计算技术,拥有丰富的大数据及云计算规划、实施、运维经验。
张龙春 / 惠普公司云计算资深架构师
负责过多个云平台的规划、设计和建设,熟悉云计算及大数据领域的开源生态系统,专注于大规模集群技术、高性能网络通信、实时数据库、海量数据挖掘、智能学习和推荐、机器人等。
闫健勇 / 惠普公司高级项目经理、总构架师
拥有15年电信行业系统建设经验,参与了多项电信系统的架构设计和管理,对于云计算和大数据在电信行业中的应用拥有丰富的经验。
刘晓红 / 惠普公司高级咨询顾问
拥有超过10年的电信行业从业经验,亲历中国移动BSS/OSS领域核心系统的建设发展历程,拥有丰富的咨询规划、需求分析、产品设计、项目管理、测试管理经验,专注于云计算、大数据等前沿技术的研究。
崔晓宁 / 惠普公司高级顾问
拥有超过7年的测试咨询和质量管理经验,对于如何提升云计算、大数据和分布式运算架构下的业务质量控制,并推动架构优化有丰富的经验。
序言
推荐序
经过作者们多年的实践经验积累及近一年的精心准备,《Kubernetes权威指南——从Docker到Kubernetes实践全接触》终于与我们大家见面了。我有幸做为首批读者,提前见证和学习了在云时代引领业界技术方向的Kubernetes和Docker的**动态。
从内容上讲,本书从一个开发者的角度去理解、分析和解决问题:从基础入门到架构原理,从运行机制到开发源码,再从系统运维到应用实践,讲解全面。本书图文并茂,内容丰富,由浅入深,对基本原理阐述清晰,对程序源码分析透彻,对实践经验体会深刻。
我认为本书值得推荐的原因有以下几点。
首先,作者的所有观点和经验,均是在多年建设、维护应用系统的过程中积累形成的。例如,读者通过学习书中的Kubernetes运维指南和高级应用实践案例章节的内容,不仅可以直接提高开发技能,还可以解决在实践过程中经常遇到的各种关键问题。书中的这些内容具有很高的借鉴和推广意义。
其次,通过大量的实例操作和详尽的源码解析,本书可以帮助读者进一步深刻理解Kubernetes的各种概念。例如书中“JAVA访问Kubernetes API”的几种方法,读者参照其中的案例,只要稍做修改,再结合实际的应用需求,就可以用于正在开发的项目中,达到事半功倍的效果,有利于有一定JAVA基础的专业人士快速学习Kubernetes的各种细节和实践操作。
再次,为了让初学者快速入门,本书配备了即时在线交流工具和专业后台技术支持团队。如果你在开发和应用的过程中遇到各类相关问题,均可直接该团队的开发支持专家。
*后,我们可以看惮容器化技术已经成为计算模型演化的一个开端,Kubernetes作为谷歌开源的Docker容器集群管理技术,在这场新的技术中扮演着重要的角色。Kubernetes正在被众多知名企业所采用,例如RedHat、VMware、CoreOS及腾讯等,因此,Kubernetes站在了容器新技术变革的浪潮之巅,将具有不可预估的发展前景和商业价值。
如果你是初级程序员,那么你有必要好好学习本书;如果你正在IT领域进行高级进阶修炼,那你也有必要阅读本书。无论是架构师、开发者、运维人员,还是对容器技术比较好奇的读者,本书都是一本不可多得的带你从入门向高级进阶的精品书,值得大家选择!
初瑞
中国移动业务支撑中心高级经理
自 序
我不知道你是如何获得这本书的,可能是在百度头条、网络广告、朋友圈中听说本书后购买的,也可能是某一天逛书店时,这本书恰好神奇地翻落书架,出现在你面前,让你想起一千多年前那个意外得到《太公兵法》的传奇少年,你觉得这是冥冥之中上天的恩赐,于墅断带走。不管怎样,我相信多年以后,这本书仍然值得你回忆。
Kubernetes这个名字起源于古希腊,是舵手的意思,所以它的Logo既像一张渔网,又像一个罗盘。谷歌采用这个名字的一层深意就是:既然Docker把自己定位为驮着集装箱在大海上自在遨游的鲸鱼,那么谷歌就要以Kubernetes掌舵大航海时代的话语权,“捕获”和“指引”这条鲸鱼按照“主人”设定的路线巡游,确保谷歌倾力打造的新一代容器世界的宏伟蓝图顺利实现。
虽然Kubernetes自诞生至今才1年多,其**个正式版本Kubernetes 1.0于2015年7月才发布,完全是个新生事物,但其影响力巨大,已经吸引了包括IBM、惠普、微软、红帽、Intel、VMware、CoreOS、Docker、Mesosphere、Mirantis等在内的众多业界巨头纷纷加入。红帽这个软件虚拟化领域的领导者之一,在容器技术方面已经完全“跟从”谷歌了,不仅把自家的第三代OpenShift产品的架构底层换成了Docker+Kubernetes,还直接在其新一代容器操作系统Atomic内原生集成了Kubernetes。
Kubernetes是**个将“一切以服务(Service)为中心,一切围绕服务运转”作为指导思想的创新型产品,它的功能和架构设计自始至终都遵循了这一指导思想,构建在Kubernetes上的系统不仅可以独立运行在物理机、虚拟机集群或者企业私有云上,也可以被托管在公有云中。Kubernetes方案的另一个亮点是自动化,在Kubernetes的解决方案中,一个服务可以自我扩展、自我诊断,并且容易升级,在收到服务扩容的请求后,Kubernetes会触发调度流程,*终在选定的目标节点上启动相应数量的服务实例副本,这些副本在启动成功后会自动加入负载均衡器中并生效,整个过程无须额外的人工操作。另外,Kubernetes会定时巡查每个服务的所有实例的可用性,确保服务实例的数量始终保持为预期的数量,当它发现某个实例不可用时,会自动重启该实例或者在其他节点重新调度、运行一个新实例,这样,一个复杂的过程无须人工干预即可全部自动化完成。试想一下,如果一个包括几十个节点且运行着几万个容器的复杂系统,其负载均衡、故障检测和故障修复等都需要人工介入进行处理,那将是多么难以想象。
通常我们会把Kubernetes看作Docker的上层架构,就好像Java与J2EE的关系一样:J2EE是以Java为基础的企业级软件架构,而Kubernetes则以Docker为基础打造了一个云计算时代的全新分布式系统架构。但Kubernetes与Docker之间还存在着更为复杂的关系,从表面上看,似乎Kubernetes离不开Docker,但实际上在Kubernetes的架构里,Docker只是其目前支持的两种底层容器技术之一,另一个容器技术则是Rocket,后者来源于CoreOS这个Docker昔日的“恋人”所推出的竞争产品。
Kubernetes同时支持这两种互相竞争的容器技术,这是有深刻的历史原因的。Docker的快速发展打败了谷歌曾经名噪一时的开源容器技术lmctfy,并迅速风靡世界。但是,作为一个已经对全球IT公司产生重要影响的技术,Docker背后的容器标准的制定注定不可能被任何一个公司私有控制,于是就有了后来引发危机的CoreOS与Docker分手事件,其是CoreOS撇开了Docker,推出了与Docker相对抗的开源容器项目——Rocket,并动员一些知名IT公司成立委员会来试图主导容器技术的标准化,该分手事件愈演愈烈,*终导致CoreOS“傍上”谷歌一起宣布“叛逃”Docker阵营,共同发起了基于CoreOS+Rocket+Kubernetes的新项目Tectonic。这让当时的Docker阵营和Docker粉丝们无比担心Docker的命运,不管*终鹿死谁手,容器技术分裂态势的加剧对所有牵涉其中的人来说都没有好处,于是Linux基金会出面调和矛盾,双方都退让一铂*终的结果是Linux基金会于2015年6月宣布成立开放容器技术项目(Open Container Project),谷歌、CoreOS及Docker都加入了OCP项目。但通过查看OCP项目的成员名单,你会发现Docker在这个名单中只能算一个小角色了。OCP的成立*终结束了这场让无数人揪心的“战争”,Docker公司被迫放弃了自己的控制权。作为回报,Docker的容器格式被OCP采纳为新标准的基础,并且由Docker负责起草OCP草案规范的初稿文档,当然这个“标准起草者”的角色也不是那么容易担当的,Docker要提交自己的容器执行引擎的源码作为OCP项目的启动资源。
事到如今,我们再来回顾当初CoreOS与谷歌的叛逃事件,从表面上看,谷歌貌似是被诱拐“出柜”的,但局里人都明白,谷歌才是这一系列事件背后的主谋,不仅为当年失败的lmctfy报了一之仇,还重新掌控了容器技术的未来。容器标准之战大捷之后,谷歌进一步扩大了联盟并提高了自身影响力。2015年7月,谷歌正式宣布加入OpenStack阵营,其目标是确保 Linux 容器及关联的容器管理技术_Kubernetes能够被OpenStack生态圈所容纳,并且成为OpenStack平台上与KVM虚机一样的一等公民。谷歌加入OpenStack意味着对数据中心控制平面的争夺已经结束,以容器为代表的应用形态与以虚拟化为代表的系统形态将会完美融合于OpenStack之上,并与软件定义网络和软件定义存储一起统治下一代数据中心。
谷歌凭借着几十年大规模容器使用的丰富经验,步步为营,先是祭出Kubernetes这个神器,然后又掌控了容器技术的制定标准,*后又入驻OpenStack阵营全力将Kubernetes扶上位,谷歌这个IT界的领导者和创新者再次王者归来。我们都明白,在IT世界里只有那些被大公司掌控和推广的,同时被业界众多巨头都认可和支持的新技术才能生存和壮大下去。Kubernetes就是当今IT界里符合要求且为数不多的热门技术之一,它的影响力可能长达十年,所以,我们每个IT人都有理由重视这门新技术。
谁能比别人领先一步掌握新技术,谁就在竞争中赢得了先机。惠普中国电信解决方案领域的资深专家团一起分工协作,并行研究,废寝忘食地合力撰写,在短短的5个月内完成了这部厚达四百多页的Kubernetes权威指南。本书遵循从入门到精通的学习路线,全书共分为六大章节,涵盖了入门、高级案例、架构、原理、开发指南、运维及源码分析等内容,内容详实、图文并茂,几乎囊括了Kubernetes 1.0的方方面面,无论对于软件工程师、测试工程师、运维工程师、软件架构师、技术经理还是资深IT人士来说,本书都极具参考价值。
吴治辉
惠普公司系统架构师
内容提要
Kubernetes是由谷歌开源的Docker容器集群管理系统,为容器化的应用提供了资源调度、部署运行、服务发现、扩容、缩容等一整套功能。本书从一个开发者的角度去理解、分析和解决问题,囊括了Kubernetes入门、核心原理、实战开发、运维、高级案例及源码分析等方面的内容,图文并茂、内容丰富、由浅入深、讲解全面;并围绕着生产环境中可能出现的问题,给出了大量的典型案例,比如安全问题、网络方案的选择、高可用性方案及Trouble Shooting技巧等,有很好的可借鉴性。
无论对于软件工程师、测试工程师、运维工程师、软件架构师、技术经理还是资深IT人士来说,本书都极具参考价值。