Kubernetes权威指南:从Docker到Kubernetes实践全接触(第2版)
  • 推荐2
  • 收藏9
  • 浏览2.0K

Kubernetes权威指南:从Docker到Kubernetes实践全接触(第2版)

闫健勇 (作者) 

  • 书  号:978-7-121-29941-4
  • 出版日期:2016-10-12
  • 页  数:520
  • 开  本:16(185*235)
  • 出版状态:上市销售
  • 维护人:张国霞
Kubernetes是由谷歌开源的Docker容器集群管理系统,为容器化的应用提供了资源调度、部署运行、服务发现、扩容及缩容等一整套功能。本书从一个开发者的角度去理解、分析和解决问题,囊括了Kubernetes入门、核心原理、实践指南、开发指导、高级案例、运维指南及源码分析等方面的内容,图文并茂、内容丰富、由浅入深、讲解全面;并围绕着生产环境中可能出现的问题,给出了大量的典型案例,比如安全问题、网络方案的选择、高可用性方案及Trouble Shooting技巧等,有很强的可借鉴性。
无论是对于软件工程师、测试工程师、运维工程师、软件架构师、技术经理,还是对于资深IT人士来说,本书都极具参考价值。
Kubernetes重磅开山之作,针对Kubernetes版本和本书第1版进行大篇幅内容更新,全方位完美覆盖,可借鉴性极强
第1版推荐序

经过作者们多年的实践经验积累及近一年的精心准备,本书终于与我们大家见面了。我有幸作为首批读者,提前见证和学习了在云时代引领业界技术方向的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个月内完成了这部厚达500多页的Kubernetes权威指南。经过一年的高速发展,Kubernetes先后发布了1.1、1.2和1.3版本,每个版本都带来了大量的新特性,能够处理的应用场景也越来越丰富。本书遵循从入门到精通的学习路线,全书共分为六大章节,涵盖了入门、实践指南、架构原理、开发指南、高级案例、运维指南和源码分析等内容,内容详实、图文并茂,几乎囊括了Kubernetes 1.3版本的方方面面,无论是对于软件工程师、测试工程师、运维工程师、软件架构师、技术经理,还是对于资深IT人士来说,本书都极具参考价值。

吴治辉
惠普公司系统架构师

目录

