新書推薦:
《
唐朝三百年
》
售價:NT$
490.0
《
反操纵心理学:夺回人生主导权 拒绝被操纵
》
售價:NT$
249.0
《
同工异曲:跨文化阅读的启示(修订版)(师承钱锺书先生,比较文学入门,体量小但内容丰,案例文笔皆精彩)
》
售價:NT$
199.0
《
牛津立法研究手册
》
售價:NT$
1630.0
《
制度为什么重要:政治科学中的新制度主义(人文社科悦读坊)
》
售價:NT$
290.0
《
梦醒子:一位华北乡居者的人生(1857—1942))(第2版)
》
售價:NT$
340.0
《
啊哈!原来如此(中译本修订版)
》
售價:NT$
290.0
《
部分识别入门——计量经济学的创新性方法
》
售價:NT$
345.0
|
內容簡介: |
在过去几年中,容器技术的广泛应用推动了容器编排技术的迅猛发展,尤其是Kubernetes的兴起。作为当前非常受欢迎的容器编排系统,Kubernetes能够有效应对生产环境中复杂的编排需求,帮助企业实现大规模多容器集群的高效管理。本书将Kubernetes 1.25.0版本源码作为剖析对象,深入探讨其核心组件和实现原理。通过学习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.1 kubectl4
1.3.2 client-go4
1.3.3 kube-apiserver4
1.3.4 kube-controller-manager4
1.3.5 kube-scheduler5
1.3.6 kubelet5
1.3.7 kube-proxy6
1.3.8 Container Runtime6
1.4 Kubernetes Project Layout设计7
第2章 Kubernetes构建过程10
2.1 构建方式10
2.2 一切都始于Makefile12
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、APIVersions28
3.3.2 APIResource30
3.3.3 GVK和GVR32
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.Object51
3.6.4 metav1.TypeMeta52
3.6.5 metav1.ObjectMeta52
3.6.6 Unstructured53
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 NegotiatedSerializer67
3.7.8 ParameterCodec69
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 Name88
4.2.2 GenerateName89
4.2.3 Annotation89
4.2.4 Generation89
4.2.5 ResourceVersion90
4.2.6 OwnerReference91
4.2.7 Finalizers92
4.2.8 ManagedFields94
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 资源配额与cgroup126
4.3.8 QoS与驱逐顺序131
4.3.9 静态Pod135
4.3.10 健康检查137
4.3.11 Pod的状态140
4.3.12 原地升级144
4.4 工作负载资源146
4.4.1 Deployment146
4.4.2 ReplicaSet153
4.4.3 StatefulSet156
4.4.4 DaemonSet160
4.4.5 Job163
4.4.6 CronJob166
4.5 发现和负载均衡资源169
4.5.1 Service169
4.5.2 Ingress175
4.5.3 Endpoints177
4.5.4 EndpointSlice178
4.5.5 NetworkPolicy182
4.6 配置和存储资源185
4.6.1 卷185
4.6.2 PV与PVC186
4.6.3 StorageClass191
4.7 自定义资源194
4.7.1 概述194
4.7.2 Operator196
4.7.3 controller-runtime197
4.7.4 Kubebuilder198
第5章 client-go编程式交互200
5.1 初识client-go200
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 初识kubectl256
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 扩展命令管理器Krew278
第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-apiserver310
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 创建APIExtensionsServer336
8.4.5 创建KubeAPIServer345
8.4.6 创建AggregatorServer353
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-scheduler430
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 Server442
9.2.5 运行Informer同步资源443
9.2.6 执行Leader选举444
9.2.7 运行调度器445
9.3 Scheduling Framework445
9.3.1 诞生背景445
9.3.2 核心架构446
9.4 调度器运行流程452
9.4.1 整体运行流程452
9.4.2 Scheduling Cycle454
9.4.3 Binding Cycle462
9.5 优先级与抢占机制464
9.5.1 Pod优先级465
9.5.2 Pod驱逐抢占机制466
|
|