9787115560018 9787115504890 9787121389146
ISBN :9787115560018
书名:深入剖析Kubernetes
定价:99
出版社:人民邮电出版社
本书基于Kubernetes v1.18,深入剖析Kubernetes的本质、核心原理和设计思想。本书从开发者和使用者的真实逻辑出发,逐层剖析Kubernetes项目的核心特性,全面涵盖集搭建、容器编排、网络、资源管理等核心内容,以生动有趣的语言揭示了Kubernetes的设计原则和容器编排理念,是一本全面且深入的Kubernetes技术指南
前言    iii
1章 背景回顾:云原生大事记 2
1.1 初出茅庐 2
1.2 崭头角 6
1.3 雄并起 8
1.4 尘埃落定 11
2章 容器技术基础 17
2.1 从进程开始说起 17
2.2 隔离与限制 21
2.3 深入理解容器镜像 27
2.4 重新认识Linu容器 36
3章 Kubernetes设计与架构 47
3.1 Kubernetes核心设计与架构 47
3.2 Kubernetes核心能力与项目定位 51
4章 Kubernetes集搭建与配置 56
4.1 Kubernetes部署利器:kubeadm 56
4.2 从0到1:搭建一个完整的Kubernetes集 63
4.3 一个Kubernetes应用 73
5章 Kubernetes编排原理 82
5.1 为什么我们需要Pod 82
5.2 深入解析Pod对象 91
5.3 Pod对象使用进阶 96
5.4 编排确实很简单:谈谈“控制器”思想 109
5.5 经典PaaS的记忆:作业副本与水平扩展 112
5.6 深入理解StatefulSet(一):拓扑状态 121
5.7 深入理解StatefulSet(二):存储状态 127
5.8 深入理解StatefulSet(三):有状态应用实践 133
5.9 容器化守护进程:DaemonSet 147
5.10 撬动离线业务:Job与CronJob 156
5.11 声明式API与Kubernetes编程范式 166
5.12 声明式API的工作原理 175
5.13 API编程范式的具体原理 185
5.14 基于角色的权限控制:RBAC 196
5.15 聪明的微创新:Operator 工作原理解读 204
6章 Kubernetes存储原理 217
6.1 持久化存储:PV和PVC的设计与实现原理 217
6.2 深入理解本地持久化数据卷 226
6.3 开发自己的存储插件:FleVolume与CSI 233
6.4 容器存储实践:CSI插件编写指南 242
7章 Kubernetes网络原理 253
7.1 单机容器网络的实现原理 253
7.2 深入解析容器跨主机网络 260
7.3 Kubernetes网络模型与CNI网络插件 268
7.4 解读Kubernetes三层网络方案 276
7.5 Kubernetes中的网络隔离:NetworkPolicy 285
7.6 找到容器不容易:Service、DNS与服务发现 293
7.7 从外界连通Service与Service 调试“三板斧” 299
7.8 Kubernetes中的Ingress对象 304
8章 Kubernetes调度与资源管理 312
8.1 Kubernetes的资源模型与资源管理 312
8.2 Kubernetes的默认调度器 317
8.3 Kubernetes默认调度器调度策略解析 321
8.4 Kubernetes默认调度器的优先级和抢占机制 326
8.5 Kubernetes GPU管理与Device Plugin 机制 330
9章 容器运行时 335
9.1 幕后英雄:SIG-de与CRI 335
9.2 解读CRI与容器运行时 339
9.3 不仅仅是安全:Kata Containers与gVisor 343
10章 Kubernetes监控与日志 349
10.1 Prometheus、Metrics Server与Kubernetes监控体系 349
10.2 Custom Metrics:让Auto Scaling不再“食之无味” 353
10.3 容器日志收集与管理:让日志无处可逃 358
11章 Kubernetes应用管理进阶 366
11.1 再谈Kubernetes的本质与云原生 366
11.2 声明式应用管理简介 368
11.3 声明式应用管理进阶 370
11.4 打造以应用为中心的Kubernetes 374
12章 Kubernetes开源社区 378
结语 Kubernetes:赢开发者赢天下 382
深入浅出Docker
内容简介
本书是一本Docker入门图书,全书分为17章,从Docker概览和Docker技术两部分进行全面解析,深入浅出地介绍了Docker的相关知识,清晰详细的作步骤结合大量的实际代码帮助读者学以致用,将Docker知识应用到真实的项目开发当中。
本书适合对Docker感兴趣的入门新手、Docker技术开发人员以及运维人员阅读,本书也可作为Docker认证工程师考试的参考图书。
目录
一部分 Docker概览
 1章 容器发展之路 2