第1章 Kubernetes 入门 1
1.1 Kubernetes 是什么.......................................................................................................................... 1
1.2 为什么要用Kubernetes ................................................................................................................ 4
1.3 从一个简单的例子开始............................................................................................................... 5
1.3.1 环境准备................................................................................................................................. 6
1.3.2 启动MySQL 服务................................................................................................................... 7
1.3.3 启动Tomcat 应用.................................................................................................................... 9
1.3.4 通过浏览器访问网页.............................................................................................................11
1.4 Kubernetes 基本概念和术语......................................................................................................12
1.4.1 Master ....................................................................................................................................12
1.4.2 Node.......................................................................................................................................13
1.4.3 Pod .........................................................................................................................................15
1.4.4 Label(标签)........................................................................................................................19
1.4.5 Replication Controller(RC)................................................................................................22
1.4.6 Deployment............................................................................................................................25
1.4.7 Horizontal Pod Autoscaler(HPA) .......................................................................................27
1.4.8 Service(服务).....................................................................................................................29
1.4.9 Volume(存储卷) ................................................................................................................35
1.4.10 Persistent Volume..................................................................................................................39
1.4.11 Namespace(命名空间).....................................................................................................40
1.4.12 Annotation(注解).............................................................................................................42
1.4.13 小结......................................................................................................................................42
第2章 Kubernetes 实践指南 43
2.1 Kubernetes 安装与配置...............................................................................................................43
2.1.1 安装Kubernetes.....................................................................................................................43
2.1.2 配置和启动Kubernetes 服务.................................................................................................45
2.1.3 Kubernetes 集群的安全设置..................................................................................................51
2.1.4 Kubernetes 的版本升级..........................................................................................................57
2.1.5 内网中的Kubernetes 相关配置.............................................................................................57
2.1.6 Kubernetes 核心服务配置详解..............................................................................................58
2.1.7 Kubernetes 集群网络配置方案..............................................................................................72
2.2 kubectl 命令行工具用法详解....................................................................................................80
2.2.1 kubectl 用法概述....................................................................................................................80
2.2.2 kubectl 子命令详解................................................................................................................82
2.2.3 kubectl 参数列表....................................................................................................................84
2.2.4 kubectl 输出格式....................................................................................................................84
2.2.5 kubectl 操作示例....................................................................................................................86
2.3 Guestbook 示例:Hello World...................................................................................................87
2.3.1 创建redis-master RC 和Service............................................................................................89
2.3.2 创建redis-slave RC 和Service ..............................................................................................91
2.3.3 创建frontend RC 和Service ..................................................................................................93
2.3.4 通过浏览器访问frontend 页面..............................................................................................96
2.4 深入掌握Pod.................................................................................................................................97
2.4.1 Pod 定义详解.........................................................................................................................97
2.4.2 Pod 的基本用法....................................................................................................................102
2.4.3 静态Pod ...............................................................................................................................107
2.4.4 Pod 容器共享Volume ..........................................................................................................108
2.4.5 Pod 的配置管理....................................................................................................................110
2.4.6 Pod 生命周期和重启策略....................................................................................................123
2.4.7 Pod 健康检查.......................................................................................................................124
2.4.8 玩转Pod 调度......................................................................................................................126
2.4.9 Pod 的扩容和缩容................................................................................................................135
2.4.10 Pod 的滚动升级..................................................................................................................139
2.5 深入掌握Service .........................................................................................................................143
2.5.1 Service 定义详解..................................................................................................................143
2.5.2 Service 基本用法..................................................................................................................145
2.5.3 集群外部访问Pod 或Service..............................................................................................150
2.5.4 DNS 服务搭建指南..............................................................................................................153
2.5.5 Ingress:HTTP 7 层路由机制..............................................................................................161
第3章 Kubernetes 核心原理 165
3.1 Kubernetes API Server 原理分析...........................................................................................165
3.1.1 Kubernetes API Server 概述.................................................................................................165
3.1.2 独特的Kubernetes Proxy API 接口.....................................................................................168
3.1.3 集群功能模块之间的通信...................................................................................................169
3.2 Controller Manager 原理分析.................................................................................................170
3.2.1 Replication Controller ...........................................................................................................171
3.2.2 Node Controller.....................................................................................................................173
3.2.3 ResourceQuota Controller.....................................................................................................174
3.2.4 Namespace Controller...........................................................................................................176
3.2.5 Service Controller 与Endpoint Controller............................................................................176
3.3 Scheduler 原理分析...................................................................................................................177
3.4 kubelet 运行机制分析...............................................................................................................181
3.4.1 节点管理...............................................................................................................................181
3.4.2 Pod 管理...............................................................................................................................182
3.4.3 容器健康检查.......................................................................................................................183
3.4.4 cAdvisor 资源监控...............................................................................................................184
3.5 kube-proxy 运行机制分析.......................................................................................................186
3.6 深入分析集群安全机制............................................................................................................190
3.6.1 API Server 认证....................................................................................................................190
3.6.2 API Server 授权...................................................................................................................192
3.6.3 Admission Control 准入控制..............................................................................................194
3.6.4 Service Account ....................................................................................................................195
3.6.5 Secret 私密凭据....................................................................................................................200
3.7 网络原理.......................................................................................................................................203
3.7.1 Kubernetes 网络模型............................................................................................................203
3.7.2 Docker 的网络基础..............................................................................................................205
3.7.3 Docker 的网络实现..............................................................................................................217
3.7.4 Kubernetes 的网络实现........................................................................................................225
3.7.5 开源的网络组件...................................................................................................................229
3.7.6 网络实战...............................................................................................................................234
第4章 Kubernetes 开发指南 247
4.1 REST 简述....................................................................................................................................247
4.2 Kubernetes API 详解...................................................................................................................249
4.2.1 Kubernetes API 概述............................................................................................................249
4.2.2 API 版本...............................................................................................................................254
4.2.3 API 详细说明.......................................................................................................................254
4.2.4 API 响应说明.......................................................................................................................256
4.3 使用Java 程序访问Kubernetes API......................................................................................258
4.3.1 Jersey....................................................................................................................................258
4.3.2 Fabric8 .................................................................................................................................270
4.3.3 使用说明...............................................................................................................................271
第5章 Kubernetes 运维指南 292
5.1 Kubernetes 集群管理指南.........................................................................................................292
5.1.1 Node 的管理.........................................................................................................................292
5.1.2 更新资源对象的Label.........................................................................................................294
5.1.3 Namespace:集群环境共享与隔离.....................................................................................295
5.1.4 Kubernetes 资源管理............................................................................................................299
5.1.5 Kubernetes 集群高可用部署方案........................................................................................333
5.1.6 Kubernetes 集群监控............................................................................................................343
5.1.7 kubelet 的垃圾回收(GC)机制.........................................................................................361
5.2 Kubernetes 高级案例..................................................................................................................362
5.2.1 ElasticSearch 日志搜集查询和展现案例............................................................................362
5.2.2 Cassandra 集群部署案例.....................................................................................................371
5.3 Trouble Shooting 指导................................................................................................................376
5.3.1 查看系统Event 事件............................................................................................................377
5.3.2 查看容器日志.......................................................................................................................379
5.3.3 查看Kubernetes 服务日志...................................................................................................379
5.3.4 常见问题...............................................................................................................................381
5.3.5 寻求帮助...............................................................................................................................384
5.4 Kubernetes v1.3 开发中的新功能..........................................................................................385
5.4.1 Pet Set(有状态的容器)....................................................................................................385
5.4.2 Init Container(初始化容器).............................................................................................388
5.4.3 Cluster Federation(集群联邦) .........................................................................................391
第6章 Kubernetes 源码导读 396
6.1 Kubernetes 源码结构和编译步骤...........................................................................................396
6.2 kube-apiserver 进程源码分析..................................................................................................400
6.2.1 进程启动过程.......................................................................................................................400
6.2.2 关键代码分析.......................................................................................................................402
6.2.3 设计总结...............................................................................................................................417
6.3 kube-controller-manager 进程源码分析................................................................................420
6.3.1 进程启动过程.......................................................................................................................420
6.3.2 关键代码分析.......................................................................................................................423
6.3.3 设计总结...............................................................................................................................431
6.4 kube-scheduler 进程源码分析..................................................................................................433
6.4.1 进程启动过程.......................................................................................................................434
6.4.2 关键代码分析.......................................................................................................................438
6.4.3 设计总结...............................................................................................................................445
6.5 kubelet 进程源码分析................................................................................................................447
6.5.1 进程启动过程.......................................................................................................................447
6.5.2 关键代码分析.......................................................................................................................452
6.5.3 设计总结...............................................................................................................................475
6.6 kube-proxy 进程源码分析........................................................................................................476
6.6.1 进程启动过程.......................................................................................................................476
6.6.2 关键代码分析.......................................................................................................................478
6.6.3 设计总结...............................................................................................................................493
6.7 kubectl 进程源码分析................................................................................................................494
6.7.1 kubectl create 命令...............................................................................................................495
6.7.2 rolling-update 命令...............................................................................................................499
后记.....................................................................................................505

