资源详情

深入理解Kubernetes源码

深入理解Kubernetes源码-电子书下载


作者: 郑东旭 等
出版社: 电子工业出版社
出版年: 2024-8
页数: 696
定价: 159.00元
ISBN: 9787121483233

下载次数:111


本站推荐

深入理解Kubernetes源码
深入理解Kubernetes源码
深入理解Kubernetes源码
深入理解Kubernetes源码
深入理解Kubernetes源码
深入理解Kubernetes源码
深入理解Kubernetes源码
深入理解Kubernetes源码
深入理解Kubernetes源码
深入理解Kubernetes源码

下载地址

书籍资料

  • 内容简介
  • 作者介绍
  • 书籍目录

郑东旭(Derek Zheng),BFE(万亿流量转发引擎)开源项目的作者之一,擅长Linux下高性能服务器的开发,对云计算、区块链相关技术领域有深刻的理解。
邱世达,云原生技术专家,热爱开源事业,长期参与Kubernetes社区贡献,Kubernetes Contributor Top 30,Sig Cluster Lifecycle成员,Kubeadm项目维护者之一,具备多年云计算领域研究工作经验。
冀超,曾在百度等多家互联网公司任职,参与过公有云和公司内的云原生平台建设,具有多年Kubernetes使用和开发经验。
李晋林,长期致力于云原生领域,对Kubernetes有深入理解和研究。在金融交易系统中拥有多年的Kubernetes使用和二次开发经验,主要主导公司业务上云、线上流量迁移等工作。
杨川胡(阳明),云原生爱好者,k8s技术圈社区作者,云原生学习网站优点知识创始人。
周世伟,资深码农,云原生爱好者和践行者,擅长Kubernetes、服务网格开发,技术宅。

郑东旭(Derek Zheng),BFE(万亿流量转发引擎)开源项目的作者之一,擅长Linux下高性能服务器的开发,对云计算、区块链相关技术领域有深刻的理解。
邱世达,云原生技术专家,热爱开源事业,长期参与Kubernetes社区贡献,Kubernetes Contributor Top 30,Sig Cluster Lifecycle成员,Kubeadm项目维护者之一,具备多年云计算领域研究工作经验。
冀超,曾在百度等多家互联网公司任职,参与过公有云和公司内的云原生平台建设,具有多年Kubernetes使用和开发经验。
李晋林,长期致力于云原生领域,对Kubernetes有深入理解和研究。在金融交易系统中拥有多年的Kubernetes使用和二次开发经验,主要主导公司业务上云、线上流量迁移等工作。
杨川胡(阳明),云原生爱好者,k8s技术圈社区作者,云原生学习网站优点知识创始人。
周世伟,资深码农,云原生爱好者和践行者,擅长Kubernetes、服务网格开发,技术宅。

