Kubernetes权威指南:从Docker到Kubernetes实践全接触(第6版)(上)
  • 推荐0
  • 收藏0
  • 浏览1.0K

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

龚正,吴治辉,闫健勇 (作者)  张国霞 (责任编辑)

  • 书  号:978-7-121-47927-4
  • 出版日期:2024-07-01
  • 页  数:
  • 开  本:
  • 出版状态:上市销售
  • 维护人:张国霞
本书是《Kubernetes权威指南:从Docker到Kubernetes实践全接触》(第6版)的上册,总计9章,涵盖了Kubernetes v1.29及之前版本的主要特性。第1章首先从一个简单的示例开始,让读者通过动手实践初步感受Kubernetes的强大;然后讲解Kubernetes的概念、术语。考虑到Kubernetes的概念、术语繁多,所以从它们的用途及相互关系入手进行讲解,以期初学者能快速、准确、全面、深刻地理解这部分内容。第2章围绕Kubernetes的安装和配置进行讲解。如果要在生产级应用中部署Kubernetes,则建议读者将本章内容全部实践一遍,否则可以选择其中部分内容进行实践。其中比较重要的是Kubernetes的命令行部分,对这部分操作得越熟练,后面进行研发或运维就越轻松。第3章全面、深入地讲解了Pod的方方面面,其中非常有挑战性的是Pod调度部分的内容,这也是生产实践中相当实用的知识和技能。第4章围绕Pod工作负载进行讲解,这些工作负载分别实现了无状态服务、有状态服务和批处理任务的不同需求。第5章围绕Service进行深入讲解,涉及服务发现、DNS、IPv6及Ingress等高级特性。第6、7章全面且深入地讲解Kubernetes的运行机制和原理,涉及API Server、Controller、Scheduler、kubelet、kube-proxy等几个核心组件的作用、原理和实现方式等,可以让读者加深对Kubernetes的整体认知,使其在遇到问题时能更快地找到解决方案。第8、9章主要讲解Kubernetes运维方面的技能和知识,涉及集群多租户模式下的资源管理方案、Pod的QoS管理,以及基于NUMA资源亲和性的资源分配管理、Pod调度、故障排查等。
本书适合资深IT从业者、研发部门主管、架构师(开发语言不限)、研发工程师、运维工程师、软件QA和测试工程师(两年以上经验),以及以技术为主的售前工作人员(两年以上经验)阅读和参考。
Kubernetes权威指南第6版,基于K8s 1.29,内容全面更新,拆分为上下两册,本书为上册,提供源码下载及读者交流群,容器领域公认精品
·龚 正·
HPE高级顾问,拥有二十多年IT从业经验,在云计算、大数据、大型企业级应用等领域拥有丰富的咨询、规划、架构设计和实施经验,负责过多个大型云平台的规划和建设,是电信、金融、互联网等领域的资深行业专家,也是《Kubernetes权威指南:企业级容器云实战》等书作者。
·吴治辉·
领航磐云资深架构师,拥有二十多年软件研发经验,专注于云原生、容器化、企业数字化转型、AI赋能企业应用领域的技术研究和产品研发。拥有丰富的大型项目架构设计经验,是业界少有的具备很强编码能力的资深架构师,也是《ZeroC Ice权威指南》《架构解密:从分布式到微服务》《Kubernetes权威指南:企业级容器云实战》《区块链轻松上手》等书作者
·闫健勇·
HPE高级项目经理、总架构师,拥有二十多年电信行业系统建设经验,主导了多项电信大型系统的架构设计和管理,对于云计算和大数据在电信行业中的应用拥有丰富的经验,也是《Kubernetes权威指南:企业级容器云实战》等书作者。
短短几年,Kubernetes已从一个不为人知的新生事物发展成为一个影响全球IT技术的基础设施平台,并成功推动了云原生时代的到来,使微服务架构、Service Mesh、Serverless、边缘计算等热门技术加速普及和落地。Kubernetes不但一跃成为云原生应用的全球级基础平台,还促进了操作系统层面的容器化变革,让Linux容器里的应用和Windows容器里的应用在Kubernetes的统一架构集群中互联互通。
目前,在GitHub上已有超过两万名开源志愿者参与Kubernetes项目,使之成为开源领域发展速度超快的项目之一。
《Kubernetes权威指南:从Docker到Kubernetes实践全接触》由慧与中国通信和媒体解决方案领域的资深专家合力撰写而成,对Kubernetes在国内的普及和推广做出了巨大的贡献。本书第6版的出版也离不开领航磐云技术专家的全力支持。