本书勘误

印次
  • 页码:7  •  印次: 1

    aerfa 提交于 2017/1/24 10:03:35
    张国霞 确认于 2017/4/12 13:11:52
  • 页码:7  •  行数:倒数第4行  •  印次: 2

    将 mysql-rcredis-master-controller.yaml 修改为“mysql-rc.yaml”

    张国霞 提交于 2017/4/12 13:17:14
    张国霞 确认于 2017/4/12 13:20:27
  • 页码:9  •  行数:18  •  印次: 1

    代码 kind: ReplicationController上面插入一行代码 apiVersion: v1

    张国霞 提交于 2017/4/12 13:13:31
    张国霞 确认于 2017/4/12 13:20:14
  • 页码:9  •  行数:9  •  印次: 2

    将 6379 修改为:3306

    张国霞 提交于 2017/4/12 13:17:49
    张国霞 确认于 2017/4/12 13:20:34
  • 页码:11  •  行数:倒数第8行  •  印次: 1

    将 curl 192.168.18.131localhost:3001修改为:-curl 192.168.18.131:30001

    张国霞 提交于 2017/4/12 13:13:55
    张国霞 确认于 2017/4/12 13:19:44

读者评论

  • 1.3 从一个简单的例子开始 这一章中的java web 小程序可以提供下载吗

    卓明谷发表于 2017/6/30 23:42:29
    • 请到本书官方群联系群主确认。官方群地址见封底。多谢!

      张国霞发表于 2017/7/11 13:48:22

电子书版本

  • Epub
  • Mobi

图书类别

相关图书

架构解密:从分布式到微服务(第2版)

吴治辉 (作者)

微服务、云原生、Kubernetes、Service Mesh是分布式领域的热点技术,它们并不是凭空出现的,一定继承了某些“前辈”的优点。我们不仅要了解这些技术...

 

容器即服务:从零构建企业级容器集群

林帆 (作者)

本书介绍了容器即服务的发展过程和主要技术,重点阐述当下主流的SwarmKit、Kubernetes、Mesos和Rancher 开源容器集群方案,并探讨了容器技...

¥69.00

自己动手写Docker

陈显鹭 (作者)

通过讲解 Docker 使用到的各种底层技术,例如Namespace、Cgroups等来自己一步步动手完成一个简单版本的Docker。在自己动手的过程中,从而对...

¥39.00

Docker实战

Jeff Nickoloff (作者) 杨润青 (译者)

本书开始于一个明确的虚拟化Docker模型说明,展示了如何创建、部署和管理驻留在Docker容器中的应用程序。通过Docker中心和其他注册中心,它提供了具体的...

¥59.00

Docker容器实战:原理、架构与应用

廖煜 晏东 张启玉 刘刚 (作者)

本书介绍了Docker容器技术的背景和基本原理,以及如何定制化符合用户要求的Docker Daemon,增加安全性、提高效率。.镜像提供了千差万别的服务,每一个...

¥55.00

高性能Docker

(美)Allan Espinosa(艾伦·埃斯皮诺萨) (作者) 陈杰 (译者)

你将会学到:优化您的Dockerfiles以及Docker容器的性能及大小。使用Chef大规模安装和优化Docker主机。使用负载平衡器部署容器而无需停机。使用...

¥69.00