KUBERNETES即学即用(第三版) 版权信息
- ISBN:9787519891787
- 条形码:9787519891787 ; 978-7-5198-9178-7
- 装帧:一般胶版纸
- 册数:暂无
- 重量:暂无
- 所属分类:>
KUBERNETES即学即用(第三版) 本书特色
Kubernetes从根本上改变了开发人员和运维人员在云中构建、部署以及维护应用程序的方式。无论你是分布式系统的新手,还是多年来一直在部署云原生应用程序的老手,这款流行的容器编排器都可以帮助你在速度、敏捷性、可靠性以及效率等方面更上一层楼。
本书讲解了如何将Kubernetes融入分布式应用程序的生命周期。无论你是软件开发人员、工程师还是架构师,无论你的系统是在线服务、机器学习应用程序,还是树莓派计算机集群,都可以通过本书学习如何使用各种工具以及API来实现可扩展分布式系统的自动化。
“本书由四位*权威的云原生系统专家撰写而成,为学习Kubernetes概念打下坚实的基础,书中提供了大量示例可以帮助读者自行探索Kubernetes。”
——Liz Rice,Isovalent
KUBERNETES即学即用(第三版) 内容简介
本书的主要内容包括:创建一个简单的集群,了解Kubernetes的基本工作原理。深入了解使用Kubernetes部署应用程序的细节。学习Kubernetes的专属对象,如守护进程集、作业、ConfigMap以及机密等。探索如何通过部署组织应用程序的整个生命周期。学习如何保护应用程序部署的安全。学习部署多集群应用程序,以及通过编程语言访问Kubernetes。
KUBERNETES即学即用(第三版) 目录
目录
前言 1
第1 章 概述 9
1.1 速度 .10
1.1.1 不可变性的价值 11
1.1.2 声明式配置 12
1.1.3 自我修复系统 13
1.2 扩展服务和团队 14
1.2.1 解耦 15
1.2.2 轻松扩展应用程序和集群 15
1.2.3 通过微服务扩展开发团队 16
1.2.4 统一性与扩展的关注点分离 .17
1.3 基础设施的抽象 19
1.4 效率 .20
1.5 云原生生态系统 21
1.6 小结 .22
第2 章 创建和运行容器 .23
2.1 容器镜像25
2.2 使用Docker 构建应用程序镜像 27
2.2.1 Dockerfiles .27
2.2.2 优化镜像的大小 29
2.2.3 镜像安全 .31
2.3 多阶段镜像构建 31
2.4 将镜像存储到远程仓库 .34
2.5 容器运行时接口 35
2.5.1 通过Docker 运行容器 35
2.5.2 探索kuard 应用程序 .36
2.5.3 限制资源使用 36
2.6 清理 .37
2.7 小结 .38
第3 章 部署Kubernetes 集群 .39
3.1 在公共云上安装Kubernetes 40
3.1.1 Google Kubernetes Engine .40
3.1.2 使用Azure Kubernetes 服务安装Kubernetes 41
3.1.3 在AWS 上安装Kubernetes 42
3.2 使用minikube 在本地安装Kubernetes 42
3.3 在Docker 中运行Kubernetes .43
3.4 Kubernetes 客户端 44
3.4.1 检查集群状态 44
3.4.2 列出Kubernetes 的节点 45
3.5 集群组件47
3.5.1 Kubernetes 代理 48
3.5.2 Kubernetes DNS 48
3.5.3 Kubernetes 用户界面 .49
3.6 小结 .49
第4 章 常用的kubectl 命令 51
4.1 命名空间51
4.2 上下文 51
4.3 查看Kubernetes API 对象 52
4.4 创建、更新和销毁Kubernetes 对象 53
4.5 对象的标签与注释 55
4.6 调试命令55
4.7 集群管理58
4.8 自动补齐命令 .58
4.9 查看集群的其他方法 59
4.10 小结 59
第5 章 Pod .61
5.1 Kubernetes 中的Pod 62
5.2 Pod 的应用思路 .63
5.3 Pod 清单 63
5.3.1 创建Pod 64
5.3.2 创建Pod 清单 65
5.4 运行Pod 66
5.4.1 查询Pod 列表 66
5.4.2 Pod 的详细信息 67
5.4.3 删除Pod 68
5.5 访问Pod 69
5.5.1 通过日志获取更多信息 69
5.5.2 使用exec 在容器中运行命令 70
5.5.3 在容器之间复制文件.70
5.6 健康检查70
5.6.1 存活探针 .71
5.6.2 就绪探针 .72
5.6.3 启动探针 .73
5.6.4 高级探针配置 73
5.6.5 其他类型的健康检查.73
5.7 资源管理73
5.7.1 资源请求:所需的*少资源量 .74
5.7.2 通过约束限制资源使用量 76
5.8 利用卷持久保存数据 77
5.8.1 在Pod 中使用卷 77
5.8.2 Pod 中卷的不同使用方式 78
5.9 综合讨论79
5.10 小结 81
第6 章 标签与注释 83
6.1 标签 .83
6.1.1 应用标签 .85
6.1.2 修改标签 .86
6.1.3 标签选择器 87
6.1.4 API 对象中的标签选择器 89
6.1.5 Kubernetes 架构中的标签 90
6.2 注释 .90
6.3 清理 .92
6.4 小结 .92
第7 章 服务发现 95
7.1 什么是服务发现 95
7.2 服务对象96
7.2.1 DNS 服务 97
7.2.2 就绪检查 .98
7.3 向外公开集群服务 .100
7.4 负载均衡器整合 .102
7.5 高级集成.104
7.5.1 端点 .105
7.5.2 手动发现服务 .106
7.5.3 kube-proxy 与集群IP .107
7.5.4 集群IP 环境变量 .108
7.6 连接到其他环境 .109
7.6.1 连接到集群外部的资源 .109
7.6.2 将外部资源连接到集群内部的服务 110
7.7 清理 110
7.8 小结 110
第8 章 Ingress 的HTTP 负载均衡 . 113
8.1 Ingress 规范与Ingress 控制器 . 114
8.2 安装Contour 115
8.2.1 配置DNS . 116
8.2.2 配置本地hosts 文件 117
8.3 使用Ingress 117
8.3.1 *简单的用法 . 118
8.3.2 使用主机名 . 119
8.3.3 使用路径 121
8.3.4 清理 .122
8.4 Ingress 的高级话题和技巧 .122
8.4.1 运行多个Ingress 控制器 122
8.4.2 多个Ingress 对象 .123
8.4.3 Ingress 与命名空间 .123
8.4.4 改写路径 124
8.4.5 提供TLS 124
8.5 其他Ingress 实现 126
8.6 Ingress 的未来 .126
8.7 小结 127
第9 章 副本集 . 129
9.1 协调循环.130
9.2 Pod 与副本集的关系 130
9.2.1 采用现有的容器 131
9.2.2 隔离容器 131
9.3 副本集的设计思想 .132
9.4 副本集的规范 132
9.4.1 Pod 模板 133
9.4.2 标签 .133
9.5 创建副本集 134
9.6 检查副本集 134
9.6.1 根据Pod 查找副本集 .135
9.6.2 查找副本集管理的Pod 集合 135
9.7 副本集的伸缩 135
9.7.1 副本集的命令式伸缩:kubectl scale 136
9.7.2 副本集的声明式伸缩:kubectl apply .136
9.7.3 自动伸缩副本集 137
9.8 删除副本集 139
9.9 小结 139
第10 章 部署 141
10.1 首次部署 142
10.2 创建部署 144
10.3 管理部署 146
10.4 更新部署 147
10.4.1 扩展部署 148
10.4.2 更新容器镜像 148
10.4.3 推出的历史记录 .150
10.5 部署策略 153
10.5.1 重建策略 153
10.5.2 滚动更新策略 153
10.5.3 放慢部署速度以确保服务健康 157
10.6 删除部署 158
10.7 监控部署 159
10.8 小结 159
第11 章 守护进程集 161
11.1 守护进程集调度器 162
11.2 创建守护进程集 163
11.3 将守护进程集限制到特定节点 .165
11.3.1 向节点添加标签 .165
11.3.2 节点选择器 166
11.4 更新守护进程集 167
11.5 删除守护进程集 169
11.6 小结 169
第12 章 作业 171
12.1 作业对象 171
12.2 作业模式 172
12.2.1 一次性作业172
12.2.2 并行性 .177
12.2.3 工作队列 179
12.3 定时作业 184
12.4 小结 185
第13 章 ConfigMap 与机密 187
13.1 ConfigMap 187
13.1.1 创建ConfigMap .188
13.1.2 使用ConfigMap .189
13.2 机密 192
13.2.1 创建机密 193
13.2.2 消费机密 194
13.2.3 私有容器仓库 195
13.3 命名约束 197
13.4 管理ConfigMap 和机密 197
13.4.1 显示列表 198
13.4.2 创建 198
13.4.3 更新 199
13.5 小结 201
第14 章 基于角色的访问控制 203
14.1 基于角色的访问控制 .204
14.1.1 Kubernetes 中的身份 204
14.1.2 角色和角色绑定 .205
14.1.3 Kubernetes 中的角色和角色绑定 205
14.2 RBAC 的管理技巧 208
14.2.1 使用can-i 测试授权 .208
14.2.2 通过源代码控制管理RBAC 209
14.3 高级主题 209
14.3.1 聚合集群角色 210
14.3.2 分组绑定 210
14.4 小结 212
第15 章 服务网格 213
15.1 双向TLS 加密与身份验证 .214
15.2 流量整形 214
15.3 内省 215
15.4 你真的需要服务网格吗 216
15.5 服务网格的实现 216
15.6 服务网格的发展前景 .217
15.7 小结 218
第16 章 存储解决方案与Kubernetes 的集成 . 219
16.1 导入外部服务 220
16.1.1 没有选择器的服务 221
16.1.2 外部服务的局限性:健康检查 223
16.2 运行可靠的单例 224
16.2.1 运行MySQL 单例服务 224
16.2.2 动态卷供应228
16.3 利用状态集实现Kubernetes 原生存储 .230
16.3.1 状态集的属性 230
16.3.2 利用状态集手动复制MongoDB.231
16.3.3 自动化MongoDB 集群的创建 234
16.3.4 持久卷与状态集 .237
16.3.5 *后一步:存活探针 238
16.4 小结 238
第17 章 扩展Kubernetes 239
17.1 扩展Kubernetes 意味着什么 .239
17.2 可扩展点 240
17.3 自定义资源的模式 250
17.3.1 仅有数据 250
17.3.2 编译器 .250
17.3.3 操作器 .251
17.3.4 如何入门 251
17.4 小结 .251
第18 章 利用常见的编程语言访问Kubernetes . 253
18.1 Kubernetes API:客户端的视角 253
18.1.1 OpenAPI 与生成的客户端库 254
18.1.2 kubectl 命令 .254
18.2 Kubernetes API 编程 255
18.2.1 安装客户端库 255
18.2.2 Kubernetes API 的身份验证 .256
18.2.3 访问Kubernetes API 258
18.2.4 综合所有步骤:使用Python、Java 或.NET 列出和创建Pod 258
18.2.5 对象的创建与部分更新 260
18.2.6 监控Kubernetes API 的变化 263
18.2.7 与Pod 互动 265
18.3 小结 268
第19 章 Kubernetes 应用程序的安全 269
19.1 安全上下文 .269
19.2 Pod 安全 277
19.2.1 Pod 安全是什么 277
19.2.2 应用Pod 安全标准 278
19.3 服务账号管理 281
19.4 基于角色的访问控制 .282
19.5 运行时类 282
19.6 网络策略 284
19.7 服务网格 288
19.8 安全基准工具 288
19.9 镜像安全 290
19.10 小结 .290
第20 章 Kubernetes 集群的管理策略 291
20.1 策略的重要性 291
20.2 准入流程 292
20.3 Gatekeeper 的策略 293
20.3.1 开放策略代理 294
20.3.2 安装Gatekeeper .294
20.3.3 配置策略 296
20.3.4 约束模板 300
20.3.5 创建约束 300
20.3.6 审计 301
20.3.7 变更 303
20.3.8 数据复制 305
20.3.9 指标 307
20.3.10 策略库 307
20.4 小结 307
第21 章 多集群应用程序的部署 309
21.1 打好基础 310
21.2 负载均衡 312
21.3 构建跨多个集群的应用程序 313
21.3.1 复制孤岛:*简单的跨区域模型 315
21.3.2 分片:区域数据 .316
21.3.3 更好的灵活性:微服务路由 317
21.4 小结 318
第22 章 组织应用程序 . 319
22.1 指导原则 319
22.1.1 将文件系统作为唯一可信的真相来源.319
22.1.2 代码审查的作用 .320
22.1.3 特性门控 321
22.2 在源代码管理中管理应用程序 .322
22.2.1 文件系统的布局 .322
22.2.2 管理周期性的版本 323
22.3 从开发、测试与部署的角度组织应用程序的结构 .325
22.3.1 目标 326
22.3.2 发布的进展326
22.4 使用模板为应用程序添加参数 .328
22.4.1 使用Helm 和模板实现参数化 .328
22.4.2 文件系统布局的参数化 329
22.5 部署全球性的应用程序 330
22.5.1 全球部署架构 330
22.5.2 实现全球部署 332
22.5.3 面向全球部署的仪表板和监视 333
22.6 小结 334
附录 构建自己的Kubernetes 集群 335
展开全部
KUBERNETES即学即用(第三版) 作者简介
Brendan Burns,是Kubernetes的合伙创始人,微软Azure的杰出工程师,主要负责领导开发运维、开源以及微服务等团队。Joe Beda是Kubernetes的合伙创始人,曾任VMware的首席工程师,最z近刚刚退休。
Kelsey Hightower,是谷歌云计算部门的工程师兼开发倡导者,主要负责领导软件开发与发行工作。Lachlan Evenson是微软Azure容器计算团队的首席产品经理。他通过实践教学帮助很多人学会了使用Kubernetes。