--------------------读者对象--------------------
《Kubernetes权威指南:从Docker到Kubernetes实践全接触》一书的读者对象范围很广,甚至一些高校也将本书作为参考教材。考虑到Kubernetes的技术定位,我们建议以下读者购买和阅读本书:资深IT从业者、研发部门主管、架构师(开发语言不限)、研发工程师、运维工程师、软件QA和测试工程师(两年以上经验),以及以技术为主的售前工作人员(两年以上经验)。
建议读者在计算机上安装合适的虚拟软件,部署Kubernetes环境并动手实践书中的大部分示例。如果读者用的是Windows 10及以上版本,则可以通过WSL2虚拟机技术快速部署Kubernetes实例,也可以在公有云上部署或者使用现有的Kubernetes环境,降低入门难度。
--------------------本书讲了什么--------------------
截至本书交稿,Kubernetes已经发布29个大版本,每个版本都带来了大量的新特性,使Kubernetes能够覆盖的应用场景越来越多。
《Kubernetes权威指南:从Docker到Kubernetes实践全接触》始终采用从入门到精通的讲解风格,内容涵盖入门、安装、实践、核心原理、网络与存储、运维、开发、新特性演进等,几乎囊括了Kubernetes当前主流版本的方方面面。当然,因为需要涵盖的内容非常多,所以本书从第6版开始分为上下两册。
--------------------上册内容架构--------------------
第1章首先从一个简单的示例开始,让读者通过动手实践初步感受Kubernetes的强大;然后讲解Kubernetes的概念、术语。考虑到Kubernetes的概念、术语繁多,所以从它们的用途及相互关系入手进行讲解,以期初学者能快速、准确、全面、深刻地理解这部分内容。
第 2 章围绕Kubernetes的安装和配置进行讲解。如果要在生产级应用中部署Kubernetes,则建议读者将本章内容全部实践一遍,否则可以选择其中部分内容进行实践。其中比较重要的是Kubernetes的命令行部分,对这部分操作得越熟练,后面进行研发或运维就越轻松。
第3~5章对于大部分读者来说,是很重要的章节,也是学会Kubernetes应用建模的关键章节。第3章全面、深入地讲解了Pod的方方面面,其中非常有挑战性的是Pod调度部分的内容,这也是生产实践中相当实用的知识和技能。第4章围绕Pod工作负载进行讲解,这些工作负载分别实现了无状态服务、有状态服务和批处理任务的不同需求。第5章围绕Service进行深入讲解,涉及服务发现、DNS、IPv6及Ingress等高级特性。
第6、7章全面且深入地讲解Kubernetes的运行机制和原理,涉及API Server、Controller Manager、Scheduler、kubelet、kube-proxy等几个核心组件的作用、原理和实现方式等,可以让读者加深对Kubernetes的整体认知,在遇到问题时能更快地找到解决方案。
第8、9章主要讲解Kubernetes运维方面的技能和知识,涉及集群多租户模式下的资源管理方案、Pod的QoS管理,以及基于NUMA资源亲和性的资源分配管理、Pod调度、故障排查等。
--------------------下册内容架构--------------------
第1、2章围绕Kubernetes认证机制和安全机制进行深入讲解,既有实例,又有深入分析,可以让读者更容易理解Kubernetes中的认证机制、授权模式、准入控制机制,以及Pod的安全管理机制。
第3、4章围绕容器网络和Kubernetes网络进行深入讲解。第3章讲解容器网络基础,对局域网、互联网和常见网络设备等知识进行介绍;第4章讲解Kubernetes网络原理,对Kubernetes网络模型、CNI网络模型、开源容器网络方案都做了详细介绍,对Kubernetes防火墙相关的网络策略也做了相关分析。
第 5、6 章围绕Kubernetes存储进行深入讲解,涉及持久卷相关的 PV、PVC、StorageClass、静态和动态存储管理,以及CSI存储机制的原理和发展状况。
第7、8章围绕Kubernetes API和开发实战进行讲解,涉及Kubernetes资源对象、Kubernetes API、CRD和Operator扩展机制,以及如何通过swagger-editor快速调用和测试Kubernetes API,并针对Operator开发给出完整的示例说明。
第9章对Kubernetes的新功能做了一些补充说明,包括Kubernetes对Windows容器的支持、如何在Windows Server上部署Kubernetes、Kubernetes对GPU的支持和发展趋势、Kubernetes的自动扩缩容机制等,对Kubernetes的生态系统与演进路线也进行了深入讲解。
附录A深入讲解了Kubernetes的核心服务配置。
--------------------读者服务--------------------
我们为读者提供了配套源码及读者交流群,读者可参考本书封底的“读者服务”获取配套源码下载链接,以及加入本书读者交流群。
-----------------------致谢-----------------------
感谢神州数码集团及领航磐云的大力支持。
感谢电子工业出版社工作严谨、高效的张国霞编辑,她在成书过程中对笔者的指导、协助和鞭策,是本书得以完成的重要助力。

