- ISBN:9787121483233
- 装帧:平装-胶订
- 册数:暂无
- 重量:暂无
- 开本:16开
- 页数:696
- 出版时间:2024-08-01
- 条形码:9787121483233 ; 978-7-121-48323-3
本书特色
·专家力荐:业内专家曹伟(鸣嵩)、刘君倾情力荐。 ·深入解析:以Kubernetes 1.25.0源码为基础,详解核心组件和实现原理,带你全面掌握容器编排技术。 ·提升竞争力:通过学习Kubernetes源码,提升在云计算领域的专业能力,增强职业竞争力。 ·实用指南:帮助开发者、运维工程师及架构师高效管理大规模多容器集群,应对生产环境中的复杂编排需求。 ·技术精髓:适合对容器技术和云计算感兴趣的读者,深入了解Kubernetes,掌握前沿技术,迈向技术巅峰。 从一个云数据库从业者的角度来看,Kubernetes正在撬动云计算的基石。Kubernetes可以屏蔽多云、混合云laaS层面的差异,可以向业务提供Pod、Service、Deployment、StatefulSet等更高层次的统一抽象。在Kubernetes的基础上,企业可以借助生态搭建各种PaaS服务,如管理数据库的KubeBlocks。Kubernetes已经是云时代的Linux了,云计算的从业者、使用者都必须知晓Kubernetes的理念、原理及如何扩展Kubernetes的功能。这本书可以帮助读者从源码角度切入,深入掌握Kubernetes,走在技术前沿。 ——曹 伟(鸣嵩) 云猿生数据CEO,阿里云前数据库总经理,PolarDB创始人 《深入理解Kubemetes源码》一书从多维度、深入浅出地剖析了Kubernetes架构及源码运行机制,非常值得学习。同时,作者在一线互联网大厂有超大规模容器云服务开发和运维等实践经验,在这本书中他们给出了自己非常独到的见解和分析。 ——刘 君 快手SRE负责人
内容简介
在过去几年中,容器技术的广泛应用推动了容器编排技术的迅猛发展,尤其是Kubernetes的兴起。作为当前非常受欢迎的容器编排系统,Kubemetes能够有效应对生产环境中复杂的编排需求,帮助企业实现大规模多容器集群的高效管理。本书将Kubemetes 1.25.0版本源码作为剖析对象,深入探讨其核心组件和实现原理。通过学习Kubernetes源码,读者不仅能掌握容器编排技术的精髓,还能提升自身在云计算领域的竞争力。
本书适合对容器技术和云计算感兴趣的开发者、运维工程师及架构师参考和阅读。
目录
1.1 Kubernetes发展历史 1
1.2 Kubernetes架构 2
1.3 Kubernetes各组件功能 3
1.3.1 kubectl 4
1.3.2 client-go 4
1.3.3 kube-apiserver 4
1.3.4 kube-controller-manager 4
1.3.5 kube-scheduler 5
1.3.6 kubelet 5
1.3.7 kube-proxy 6
1.3.8 Container Runtime 6
1.4 Kubernetes Project Layout设计 7
第2章 Kubernetes构建过程 10
2.1 构建方式 10
2.2 一切都始于Makefile 12
2.3 本地环境构建 13
2.3.1 本地环境构建命令 13
2.3.2 本地环境构建过程 14
2.4 容器环境构建 16
2.4.1 容器环境构建命令 16
2.4.2 容器环境构建过程 16
第3章 Kubernetes核心数据结构 19
3.1 初识数据结构 19
3.2 基本概念 19
3.2.1 API的层次结构 19
3.2.2 版本控制 20
3.2.3 组 21
3.2.4 API术语 22
3.2.5 API资源组成 25
3.2.6 版本化资源与未版本化资源 26
3.2.7 内部版本与外部版本 27
3.3 Kubernetes API的数据结构 28
3.3.1 APIGroup、APIVersions 28
3.3.2 APIResource 30
3.3.3 GVK和GVR 32
3.3.4 内置资源全景图 33
3.4 Kubernetes资源定义 35
3.4.1 内部版本定义 35
3.4.2 外部版本定义 36
3.5 将资源注册到Scheme中 36
3.5.1 资源类型注册入口 37
3.5.2 Scheme的数据结构 38
3.5.3 Scheme的初始化 40
3.5.4 SchemeBuilder资源注册 41
3.5.5 资源外部版本注册 43
3.5.6 资源内部版本注册 44
3.5.7 所有资源的注册入口 45
3.5.8 资源注册表的查询方法 47
3.5.9 资源对象的创建 48
3.5.10 资源对象的转换 48
3.5.11 资源对象默认值的设置 49
3.5.12 资源字段的转换 49
3.6 对象体系设计 49
3.6.1 资源对象的基本信息 49
3.6.2 对象体系类图 50
3.6.3 runtime.Object 51
3.6.4 metav1.TypeMeta 52
3.6.5 metav1.ObjectMeta 52
3.6.6 Unstructured 53
3.7 runtime.Codec资源编/解码 55
3.7.1 编/解码数据结构 56
3.7.2 CodecFactory实例化 57
3.7.3 codec编/解码实现类 60
3.7.4 json.Serializer编/解码 64
3.7.5 protobuf.Serializer编/解码 65
3.7.6 UnstructuredJSONScheme实现类 67
3.7.7 NegotiatedSerializer 67
3.7.8 ParameterCodec 69
3.7.9 runtime包下的Codec相关函数 71
3.7.10 Codec核心调用链路 72
3.7.11 Codec的使用方式 74
3.8 Converter资源版本转换器 75
3.8.1 Converter的数据结构 76
3.8.2 Converter转换函数的注册 77
3.8.3 Converter的初始化 77
3.8.4 Converter资源版本转换的实现 78
3.9 使用RESTMapper管理GVR和GVK映射 79
3.9.1 RESTMapper的数据结构 80
3.9.2 RESTMapper实现类 81
3.9.3 DefaultRESTMapper默认实现类 82
3.9.4 PriorityRESTMapper优先级映射 83
3.9.5 DeferredDiscoveryRESTMapper实现类 84
3.9.6 RESTMapper的使用 85
3.9.7 RESTMapping的数据结构及典型用法 85
第4章 Kubernetes核心资源对象 87
4.1 初识Kubernetes资源对象 87
4.2 metav1.ObjectMeta属性元数据 88
4.2.1 Name 88
4.2.2 GenerateName 89
4.2.3 Annotation 89
4.2.4 Generation 89
4.2.5 ResourceVersion 90
4.2.6 OwnerReference 91
4.2.7 Finalizers 92
4.2.8 ManagedFields 94
4.3 Pod资源对象 99
4.3.1 PodSpec字段详解 100
4.3.2 Container字段详解 110
4.3.3 Pod创建流程 114
4.3.4 Pause容器及创建流程 115
4.3.5 PodSpec生成容器参数 122
4.3.6 容器的通用创建流程 124
4.3.7 资源配额与cgroup 126
4.3.8 QoS与驱逐顺序 131
4.3.9 静态Pod 135
4.3.10 健康检查 137
4.3.11 Pod的状态 140
4.3.12 原地升级 144
4.4 工作负载资源 146
4.4.1 Deployment 146
4.4.2 ReplicaSet 153
4.4.3 StatefulSet 156
4.4.4 DaemonSet 160
4.4.5 Job 163
4.4.6 CronJob 166
4.5 发现和负载均衡资源 169
4.5.1 Service 169
4.5.2 Ingress 175
4.5.3 Endpoints 177
4.5.4 EndpointSlice 178
4.5.5 NetworkPolicy 182
4.6 配置和存储资源 185
4.6.1 卷 185
4.6.2 PV与PVC 186
4.6.3 StorageClass 191
4.7 自定义资源 194
4.7.1 概述 194
4.7.2 Operator 196
4.7.3 controller-runtime 197
4.7.4 Kubebuilder 198
第5章 client-go编程式交互 200
5.1 初识client-go 200
5.2 客户端 200
5.2.1 kubeconfig配置管理 201
5.2.2 RESTClient客户端 204
5.2.3 ClientSet客户端 207
5.2.4 DynamicClient客户端 210
5.2.5 DiscoveryClient发现客户端 212
5.3 Informer机制 214
5.3.1 Informer使用示例 214
5.3.2 Informer架构 216
5.3.3 Reflector数据同步 217
5.3.4 DeltaFIFO操作队列 223
5.3.5 Indexer资源缓存 226
5.3.6 processor资源处理 230
5.3.7 workqueue工作队列 233
5.4 常用工具类 240
5.4.1 事件管理机制 240
5.4.2 Leader选举机制 247
第6章 kubectl命令式交互 256
6.1 初识kubectl 256
6.2 kubectl执行流程 256
6.2.1 初始化命令对象 257
6.2.2 补全命令参数 257
6.2.3 校验命令参数 258
6.2.4 执行命令输出结果 258
6.3 kubectl缓存机制 263
6.3.1 缓存数据结构 264
6.3.2 缓存机制详解 265
6.3.3 缓存使用场景 269
6.4 kubectl变更比对策略 272
6.4.1 变更比对策略介绍 272
6.4.2 服务端应用和客户端应用 272
6.4.3 策略比对器和JSON比对器 274
6.4.4 双路合并和三路合并 275
6.5 kubectl扩展命令 277
6.5.1 扩展命令介绍 277
6.5.2 扩展命令实现原理 277
6.5.3 扩展命令管理器Krew 278
第7章 etcd存储核心实现 280
7.1 初识etcd存储 280
7.2 etcd存储架构设计 280
7.3 RESTStorage资源存储接口 282
7.4 genericregistry.Store通用操作封装 283
7.4.1 标准存储实现 283
7.4.2 版本冲突检测 284
7.4.3 通用钩子函数 284
7.4.4 DryRun实现原理 287
7.5 storage.Interface通用存储接口 288
7.6 Cacher Storage缓存层 290
7.6.1 Cacher Storage缓存架构 291
7.6.2 ResourceVersion资源版本号 295
7.6.3 watchCache缓存滑动窗口 297
7.7 Underlying Storage底层存储对象 300
7.8 Codec数据编/解码 301
7.9 Strategy预处理 304
7.9.1 Create Strategy预处理 304
7.9.2 Update Strategy预处理 307
7.9.3 Delete Strategy预处理 308
第8章 kube-apiserver核心实现 310
8.1 初识kube-apiserver 310
8.2 网络通信框架 311
8.2.1 go-restful框架 311
8.2.2 Protobuf序列化 314
8.3 kube-apiserver架构设计 319
8.4 kube-apiserver启动流程 321
8.4.1 Scheme资源注册 322
8.4.2 Cobra命令行参数解析 324
8.4.3 创建API Server通用配置 325
8.4.4 创建APIExtensionsServer 336
8.4.5 创建KubeAPIServer 345
8.4.6 创建AggregatorServer 353
8.4.7 GenericAPIServer初始化 360
8.4.8 准备和启动HTTPS服务 362
8.5 请求处理流程 367
8.6 权限控制体系 368
8.7 认证 369
8.7.1 RequestHeader认证 370
8.7.2 ClientCA认证 372
8.7.3 TokenAuth认证 373
8.7.4 ServiceAccountAuth认证 374
8.7.5 BootstrapToken认证 377
8.7.6 OIDC认证 379
8.7.7 WebhookTokenAuth认证 381
8.7.8 Anonymous认证 383
8.8 授权 383
8.8.1 AlwaysAllow授权 386
8.8.2 AlwaysDeny授权 387
8.8.3 ABAC授权 388
8.8.4 Webhook授权 389
8.8.5 RBAC授权 391
8.8.6 Node授权 396
8.9 准入控制器 397
8.9.1 内置插件介绍 398
8.9.2 内部实现原理 401
8.9.3 MutatingAdmissionWebhook准入控制器 404
8.9.4 ValidatingAdmissionWebhook准入控制器 411
8.10 信号处理机制 416
8.10.1 常驻进程实现 416
8.10.2 进程的优雅关闭 417
8.10.3 向systemd报告进程状态 419
8.11 List-Watch的实现原理 420
8.11.1 长连接通信协议 420
8.11.2 List-Watch的核心原理 425
第9章 kube-scheduler核心实现 430
9.1 初识kube-scheduler 430
9.1.1 kube-scheduler调度模型 430
9.1.2 kube-scheduler内部架构 431
9.1.3 kube-scheduler事件驱动 434
9.2 kube-scheduler启动流程 437
9.2.1 Cobra命令行参数解析 438
9.2.2 实例化Scheduler对象 439
9.2.3 运行EventBroadcaster事件管理器 442
9.2.4 运行HTTPS Server 442
9.2.5 运行Informer同步资源 443
9.2.6 执行Leader选举 444
9.2.7 运行调度器 445
9.3 Scheduling Framework 445
9.3.1 诞生背景 445
9.3.2 核心架构 446
9.4 调度器运行流程 452
9.4.1 整体运行流程 452
9.4.2 Scheduling Cycle 454
9.4.3 Binding Cycle 462
9.5 优先级与抢占机制 464
9.5.1 Pod优先级 465
9.5.2 Pod驱逐抢占机制 466
作者简介
郑东旭(Derek Zheng),BFE(万亿流量转发引擎)开源项目的作者之一,擅长Linux下高性能服务器的开发,对云计算、区块链相关技术领域有深刻的理解。邱世达,云原生技术专家,热爱开源事业,长期参与Kubernetes社区贡献,Kubernetes Contributor Top 30,Sig Cluster Lifecycle成员,Kubeadm项目维护者之一,具备多年云计算领域研究工作经验。冀超,曾在百度等多家互联网公司任职,参与过公有云和公司内的云原生平台建设,具有多年Kubernetes使用和开发经验。李晋林,长期致力于云原生领域,对Kubernetes有深入理解和研究。在金融交易系统中拥有多年的Kubernetes使用和二次开发经验,主要主导公司业务上云、线上流量迁移等工作。杨川胡(阳明),云原生爱好者,k8s技术圈社区作者,云原生学习网站优点知识创始人。周世伟,资深码农,云原生爱好者和践行者,擅长Kubernetes、服务网格开发,技术宅。
-
深度学习的数学
¥43.5¥69.0 -
全图解零基础word excel ppt 应用教程
¥12.0¥48.0 -
机器学习
¥59.4¥108.0 -
有限与无限的游戏:一个哲学家眼中的竞技世界
¥37.4¥68.0 -
智能硬件项目教程:基于ARDUINO(第2版)
¥31.9¥65.0 -
硅谷之火-人与计算机的未来
¥14.3¥39.8 -
元启发式算法与背包问题研究
¥38.2¥49.0 -
AI虚拟数字人:商业模式+形象创建+视频直播+案例应用
¥62.9¥89.8 -
UNIX环境高级编程(第3版)
¥164.9¥229.0 -
剪映AI
¥52.8¥88.0 -
深度学习高手笔记 卷2:经典应用
¥90.9¥129.8 -
纹样之美:中国传统经典纹样速查手册
¥76.3¥109.0 -
UG NX 12.0数控编程
¥22.1¥45.0 -
MATLAB计算机视觉与深度学习实战(第2版)
¥90.9¥128.0 -
界面交互设计理论研究
¥30.8¥56.0 -
微机组装与系统维护技术教程(第二版)
¥37.8¥43.0 -
明解C语言:实践篇
¥62.9¥89.8 -
Linux服务器架设实战(Linux典藏大系)
¥83.3¥119.0 -
Visual Basic 语言程序设计基础(第6版)
¥32.0¥45.0 -
贝叶斯推理与机器学习
¥139.3¥199.0