第1章Kubernetes基本架构 1
1.1 Kubernetes发展历史 1
1.2 Kubernetes架构 2
1.3 Kubernetes各组件功能 3
1.3.1kubectl 4
1.3.2client-go 4
1.3.3kube-apiserver 4
1.3.4kube-controller-manager 4
1.3.5kube-scheduler 5
1.3.6kubelet 5
1.3.7kube-proxy 6
1.3.8ContainerRuntime 6
1.4 KubernetesProjectLayout设计 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.1API的层次结构 19
3.2.2版本控制 20
3.2.3组 21
3.2.4API术语 22
3.2.5API资源组成 25
3.2.6版本化资源与未版本化资源 26
3.2.7内部版本与外部版本 27
3.3 KubernetesAPI的数据结构 28
3.3.1APIGroup、APIVersions 28
3.3.2APIResource 30
3.3.3GVK和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.2Scheme的数据结构 38
3.5.3Scheme的初始化 40
3.5.4SchemeBuilder资源注册 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.3runtime.Object 51
3.6.4metav1.TypeMeta 52
3.6.5metav1.ObjectMeta 52
3.6.6Unstructured 53
3.7 runtime.Codec资源编/解码 55
3.7.1编/解码数据结构 56
3.7.2CodecFactory实例化 57
3.7.3codec编/解码实现类 60
3.7.4json.Serializer编/解码 64
3.7.5protobuf.Serializer编/解码 65
3.7.6UnstructuredJSONScheme实现类 67
3.7.7NegotiatedSerializer 67
3.7.8ParameterCodec 69
3.7.9runtime包下的Codec相关函数 71
3.7.10Codec核心调用链路 72
3.7.11Codec的使用方式 74
3.8 Converter资源版本转换器 75
3.8.1Converter的数据结构 76
3.8.2Converter转换函数的注册 77
3.8.3Converter的初始化 77
3.8.4Converter资源版本转换的实现 78
3.9 使用RESTMapper管理GVR和GVK映射 79
3.9.1RESTMapper的数据结构 80
3.9.2RESTMapper实现类 81
3.9.3DefaultRESTMapper默认实现类 82
3.9.4PriorityRESTMapper优先级映射 83
3.9.5DeferredDiscoveryRESTMapper实现类 84
3.9.6RESTMapper的使用 85
3.9.7RESTMapping的数据结构及典型用法 85
第4章Kubernetes核心资源对象 87
4.1 初识Kubernetes资源对象 87
4.2 metav1.ObjectMeta属性元数据 88
4.2.1Name 88
4.2.2GenerateName 89
4.2.3Annotation 89
4.2.4Generation 89
4.2.5ResourceVersion 90
4.2.6OwnerReference 91
4.2.7Finalizers 92
4.2.8ManagedFields 94
4.3 Pod资源对象 99
4.3.1PodSpec字段详解 100
4.3.2Container字段详解 110
4.3.3Pod创建流程 114
4.3.4Pause容器及创建流程 115
4.3.5PodSpec生成容器参数 122
4.3.6容器的通用创建流程 124
4.3.7资源配额与cgroup 126
4.3.8QoS与驱逐顺序 131
4.3.9静态Pod 135
4.3.10健康检查 137
4.3.11Pod的状态 140
4.3.12原地升级 144
4.4 工作负载资源 146
4.4.1Deployment 146
4.4.2ReplicaSet 153
4.4.3StatefulSet 156
4.4.4DaemonSet 160
4.4.5Job 163
4.4.6CronJob 166
4.5 发现和负载均衡资源 169
4.5.1Service 169
4.5.2Ingress 175
4.5.3Endpoints 177
4.5.4EndpointSlice 178
4.5.5NetworkPolicy 182
4.6 配置和存储资源 185
4.6.1卷 185
4.6.2PV与PVC 186
4.6.3StorageClass 191
4.7 自定义资源 194
4.7.1概述 194
4.7.2Operator 196
4.7.3controller-runtime 197
4.7.4Kubebuilder 198
第5章client-go编程式交互 200
5.1 初识client-go 200
5.2 客户端 200
5.2.1kubeconfig配置管理 201
5.2.2RESTClient客户端 204
5.2.3ClientSet客户端 207
5.2.4DynamicClient客户端 210
5.2.5DiscoveryClient发现客户端 212
5.3 Informer机制 214
5.3.1Informer使用示例 214
5.3.2Informer架构 216
5.3.3Reflector数据同步 217
5.3.4DeltaFIFO操作队列 223
5.3.5Indexer资源缓存 226
5.3.6processor资源处理 230
5.3.7workqueue工作队列 233
5.4 常用工具类 240
5.4.1事件管理机制 240
5.4.2Leader选举机制 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.4DryRun实现原理 287
7.5 storage.Interface通用存储接口 288
7.6 CacherStorage缓存层 290
7.6.1CacherStorage缓存架构 291
7.6.2ResourceVersion资源版本号 295
7.6.3watchCache缓存滑动窗口 297
7.7 UnderlyingStorage底层存储对象 300
7.8 Codec数据编/解码 301
7.9 Strategy预处理 304
7.9.1CreateStrategy预处理 304
7.9.2UpdateStrategy预处理 307
7.9.3DeleteStrategy预处理 308
第8章kube-apiserver核心实现 310
8.1 初识kube-apiserver 310
8.2 网络通信框架 311
8.2.1go-restful框架 311
8.2.2Protobuf序列化 314
8.3 kube-apiserver架构设计 319
8.4 kube-apiserver启动流程 321
8.4.1Scheme资源注册 322
8.4.2Cobra命令行参数解析 324
8.4.3创建APIServer通用配置 325
8.4.4创建APIExtensionsServer 336
8.4.5创建KubeAPIServer 345
8.4.6创建AggregatorServer 353
8.4.7GenericAPIServer初始化 360
8.4.8准备和启动HTTPS服务 362
8.5 请求处理流程 367
8.6 权限控制体系 368
8.7 认证 369
8.7.1RequestHeader认证 370
8.7.2ClientCA认证 372
8.7.3TokenAuth认证 373
8.7.4ServiceAccountAuth认证 374
8.7.5BootstrapToken认证 377
8.7.6OIDC认证 379
8.7.7WebhookTokenAuth认证 381
8.7.8Anonymous认证 383
8.8 授权 383
8.8.1AlwaysAllow授权 386
8.8.2AlwaysDeny授权 387
8.8.3ABAC授权 388
8.8.4Webhook授权 389
8.8.5RBAC授权 391
8.8.6Node授权 396
8.9 准入控制器 397
8.9.1内置插件介绍 398
8.9.2内部实现原理 401
8.9.3MutatingAdmissionWebhook准入控制器 404
8.9.4ValidatingAdmissionWebhook准入控制器 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.2List-Watch的核心原理 425
第9章kube-scheduler核心实现 430
9.1 初识kube-scheduler 430
9.1.1kube-scheduler调度模型 430
9.1.2kube-scheduler内部架构 431
9.1.3kube-scheduler事件驱动 434
9.2 kube-scheduler启动流程 437
9.2.1Cobra命令行参数解析 438
9.2.2实例化Scheduler对象 439
9.2.3运行EventBroadcaster事件管理器 442
9.2.4运行HTTPSServer 442
9.2.5运行Informer同步资源 443
9.2.6执行Leader选举 444
9.2.7运行调度器 445
9.3 SchedulingFramework 445
9.3.1诞生背景 445
9.3.2核心架构 446
9.4 调度器运行流程 452
9.4.1整体运行流程 452
9.4.2SchedulingCycle 454
9.4.3BindingCycle 462
9.5 优先级与抢占机制 464
9.5.1Pod优先级 465
9.5.2Pod驱逐抢占机制 466
9.6 内置调度插件介绍 473
第10章kube-controller-manager核心实现 475
10.1 初识kube-controller-manager 475
10.2 架构设计详解 477
10.2.1控制器状态模型 477
10.2.2控制器执行原理 478
10.3 启动流程 479
10.3.1Cobra命令行参数解析 480
10.3.2运行EventBroadcaster事件处理器 481
10.3.3运行HTTPS服务 481
10.3.4执行Leader选举 482
10.3.5启动控制器主循环 482
10.4 ReplicaSet控制器 484
10.4.1控制器初始化 485
10.4.2主要执行逻辑 485
10.4.3慢启动创建Pod 487
10.4.4排序并删除多余的Pod 487
10.4.5Expectation机制 488
10.5 Deployment控制器 492
10.5.1控制器初始化 492
10.5.2主要执行逻辑 492
10.5.3调谐Pod的数量 495
10.5.4更新策略 495
10.5.5版本回滚 496
10.6 DaemonSet控制器 497
10.6.1控制器初始化 498
10.6.2主要执行逻辑 498
10.6.3调谐Pod的数量 500
10.6.4更新策略 501
10.7 StatefulSet控制器 503
10.7.1控制器初始化 503
10.7.2主要执行逻辑 503
10.7.3调谐Pod的数量 504
10.7.4更新策略 507
10.8 Job控制器 508
10.8.1控制器初始化 508
10.8.2主要执行逻辑 508
10.8.3调谐Pod的数量 511
10.9 CronJob控制器 512
10.9.1控制器初始化 513
10.9.2主要执行逻辑 513
10.9.3计算Job的启动时间 515
10.9.4Job并行策略 518
10.10 Endpoint控制器 519
10.10.1控制器初始化 519
10.10.2主要执行逻辑 520
10.10.3Subsets属性的计算 523
10.11 EndpointSlice控制器 524
10.11.1控制器初始化 524
10.11.2主要执行逻辑 525
10.11.3EndpointSlice控制器的计算与填充 527
10.12 GarbageCollector控制器 531
10.12.1控制器初始化 532
10.12.2主要执行逻辑 533
10.12.3更新资源对象依赖关系图 534
10.12.4孤儿删除 537
10.12.5级联删除 537
10.13 NodeLifecycle控制器 539
10.13.1控制器初始化 539
10.13.2主要执行逻辑 541
10.13.3添加NoSchedule效果的Taint 543
10.13.4Node健康状态检测 544
10.13.5使用NoExecuteTaint驱逐Node上的Pod 546
10.13.6直接驱逐Node上的Pod 547
10.14 其他控制器 548
10.14.1Namespace控制器 548
10.14.2ServiceAccount控制器 550
10.14.3PodGC控制器 550
10.14.4SAToken控制器 551
10.14.5ResourceQuota控制器 552
第11章kube-proxy核心实现 553
11.1 初识kube-proxy 553
11.2 Service资源 553
11.3 架构设计详解 554
11.4 kube-proxy初始化过程 555
11.4.1生成iptables、ipvs、Kernel、IPSet接口 556
11.4.2判断是否支持ipvs代理模式 558
11.4.3获取宿主节点的Hostname 559
11.4.4生成KubeClient和EventClient 559
11.4.5获取宿主节点的IP地址 560
11.4.6确定代理模式 560
11.4.7确定本地数据包判定方法 560
11.4.8确定IP协议栈 561
11.4.9生成Proxier结构体 562
11.5 iptables代理模式的执行过程 562
11.5.1统计StaleService和StaleEndpoints 563
11.5.2创建基础iptables链和规则 564
11.5.3初始化iptables内容缓冲区 566
11.5.4配置KUBE-POSTROUTING链跳转规则 567
11.5.5配置KUBE-MARK-MASQ链跳转规则 567
11.5.6统计宿主节点IP地址 568
11.5.7为每个ServicePort配置iptables链和规则 568
11.5.8配置KUBE-NODEPORTS链跳转规则 576
11.5.9配置KUBE-FORWARD链跳转规则 577
11.5.10将iptables缓冲区内容刷新到宿主机 577
11.5.11清理残留的UDPConntrack记录 577
11.6 ipvs代理模式的执行过程 578
11.6.1统计StaleService和StaleEndpoints 579
11.6.2初始化iptables内容缓冲区 580
11.6.3创建基础iptables链和规则 580
11.6.4创建Dummy网卡 583
11.6.5创建IPSet 583
11.6.6统计宿主节点的IP地址 585
11.6.7为每个ServicePort配置规则 585
11.6.8更新各个IPSet的内容 590
11.6.9创建匹配IPSet的iptables规则 591
11.6.10将iptables缓冲区内容刷新到宿主机 593
11.6.11清理冗余的Service地址 594
11.6.12清理残留的UDPConntrack记录 595
第12章kubelet核心实现 596
12.1 初识kubelet 596
12.2 kubelet架构设计 596
12.3 kubelet启动流程 601
12.3.1Cobra命令行参数解析 601
12.3.2运行环境检测与设置 603
12.3.3Kubelet对象实例化 605
12.3.4启动kubelet主服务 606
12.3.5启动HTTPServer服务和gRPCServer服务 611
12.4 Pod生命周期管理 612
12.4.1CRI 613
12.4.2Pod启动流程 616
12.4.3Pod驱逐流程 629
12.5 cgroup资源隔离 637
12.6 垃圾回收原理 639
12.6.1镜像垃圾回收 639
12.6.2容器垃圾回收 645
12.7 PLEG核心原理 652
12.7.1PLEG产生原因 652
12.7.2PLEG架构设计 652
12.7.3PLEG原理剖析 653
12.8 HTTP服务接口 657
12.8.1日志查询接口 659
12.8.2命令执行接口 666
12.8.3端口转发接口 673
第13章代码生成器【通过读者服务二维码获取】 679
附录AKubernetes组件配置参数介绍【通过读者服务二维码获取】 680