目录

目 录
第1章 Kubernetes入门 1
1.1 了解Kubernetes 2
1.2 了解Kubernetes中的资源对象 3
1.3 了解Kubernetes集群 5
1.3.1 Master 5
1.3.2 Node 5
1.4 了解Kubernetes应用 11
1.4.1 Service与Pod 11
1.4.2 Label与Label Selector 15
1.4.3 Pod与Deployment 18
1.4.4 Service的ClusterIP地址 21
1.4.5 Service的外网访问问题 24
1.4.6 有状态应用集群 28
1.4.7 批处理应用 29
1.4.8 应用的配置问题 31
1.4.9 应用自动化运维相关的重要对象 32
1.5 了解Kubernetes存储 33
1.5.1 emptyDir 34
1.5.2 hostPath 35
1.5.3 公有云Volume 35
1.5.4 其他类型的Volume 36
1.5.5 动态存储管理 36
1.6 了解Kubernetes安全 38
1.7 从一个简单的示例开始 40
1.7.1 环境准备 41
1.7.2 启动MySQL服务 41
1.7.3 启动Tomcat应用 44
1.7.4 通过浏览器访问网页 46

第2章 Kubernetes安装和配置指南 48
2.1 系统要求 49
2.2 通过kubeadm快速安装Kubernetes集群 50
2.2.1 安装kubeadm、kubelet和kubectl 50
2.2.2 修改kubeadm的默认配置 51
2.2.3 下载Kubernetes相关镜像 53
2.2.4 通过kubeadm init命令安装Master 53
2.2.5 将新的Node加入集群 58
2.2.6 安装CNI网络插件 60
2.2.7 验证Kubernetes集群是否正常工作 62
2.3 通过二进制文件安装Kubernetes集群 63
2.3.1 Master的高可用部署架构 63
2.3.2 创建CA根证书 64
2.3.3 部署安全的etcd高可用集群 65
2.3.4 部署安全的Kubernetes Master高可用集群 70
2.3.5 部署各个Node的服务 87
2.4 Kubernetes集群的版本更新 91
2.4.1 以二进制方式部署的Kubernetes集群的版本更新 91
2.4.2 以kubeadm方式部署的Kubernetes集群的版本更新 91
2.5 CRI详解 94
2.5.1 CRI概述 94
2.5.2 CRI的主要组件 94
2.5.3 Pod和容器的生命周期管理 95
2.5.4 面向容器级别的设计思路 96
2.6 kubectl用法详解 97
2.6.1 kubectl用法概述 97
2.6.2 kubectl子命令详解 98
2.6.3 kubectl可操作的资源对象详解 101
2.6.4 kubectl的公共参数说明 103
2.6.5 kubectl格式化输出 105
2.6.6 kubectl的日志输出级别 106
2.6.7 常见的kubectl操作示例 107