1.1 落后的旧时代 2
1.2 你好,VMware! 2
1.3 虚拟机的不足 3
1.4 你好,容器! 3
1.5 Linu容器 3
1.6 你好,Docker! 4
1.7 Windows容器 4
1.8 Windows容器vs Linu容器 4
1.9 Mac容器现状 5
1.10 Kubernetes 5
1.11 本章小结 6
 2章 走进Docker 7
2.1 Docker—简介 7
2.2 Docker公司 7
2.3 Docker运行时与编排引擎 8
2.4 Docker开源项目(Moby) 9
2.5 容器生态 10
2.6 开放容器计划 11
2.7 本章小结 12
3章 Docker安装 13
3.1 Windows版Docker(DfW) 13
3.2 Mac版Docker(DfM) 17
3.3 在Linu上安装Docker 19
3.4 在Windows Server 2016上安装Docker 21
3.5 Docker引擎(Engine)升级 22
3.5.1 在Ubuntu 16.04上升级Docker CE 23
3.5.2 在Windows Server 2016上升级Docker EE 24
3.6 Docker存储驱动的选择 25
3.6.1 Device Mapper配置 26
3.6.2 让Docker自动设置direct-lvm 26
3.6.3 手动配置Device Mapper的direct-lvm 28
3.7 本章小结 28
4章 纵观Docker 29
4.1 运维视角 29
4.1.1 镜像 30
4.1.2 容器 31
4.1.3 连接到运行中的容器 34
4.2 开发视角 35
4.3 本章小结 38
二部分 Docker技术
5章 Docker引擎 40
5.1 Docker引擎—简介 40
5.2 Docker引擎—详解 41
5.2.1 摆脱LXC 41
5.2.2 摒弃大而全的Docker daemon 42
5.2.3 开放容器计划(OCI)的影响 43
5.2.4 runc 43
5.2.5 containerd 43
5.2.6 启动一个新的容器(示例) 44
5.2.7 该模型的显著优势 45
5.2.8 shim 45
5.2.9 在Linu中的实现 46
5.2.10 daemon的作用 46
5.3 本章小结 46
6章 Docker镜像 48
6.1 Docker镜像—简介 48
6.2 Docker镜像—详解 48
6.2.1 镜像和容器 49
6.2.2 镜像通常比较小 49
6.2.3 拉取镜像 49
6.2.4 镜像命名 51
6.2.5 镜像仓库服务 51
6.2.6 镜像命名和标签 52
6.2.7 为镜像打多个标签 54
6.2.8 过滤docker image ls的输出内容 55
6.2.9 通过CLI方式搜索Docker Hub 56
6.2.10 镜像和分层 57
6.2.11 共享镜像层 60
6.2.12 根据摘要拉取镜像 61
6.2.13 镜像散列值(摘要) 63
6.2.14 多层架构的镜像 63
6.2.15 删除镜像 65
6.3 镜像—命令 67
6.4 本章小结 67
7章 Docker容器 68
7.1 Docker容器—简介 68
7.2 Docker容器—详解 69
7.2.1 容器vs虚拟机 69
7.2.2 虚拟机的额外开销 71
7.2.3 运行的容器 71
7.2.4 检查Docker daemon 71
7.2.5 启动一个简单容器 72
7.2.6 容器进程 74
7.2.7 容器生命周期 75
7.2.8 优雅地停止容器 78
7.2.9 利用重启策略进行容器的自我修复 78
7.2.10 Web服务器示例 80
7.2.11 查看容器详情 82
7.2.12 快速清理 82
7.3 容器—命令 83
7.4 本章小结 84
8章 应用的容器化 85
8.1 应用的容器化—简介 85
8.2 应用的容器化—详解 86
8.2.1 单体应用容器化 86
8.2.2 生产环境中的多阶段构建 95
8.2.3 佳实践 98
8.3 应用的容器化—命令 100
8.4 本章小结 101
9章 使用Docker Compose部署应用 102
9.1 使用Docker Compose部署应用—简介 102
9.2 使用Docker Compose部署应用—详解 103
9.2.1 Docker Compose的背景 103
9.2.2 安装Docker Compose 103
9.2.3 Compose文件 105
9.2.4 使用Docker Compose部署应用 107
9.2.5 使用Docker Compose管理应用 110
9.3 使用Docker Compose部署应用—命令 115
9.4 本章小结 116
 10章 Docker Swarm 117
