网站首页  软件下载  游戏下载  翻译软件  电子书下载  电影下载  电视剧下载  教程攻略

请输入您要查询的图书:

 

书名 深入理解KUBERNETES源码
分类 教育考试-考试-计算机类
作者 郑东旭等
出版社 电子工业出版社
下载
简介
内容推荐
在过去几年中,容器技术的广泛应用推动了容器编排技术的迅猛发展,尤其是Kubernetes的兴起。作为当前非常受欢迎的容器编排系统,Kubernetes能够有效应对生产环境中复杂的编排需求,帮助企业实现大规模多容器集群的高效管理。本书将Kubernetes 1.25.0版本源码作为剖析对象,深入探讨其核心组件和实现原理。通过学习Kubernetes源码,读者不仅能掌握容器编排技术的精髓,还能提升自身在云计算领域的竞争力。本书适合对容器技术和云计算感兴趣的开发者、运维工程师及架构师参考和阅读。
目录
第1章 Kubernetes基本架构\t1
1.1  Kubernetes发展历史\t1
1.2  Kubernetes架构\t2
1.3  Kubernetes各组件功能\t3
1.3.1 kubectl\t4
1.3.2 client-go\t4
1.3.3 kube-apiserver\t4
1.3.4 kube-controller-manager\t4
1.3.5 kube-scheduler\t5
1.3.6 kubelet\t5
1.3.7 kube-proxy\t6
1.3.8 Container Runtime\t6
1.4  Kubernetes Project Layout设计\t7
第2章 Kubernetes构建过程\t10
2.1  构建方式\t10
2.2  一切都始于Makefile\t12
2.3  本地环境构建\t13
2.3.1 本地环境构建命令\t13
2.3.2 本地环境构建过程\t14
2.4  容器环境构建\t16
2.4.1 容器环境构建命令\t16
2.4.2 容器环境构建过程\t16
第3章 Kubernetes核心数据结构\t19
3.1  初识数据结构\t19
3.2  基本概念\t19
3.2.1 API的层次结构\t19
3.2.2 版本控制\t20
3.2.3 组\t21
3.2.4 API术语\t22
3.2.5 API资源组成\t25
3.2.6 版本化资源与未版本化资源\t26
3.2.7 内部版本与外部版本\t27
3.3  Kubernetes API的数据结构\t28
3.3.1 APIGroup、APIVersions\t28
3.3.2 APIResource\t30
3.3.3 GVK和GVR\t32
3.3.4 内置资源全景图\t33
3.4  Kubernetes资源定义\t35
3.4.1 内部版本定义\t35
3.4.2 外部版本定义\t36
3.5  将资源注册到Scheme中\t36
3.5.1 资源类型注册入口\t37
3.5.2 Scheme的数据结构\t38
3.5.3 Scheme的初始化\t40
3.5.4 SchemeBuilder资源注册\t41
3.5.5 资源外部版本注册\t43
3.5.6 资源内部版本注册\t44
3.5.7 所有资源的注册入口\t45
3.5.8 资源注册表的查询方法\t47
3.5.9 资源对象的创建\t48
3.5.10 资源对象的转换\t48
3.5.11 资源对象默认值的设置\t49
3.5.12 资源字段的转换\t49
3.6  对象体系设计\t49
3.6.1 资源对象的基本信息\t49
3.6.2 对象体系类图\t50
3.6.3 runtime.Object\t51
3.6.4 metav1.TypeMeta\t52
3.6.5 metav1.ObjectMeta\t52
3.6.6 Unstructured\t53
3.7  runtime.Codec资源编/解码\t55
3.7.1 编/解码数据结构\t56
3.7.2 CodecFactory实例化\t57
3.7.3 codec编/解码实现类\t60
3.7.4 json.Serializer编/解码\t64
3.7.5 protobuf.Serializer编/解码\t65
3.7.6 UnstructuredJSONScheme实现类\t67
3.7.7 NegotiatedSerializer\t67
3.7.8 ParameterCodec\t69
3.7.9 runtime包下的Codec相关函数\t71
3.7.10 Codec核心调用链路\t72
3.7.11 Codec的使用方式\t74
3.8  Converter资源版本转换器\t75
3.8.1 Converter的数据结构\t76
3.8.2 Converter转换函数的注册\t77
3.8.3 Converter的初始化\t77
3.8.4 Converter资源版本转换的实现\t78
3.9  使用RESTMapper管理GVR和GVK映射\t79
3.9.1 RESTMapper的数据结构\t80
3.9.2 RESTMapper实现类\t81
3.9.3 DefaultRESTMapper默认实现类\t82
3.9.4 PriorityRESTMapper优先级映射\t83
3.9.5 DeferredDiscoveryRESTMapper实现类\t84
3.9.6 RESTMapper的使用\t85
3.9.7 RESTMapping的数据结构及典型用法\t85
第4章 Kubernetes核心资源对象\t87
4.1  初识Kubernetes资源对象\t87
4.2  metav1.ObjectMeta属性元数据\t88
4.2.1 Name\t88
4.2.2 GenerateName\t89
4.2.3 Annotation\t89
4.2.4 Generation\t89
4.2.5 ResourceVersion\t90
4.2.6 OwnerReference\t91
4.2.7 Finalizers\t92
4.2.8 ManagedFields\t94
4.3  Pod资源对象\t99
4.3.1 PodSpec字段详解\t100
4.3.2 Container字段详解\t110
4.3.3 Pod创建流程\t114
4.3.4 Pause容器及创建流程\t115
4.3.5 PodSpec生成容器参数\t122
4.3.6 容器的通用创建流程\t124
4.3.7 资源配额与cgroup\t126
4.3.8 QoS与驱逐顺序\t131
4.3.9 静态Pod\t135
4.3.10 健康检查\t137
4.3.11 Pod的状态\t140
4.3.12 原地升级\t144
4.4  工作负载资源\t146
4.4.1 Deployment\t146
4.4.2 ReplicaSet\t153
4.4.3 StatefulSet\t156
4.4.4 DaemonSet\t160
4.4.5 Job\t163
4.4.6 CronJob\t166
4.5  发现和负载均衡资源\t169
4.5.1 Service\t169
4.5.2 Ingress\t175
4.5.3 Endpoints\t177
4.5.4 EndpointSlice\t178
4.5.5 NetworkPolicy\t182
4.6  配置和存储资源\t185
4.6.1 卷\t185
4.6.2 PV与PVC\t186
4.6.3 StorageClass\t191
4.7  自定义资源\t194
4.7.1 概述\t194
4.7.2 Operator\t196
4.7.3 controller-runtime\t197
4.7.4 Kubebuilder\t198
第5章 client-go编程式交互\t200
5.1  初识client-go\t200
5.2  客户端\t200
5.2.1 kubeconfig配置管理\t201
5.2.2 RESTClient客户端\t204
5.2.3 ClientSet客户端\t207
5.2.4 DynamicClient客户端\t210
5.2.5 DiscoveryClient发现客户端\t212
5.3  Informer机制\t214
5.3.1 Informer使用示例\t214
5.3.2 Informer架构\t216
5.3.3 Reflector数据同步\t217
5.3.4 DeltaFIFO操作队列\t223
5.3.5 Indexer资源缓存\t226
5.3.6 processor资源处理\t230
5.3.7 workqueue工作队列\t233
5.4  常用工具类\t240
5.4.1 事件管理机制\t240
5.4.2 Leader选举机制\t247
第6章 kubectl命令式交互\t256
6.1  初识kubectl\t256
6.2  kubectl执行流程\t256
6.2.1 初始化命令对象\t257
6.2.2 补全命令参数\t257
6.2.3 校验命令参数\t258
6.2.4 执行命令输出结果\t258
6.3  kubectl缓存机制\t263
6.3.1 缓存数据结构\t264
6.3.2 缓存机制详解\t265
6.3.3 缓存使用场景\t269
6.4  kubectl变更比对策略\t272
6.4.1 变更比对策略介绍\t272
6.4.2 服务端应用和客户端应用\t272
6.4.3 策略比对器和JSON比对器\t274
6.4.4 双路合并和三路合并\t275
6.5  kubectl扩展命令\t277
6.5.1 扩展命令介绍\t277
6.5.2 扩展命令实现原理\t277
6.5.3 扩展命令管理器Krew\t278
第7章 etcd存储核心实现\t280
7.1  初识etcd存储\t280
7.2  etcd存储架构设计\t280
7.3  RESTStorage资源存储接口\t282
7.4  genericregistry.Store通用操作封装\t283
7.4.1 标准存储实现\t283
7.4.2 版本冲突检测\t284
7.4.3 通用钩子函数\t284
7.4.4 DryRun实现原理\t287
7.5  storage.Interface通用存储接口\t288
7.6  Cacher Storage缓存层\t290
7.6.1 Cacher Storage缓存架构\t291
7.6.2 ResourceVersion资源版本号\t295
7.6.3 watchCache缓存滑动窗口\t297
7.7  Underlying Storage底层存储对象\t300
7.8  Codec数据编/解码\t301
7.9  Strategy预处理\t304
7.9.1 Create Strategy预处理\t304
7.9.2 Update Strategy预处理\t307
7.9.3 Delete Strategy预处理\t308
第8章 kube-apiserver核心实现\t310
8.1  初识kube-apiserver\t310
8.2  网络通信框架\t311
8.2.1 go-restful框架\t311
8.2.2 Protobuf序列化\t314
8.3  kube-apiserver架构设计\t319
8.4  kube-apiserver启动流程\t321
8.4.1 Scheme资源注册\t322
8.4.2 Cobra命令行参数解析\t324
8.4.3 创建API Server通用配置\t325
8.4.4 创建APIExtensionsServer\t336
8.4.5 创建KubeAPIServer\t345
8.4.6 创建AggregatorServer\t353
8.4.7 GenericAPIServer初始化\t360
8.4.8 准备和启动HTTPS服务\t362
8.5  请求处理流程\t367
8.6  权限控制体系\t368
8.7  认证\t369
8.7.1 RequestHeader认证\t370
8.7.2 ClientCA认证\t372
8.7.3 TokenAuth认证\t373
8.7.4 ServiceAccountAuth认证\t374
8.7.5 BootstrapToken认证\t377
8.7.6 OIDC认证\t379
8.7.7 WebhookTokenAuth认证\t381
8.7.8 Anonymous认证\t383
8.8  授权\t383
8.8.1 AlwaysAllow授权\t386
8.8.2 AlwaysDeny授权\t387
8.8.3 ABAC授权\t388
8.8.4 Webhook授权\t389
8.8.5 RBAC授权\t391
8.8.6 Node授权\t396
8.9  准入控制器\t397
8.9.1 内置插件介绍\t398
8.9.2 内部实现原理\t401
8.9.3 MutatingAdmissionWebhook准入控制器\t404
8.9.4 ValidatingAdmissionWebhook准入控制器\t411
8.10  信号处理机制\t416
8.10.1 常驻进程实现\t416
8.10.2 进程的优雅关闭\t417
8.10.3 向systemd报告进程状态\t419
8.11  List-Watch的实现原理\t420
8.11.1 长连接通信协议\t420
8.11.2 List-Watch的核心原理\t425
第9章 kube-scheduler核心实现\t430
9.1  初识kube-scheduler\t430
9.1.1 kube-scheduler调度模型\t430
9.1.2 kube-scheduler内部架构\t431
9.1.3 kube-scheduler事件驱动\t434
9.2  kube-scheduler启动流程\t437
9.2.1 Cobra命令行参数解析\t438
9.2.2 实例化Scheduler对象\t439
9.2.3 运行EventBroadcaster事件管理器\t442
9.2.4 运行HTTPS Server\t442
9.2.5 运行Informer同步资源\t443
9.2.6 执行Leader选举\t444
9.2.7 运行调度器\t445
9.3  Scheduling Framework\t445
9.3.1 诞生背景\t445
9.3.2 核心架构\t446
9.4  调度器运行流程\t452
9.4.1 整体运行流程\t452
9.4.2 Scheduling Cycle\t454
9.4.3 Binding Cycle\t462
9.5  优先级与抢占机制\t464
9.5.1 Pod优先级\t465
9.5.2 Pod驱逐抢占机制\t466
9.6  内置调度插件介绍\t473
第10章 kube-controller-manager核心实现\t475
10.1  初识kube-controller-manager\t475
10.2  架构设计详解\t477
10.2.1 控制器状态模型\t477
10.2.2 控制器执行原理\t478
10.3  启动流程\t479
10.3.1 Cobra命令行参数解析\t480
10.3.2 运行EventBroadcaster事件处理器\t481
10.3.3 运行HTTPS服务\t481
10.3.4 执行Leader选举\t482
10.3.5 启动控制器主循环\t482
10.4  ReplicaSet控制器\t484
10.4.1 控制器初始化\t485
10.4.2 主要执行逻辑\t485
10.4.3 慢启动创建Pod\t487
10.4.4 排序并删除多余的Pod\t487
10.4.5 Expectation机制\t488
10.5  Deployment控制器\t492
10.5.1 控制器初始化\t492
10.5.2 主要执行逻辑\t492
10.5.3 调谐Pod的数量\t495
10.5.4 更新策略\t495
10.5.5 版本回滚\t496
10.6  DaemonSet控制器\t497
10.6.1 控制器初始化\t498
10.6.2 主要执行逻辑\t498
10.6.3 调谐Pod的数量\t500
10.6.4 更新策略\t501
10.7  StatefulSet控制器\t503
10.7.1 控制器初始化\t503
10.7.2 主要执行逻辑\t503
10.7.3 调谐Pod的数量\t504
10.7.4 更新策略\t507
10.8  Job控制器\t508
10.8.1 控制器初始化\t508
10.8.2 主要执行逻辑\t508
10.8.3 调谐Pod的数量\t511
10.9  CronJob控制器\t512
10.9.1 控制器初始化\t513
10.9.2 主要执行逻辑\t513
10.9.3 计算Job的启动时间\t515
10.9.4 Job并行策略\t518
10.10  Endpoint控制器\t519
10.10.1 控制器初始化\t519
10.10.2 主要执行逻辑\t520
10.10.3 Subsets属性的计算\t523
10.11  EndpointSlice控制器\t524
10.11.1 控制器初始化\t524
10.11.2 主要执行逻辑\t525
10.11.3 EndpointSlice控制器的计算与填充\t527
10.12  GarbageCollector控制器\t531
10.12.1 控制器初始化\t532
10.12.2 主要执行逻辑\t533
10.12.3 更新资源对象依赖关系图\t534
10.12.4 孤儿删除\t537
10.12.5 级联删除\t537
10.13  NodeLifecycle控制器\t539
10.13.1 控制器初始化\t539
10.13.2 主要执行逻辑\t541
10.13.3 添加NoSchedule效果的Taint\t543
10.13.4 Node健康状态检测\t544
10.13.5 使用NoExecute Taint驱逐Node上的Pod\t546
10.13.6 直接驱逐Node上的Pod\t547
10.14  其他控制器\t548
10.14.1 Namespace控制器\t548
10.14.2 ServiceAccount控制器\t550
10.14.3 PodGC控制器\t550
10.14.4 SA Token控制器\t551
10.14.5 ResourceQuota控制器\t552
第11章 kube-proxy核心实现\t553
11.1  初识kube-proxy\t553
11.2  Service资源\t553
11.3  架构设计详解\t554
11.4  kube-proxy初始化过程\t555
11.4.1 生成iptables、ipvs、Kernel、IP Set接口\t556
11.4.2 判断是否支持ipvs代理模式\t558
11.4.3 获取宿主节点的Hostname\t559
11.4.4 生成KubeClient和EventClient\t559
11.4.5 获取宿主节点的IP地址\t560
11.4.6 确定代理模式\t560
11.4.7 确定本地数据包判定方法\t560
11.4.8 确定IP协议栈\t561
11.4.9 生成Proxier结构体\t562
11.5  iptables代理模式的执行过程\t562
11.5.1 统计Stale Service和Stale Endpoints\t563
11.5.2 创建基础iptables链和规则\t564
11.5.3 初始化iptables内容缓冲区\t566
11.5.4 配置KUBE-POSTROUTING链跳转规则\t567
11.5.5 配置KUBE-MARK-MASQ链跳转规则\t567
11.5.6 统计宿主节点IP地址\t568
11.5.7 为每个Service Port配置iptables链和规则\t568
11.5.8 配置KUBE-NODEPORTS链跳转规则\t576
11.5.9 配置KUBE-FORWARD链跳转规则\t577
11.5.10 将iptables缓冲区内容刷新到宿主机\t577
11.5.11 清理残留的UDP Conntrack记录\t577
11.6  ipvs代理模式的执行过程\t578
11.6.1 统计Stale Service和Stale Endpoints\t579
11.6.2 初始化iptables内容缓冲区\t580
11.6.3 创建基础iptables链和规则\t580
11.6.4 创建Dummy网卡\t583
11.6.5 创建IP Set\t583
11.6.6 统计宿主节点的IP地址\t585
11.6.7 为每个Service Port配置规则\t585
11.6.8 更新各个IP Set的内容\t590
11.6.9 创建匹配IP Set的iptables规则\t591
11.6.10 将iptables缓冲区内容刷新到宿主机\t593
11.6.11 清理冗余的Service地址\t594
11.6.12 清理残留的UDP Conntrack记录\t595
第12章 kubelet核心实现\t596
12.1  初识kubelet\t596
12.2  kubelet架构设计\t596
12.3  kubelet启动流程\t601
12.3.1 Cobra命令行参数解析\t601
12.3.2 运行环境检测与设置\t603
12.3.3 Kubelet对象实例化\t605
12.3.4 启动kubelet主服务\t606
12.3.5 启动HTTP Server服务和gRPC Server服务\t611
12.4  Pod生命周期管理\t612
12.4.1 CRI\t613
12.4.2 Pod启动流程\t616
12.4.3 Pod驱逐流程\t629
12.5  cgroup资源隔离\t637
12.6  垃圾回收原理\t639
12.6.1 镜像垃圾回收\t639
12.6.2 容器垃圾回收\t645
12.7  PLEG核心原理\t652
12.7.1 PLEG产生原因\t652
12.7.2 PLEG架构设计\t652
12.7.3 PLEG原理剖析\t653
12.8  HTTP服务接口\t657
12.8.1 日志查询接口\t659
12.8.2 命令执行接口\t666
12.8.3 端口转发接口\t673
第13章 代码生成器【通过读者服务二维码获取】\t679
附录A Kubernetes组件配置参数介绍【通过读者服务二维码获取】\t680
随便看

 

霍普软件下载网电子书栏目提供海量电子书在线免费阅读及下载。

 

Copyright © 2002-2024 101bt.net All Rights Reserved
更新时间:2025/1/31 17:42:06