第3章 深入掌握Pod 112
3.1 Pod定义详解 113
3.2 Pod的基本用法 118
3.3 静态Pod 124
3.4 Pod容器共享Volume 126
3.5 Pod的配置管理 128
3.5.1 ConfigMap概述 128
3.5.2 创建ConfigMap 129
3.5.3 在Pod中使用ConfigMap 144
3.5.4 ConfigMap的可选设置 151
3.5.5 使用ConfigMap时的限制条件 153
3.6 在容器内获取Pod信息(Downward API) 153
3.6.1 环境变量方式 154
3.6.2 Volume挂载方式 158
3.6.3 Downward API支持设置的Pod和Container信息 162
3.7 Pod的生命周期管理 164
3.7.1 Pod的阶段(Phase) 164
3.7.2 Pod的状况(Condition) 165
3.7.3 容器的状态(State) 170
3.7.4 Pod的重启策略(RestartPolicy) 170
3.7.5 Pod的终止和垃圾清理 171
3.8 容器的探针和健康检查机制 173
3.9 初始化容器(Init Container) 181
3.9.1 初始化容器概述 181
3.9.2 初始化容器示例 183
3.9.3 使用初始化容器时的注意事项 188
3.9.4 将初始化容器作为长时间运行的边车容器 188

第4章 Pod工作负载详解 193
4.1 Pod的工作负载管理机制概述 194
4.2 Deployment:面向无状态应用的Pod副本集管理 196
4.2.1 Deployment提供的管理功能 197
4.2.2 Deployment的配置信息 199
4.2.3 Deployment的更新机制 200
4.2.4 Deployment的回滚 206
4.2.5 Deployment部署的暂停和恢复 209
4.2.6 Deployment的生命周期 211
4.3 DaemonSet:在每个Node上仅运行一个Pod 213
4.3.1 DaemonSet概述 213
4.3.2 DaemonSet的配置信息 215
4.3.3 DaemonSet的更新策略 215
4.3.4 DaemonSet的回滚 218
4.4 StatefulSet:面向有状态应用的Pod副本集管理 220
4.4.1 StatefulSet的主要配置和工作机制 221
4.4.2 StatefulSet的Pod水平扩缩容机制 228
4.4.3 StatefulSet的更新策略 229
4.4.4 StatefulSet的Pod管理策略 232
4.4.5 StatefulSet的PVC存储保留策略 235
4.4.6 使用StatefulSet搭建MongoDB集群 236
4.5 Pod水平扩缩容机制 247
4.5.1 手动扩缩容机制 247
4.5.2 自动扩缩容机制 249
4.6 Job:批处理任务 274
4.6.1 Job的主要配置和工作机制 275
4.6.2 Job的并行处理机制和常用模式 279
4.6.3 Pod失效时的处理机制 289
4.6.4 Job的终止与清理机制 299
4.6.5 Job的挂起与恢复 303
4.7 CronJob:定时任务 306
4.7.1 CronJob的定时表达式 307
4.7.2 编写一个CronJob配置文件 308
4.7.3 CronJob工作机制的不足之处 311

第5章 深入掌握Service 312
5.1 Service定义详解 313
5.2 Service的概念和原理 315
5.2.1 Service和Endpoint概述 315
5.2.2 Service的负载均衡机制 320
5.2.3 Service的多端口设置 325
5.2.4 将外部服务定义为Service 326
5.2.5 Service的类型 327
5.2.6 Headless Service 335
5.2.7 为服务设置外部IP地址 338
5.2.8 Service支持的网络协议 338
5.2.9 Kubernetes的服务发现机制 340
5.2.10 端点分片 342
5.2.11 拓扑感知路由机制 347
5.3 DNS服务搭建和配置指南 350
5.3.1 修改每个Node上kubelet的DNS启动参数 352
5.3.2 部署CoreDNS服务 352
5.3.3 服务名的DNS解析 356
5.3.4 CoreDNS的配置说明 358
5.4 Node本地DNS缓存服务搭建和配置指南 360
5.5 Service和Pod的DNS域名相关特性 367
5.5.1 Service的DNS域名 368
5.5.2 Pod的DNS域名 370
5.5.3 Pod自定义hostname和subdomain 371
5.5.4 FQDN格式的Pod主机名设置 374
5.5.5 Pod的DNS策略 375
5.5.6 Pod中的自定义DNS配置 376
5.5.7 Windows Node的DNS解析机制说明 377
5.6 Ingress 7层路由机制 378
5.6.1 一个完整的例子(Ingress Controller+Ingress策略+客户端访问) 379
5.6.2 Ingress资源对象详解 390
5.6.3 Ingress策略配置详解 397
5.6.4 Ingress的TLS安全设置 402
5.6.5 Ingress的继任者——Gateway API简介 408
5.7 Kubernetes对IPv4和IPv6双栈功能的支持 411
5.7.1 Kubernetes集群启用IPv4和IPv6双栈功能 411
5.7.2 Pod双栈IP地址配置 414
5.7.3 Service双栈IP地址配置 417