10.1 Docker Swarm—简介 117
10.2 Docker Swarm—详解 118
10.2.1 Swarm的初步介绍 118
10.2.2 搭建安全Swarm集 119
10.2.3 Swarm服务 125
10.2.4 故障排除 133
10.3 Docker Swarm—命令 134
10.4 本章小结 135
 11章 Docker网络 136
11.1 Docker网络—简介 136
11.2 Docker网络—详解 137
11.2.1 基础理论 137
11.2.2 单机桥接网络 140
11.2.3 多机覆盖网络 146
11.2.4 接入现有网络 146
11.2.5 服务发现 152
11.2.6 Ingress网络 153
11.3 Docker网络—命令 156
11.4 本章小结 156
 12章 Docker覆盖网络 157
12.1 Docker覆盖网络—简介 157
12.2 Docker覆盖网络—详解 157
12.2.1 在Swarm模式下构建并测试Docker覆盖网络 158
12.2.2 工作原理 164
12.3 Docker覆盖网络—命令 168
12.4 本章小结 168
 13章 卷与持久化数据 169
13.1 卷与持久化数据—简介 169
13.2 卷与持久化数据—详解 169
13.2.1 容器与非持久数据 170
13.2.2 容器与持久化数据 170
13.2.3 在集节点间共享存储 175
13.3 卷与持久化数据—命令 176
13.4 本章小结 176
 14章 使用Docker Stack部署应用 177
14.1 使用Docker Stack部署应用—简介 177
14.2 使用Docker Stack部署应用—详解 178
14.2.1 简单应用 178
14.2.2 深入分析Stack文件 180
14.2.3 部署应用 186
14.2.4 管理应用 191
14.3 使用Docker Stack部署应用—命令 193
14.4 本章小结 194
 15章 Docker安全 195
15.1 Docker安全—简介 195
15.2 Docker安全—详解 196
15.2.1 Linu安全技术 197
15.2.2 Docker平台安全技术 201
15.3 本章小结 212
 16章 企业版工具 213
16.1 企业版工具—简介 213
16.2 企业版工具—详解 214
16.2.1 Docker EE引擎 214
16.2.2 Docker通用控制平面(UCP) 216
16.2.3 Docker可信镜像仓库服务(DTR) 227
16.3 本章小结 233
 17章 企业级特性 234