第6章 Master核心组件的运行机制 423
6.1 Kubernetes架构解析 424
6.1.1 以API Server为中心的架构 424
6.1.2 全自动的资源管控能力 426
6.1.3 以开放为基础的演进思路 431
6.1.4 拥抱新技术 433
6.1.5 安全至上 434
6.2 API Server原理解析 437
6.2.1 API Server概述 438
6.2.2 API Server架构解析 444
6.2.3 独特的Kubernetes Proxy API 448
6.2.4 集群功能模块之间的通信 450
6.2.5 API Server网络隔离的设计 452
6.3 Controller Manager原理解析 454
6.3.1 Deployment Controller 457
6.3.2 Node Controller 458
6.3.3 ResourceQuota Controller 461
6.3.4 Namespace Controller 463
6.3.5 Endpoint Controller 464
6.4 Scheduler原理解析 465
6.4.1 Scheduler的调度流程 466
6.4.2 Scheduler Framework 468
6.4.3 Scheduling Profiles 472
6.4.4 深入分析抢占式调度 473

第7章 Node核心组件的运行机制 480
7.1 kubelet运行机制解析 481
7.1.1 资源管理 482
7.1.2 Pod管理 517
7.1.3 性能指标API 524
7.1.4 容器运行时管理 527
7.2 kube-proxy运行机制解析 533
7.2.1 第一代Proxy 533
7.2.2 第二代Proxy 535
7.2.3 第三代Proxy 536
7.3 Kubernetes中的垃圾回收机制 537
7.3.1 Pod对象的垃圾回收 537
7.3.2 Job对象的垃圾回收 538
7.3.3 无主对象的垃圾回收 539
7.3.4 容器和镜像的垃圾回收 540
7.3.5 PV对象的垃圾回收 540
7.3.6 Node与Node Lease对象的垃圾回收 542

第8章 Kubernetes运维管理基础 544
8.1 基础集群运维 545
8.1.1 常用运维技巧 545
8.1.2 Node的运维管理 552
8.1.3 PodDisruptionBudget——出现干扰时的Pod保护机制 557
8.1.4 Pod中的多个容器共享进程命名空间 563
8.1.5 使用CEL校验数据 566
8.2 kustomize的基础操作 570
8.2.1 kustomize概述 570
8.2.2 kustomize的常见例子 571
8.2.3 kustomization的高级用法 574
8.3 Helm的基础操作 578
8.3.1 Helm——应用包管理 578
8.3.2 Helm——Chart仓库 581
8.3.3 Helm——部署应用 584
8.3.4 Helm——应用更新和回滚 588
8.3.5 Helm——卸载应用 591
8.4 集群监控 592
8.4.1 Kubernetes核心组件的性能监控 592
8.4.2 Metrics Server实践 595
8.4.3 Prometheus性能监控平台实践 598
8.4.4 Kubernetes日志管理实践 604
8.4.5 使用Dashboard监控集群资源状态和性能 634

第9章 Kubernetes运维管理进阶 641
9.1 多租户计算资源管理实践 642
9.1.1 集群计算资源的规划 642
9.1.2 多租户资源管理实践 650
9.1.3 Pod的QoS管理实践 665
9.2 基于NUMA亲和性的资源分配管理 669
9.2.1 CPU Manger的配置 670
9.2.2 Memory Manager的配置 674
9.2.3 Topology Manager的配置 675
9.3 Pod的调度管理实践指南 677
9.3.1 基于Node Label的调度策略 677
9.3.2 Node亲和性调度策略 679
9.3.3 Pod间的亲和性与反亲和性调度策略 683
9.3.4 指定Node名称的定向调度策略 690
9.3.5 Taint和Toleration(污点和容忍度)的调度策略 691
9.3.6 Pod Priority Preemption:Pod优先级和抢占调度策略 696
9.3.7 多调度器管理 700
9.3.8 Pod拓扑分布约束(Topology Spread Constraints)调度策略 704
9.4 故障排查指南 713
9.4.1 集群基础故障排查指南 713
9.4.2 应用故障排查指南 720
9.4.3 常见问题指南 725
9.4.4 寻求帮助 730

读者评论