17.1 企业级特性—简介 234
17.2 企业级特性—详解 234
17.2.1 基于角色的权限控制(RBAC) 235
17.2.2 集成活动目录 239
17.2.3 Docker内容信任机制(DCT) 241
17.2.4 配置Docker可信镜像仓库服务(DTR) 243
17.2.5 使用Docker可信镜像仓库服务 244
17.2.6 提升镜像 247
17.2.7 HTTP路由网格(HRM) 250
17.3 本章小结 253
附录A 安全客户端与daemon的通信 255
附录B DCA考试 265
附录C 延伸 270
Kubernetes源码剖析
内容简介
本书主要分析了Kubernetes核心功能的实现原理,是一本帮助读者了解Kubernetes架构设计及内部原理实现的书。由于Kubernetes代码量较大,源码不容易理解,所以本书将梳理相关知识点,帮助读者快速学习。
本书共分为8章,1章简要介绍了Kubernetes架构的核心组件,以及每个核心组件在架构中的作用;2章主要介绍了Kubernetes构建过程中的源码实现;3章主要介绍了Kubernetes的核心数据结构定义及围绕资源展开的核心功能;4章主要介绍了kubectl命令行交互工具的实现机制;5章主要介绍了client-go编程式交互工具的实现机制;6章主要介绍了Etcd存储的核心实现;7章主要介绍了kube-apiserver组件的核心实现;8章主要介绍了kube-scheduler组件的核心实现。
目录
1章Kubernetes架构1
1.1Kubernetes的发展历史1
1.2Kubernetes架构图2
1.3Kubernetes各组件的功能4
1.3.1kubectl5
1.3.2client-go5
1.3.3kube-apiserver5
1.3.4kube-controller-manager6
1.3.5kube-scheduler7
1.3.6kubelet7
1.3.7kube-proy8
1.4KubernetesProjectLayout设计9
2章Kubernetes构建过程13
2.1构建方式13
2.2本地环境构建15
2.2.1一切都始于Makefile16
2.2.2本地构建过程17
2.3容器环境构建18
2.4Bazel环境构建22
2.4.1使用Bazel构建和测试Kubernetes源码23
2.4.2Bazel的工作原理25
2.5代码生成器26
2.5.1Tags27
2.5.2deepcopy-gen代码生成器29
2.5.3defaulter-gen代码生成器30
2.5.4conversion-gen代码生成器32
2.5.5openapi-gen代码生成器34
2.5.6go-bindata代码生成器36
2.6代码生成过程37
2.7gengo代码生成核心实现40
2.7.1代码生成逻辑与编译器原理41
2.7.2收集Go包信息42
2.7.3代码解析45
2.7.4类型系统48
2.7.5代码生成51
3章Kubernetes核心数据结构57
3.1Group、Version、Resource核心数据结构57
3.2ResourceList59
3.3Group62
3.4Version63
3.5Resource65
3.5.1资源外部版本与内部版本66
3.5.2资源代码定义68
3.5.3将资源注册到资源注册表中71
3.5.4资源版本71
3.5.5资源作方法72
3.5.6资源与命名空间75
3.5.7自定义资源77
3.5.8资源对象描述文件定义78
3.6Kubernetes内置资源全图79
3.7runtime.Object类型基石83
3.8Unstructured数据85
3.9Scheme资源注册表87
3.9.1Scheme资源注册表数据结构87
3.9.2资源注册表注册方法91
3.9.3资源注册表查询方法92
3.10Codec编解码器92
3.10.1Codec编解码实例化94
3.10.2jsonSerializer与yamlSerializer序列化器95
3.10.3protobufSerializer序列化器98
3.11Converter资源版本转换器100
3.11.1Converter转换器数据结构101
3.11.2Converter注册转换函数102
3.11.3Converter资源版本转换原理104
4章kubectl命令行交互111
4.1kubectl命令行参数详解111
4.2Cobra命令行参数解析114
4.3创建资源对象的过程119
4.3.1编写资源对象描述文件120
4.3.2实例化Factory接口120
4.3.3Builder构建资源对象121
4.3.4Visitor多层匿名函数嵌套122
5章client-go编程式交互128
5.1client-go源码结构128
5.2Client客户端对象129
5.2.1kubeconfig配置管理130
5.2.2RESTClient客户端134
5.2.3ClientSet客户端137
5.2.4DynamicClient客户端139
5.2.5DiscoveryClient客户端141
5.3Informer机制144
5.3.1Informer机制架构设计145
5.3.2Reflector149
5.3.3DeltaFIFO154
5.3.4Indeer158
5.4WorkQueue162
5.4.1FIFO队列163
5.4.2延迟队列165
5.4.3限速队列166
5.5EventBroadcaster事件管理器170
5.6代码生成器176
5.6.1client-gen代码生成器176
5.6.2lister-gen代码生成器180
5.6.3informer-gen代码生成器182
5.7其他客户端185
6章Etcd存储核心实现187
6.1Etcd存储架构设计187
6.2RESTStorage存储服务通用接口189
6.3RegistryStore存储服务通用作190
6.4Storage.Interface通用存储接口192
6.5CacherStorage缓存层194
6.5.1CacherStorage缓存层设计195
6.5.2ResourceVersion资源版本号199
6.5.3watchCache缓存滑动窗口201
6.6UnderlyingStorage底层存储对象204
6.7Codec编解码数据206
6.8Strategy预处理209
6.8.1创建资源对象时的预处理作209
6.8.2更新资源对象时的预处理作211
6.8.3删除资源对象时的预处理作212
6.8.4导出资源对象时的预处理作213
7章kube-apiserver核心实现214
7.1热身概念215
7.1.1go-restful核心原理215
7.1.2一次HTTP请求的完整生命周期218
7.1.3OpenAPI/Swagger核心原理219
7.1.4HTTPS核心原理222
7.1.5gRPC核心原理224
7.1.6go-to-protobuf代码生成器225
7.2kube-apiserver命令行参数详解231
7.3kube-apiserver架构设计详解243
7.4kube-apiserver启动流程244
7.4.1资源注册245
7.4.2Cobra命令行参数解析248
7.4.3创建APIServer通用配置249
7.4.4创建APIEtensionsServer257
7.4.5创建KubeAPIServer261
7.4.6创建AggregatorServer266
7.4.7创建GenericAPIServer269
7.4.8启动HTTP服务270
7.4.9启动HTTPS服务272
7.5权限控制272
7.6认证273
7.6.1BasicAuth认证276
7.6.2ClientCA认证277
7.6.3TokenAuth认证278
7.6.4BootstrapToken认证279
7.6.5RequestHeader认证281
7.6.6WebhookTokenAuth认证282
7.6.7Anymous认证284
7.6.8OIDC认证285
7.6.9ServiceAccountAuth认证288
7.7授权291
7.7.1AlwaysAllow授权295
7.7.2AlwaysDeny授权296
7.7.3ABAC授权297
7.7.4Webhook授权298
7.7.5RBAC授权300
7.7.6de授权309
7.8准入控制器310
7.8.1AlwaysPullImages准入控制器315
7.8.2PoddeSelector准入控制器316
7.9进程信号处理机制318
7.9.1常驻进程实现318
7.9.2进程的优雅关闭319
7.9.3向systemd报告进程状态320
8章kube-scheduler核心实现321
8.1kube-scheduler命令行参数详解321
8.2kube-scheduler架构设计详解324
8.3kube-scheduler组件的启动流程326
8.3.1内置调度算法的注册327
8.3.2Cobra命令行参数解析328
8.3.3实例化Scheduler对象329
8.3.4运行EventBroadcaster事件管理器331
8.3.5运行HTTP或HTTPS服务331
8.3.6运行Informer同步资源332
8.3.7领导者选举实例化332
8.3.8运行sched.Run调度器333
8.4优先级与抢占机制333
8.5亲和性调度335
8.5.1deAffinity336
8.5.2PodAffinity337
8.5.3PodAntiAffinity338
8.6内置调度算法339
8.6.1预选调度算法339
8.6.2优选调度算法340
8.7调度器核心实现342
8.7.1调度器运行流程342
8.7.2调度过程343
8.7.3Preempt抢占机制351
8.7.4bind绑定机制356
8.8领导者选举机制357
8.8.1资源锁358
8.8.2领导者选举过程360


暂时没有目录,请见谅!