新書推薦:
《
盛世长安(实景还原 + 考古成果 + 文献印证,全景式呈现长安从汉到唐的城市细节)
》
售價:HK$
107.8
《
世界情报组织秘密行动:上下册
》
售價:HK$
217.8
《
梁思成眼中的中国建筑史
》
售價:HK$
96.8
《
女性心理学
》
售價:HK$
87.8
《
CEO的五项修炼
》
售價:HK$
96.8
《
叹为观纸 中国古纸的传说与历史
》
售價:HK$
86.9
《
中国历代男子服饰:图解中国男子传统服饰 解密古代男子穿什么 为什么这样穿
》
售價:HK$
107.8
《
经济学的观念:13位经济学巨匠和他们改变世界的思想(一本书领略群星璀璨的百年经济思想史)
》
售價:HK$
85.8
編輯推薦:
本书由Kubernetes联合创始人Brendan Burns领衔撰写,系统剖析生产环境Kubernetes全栈技术。涵盖集群搭建、CI/CD流水线、全球化部署、资源调度、服务网格、安全加固等核心场景,第2版新增混沌工程实践、GitOps标准化、多集群管理策略及机器学习工作流支持等内容。通过数十个企业级代码示例(含Prometheus监控模板、Gatekeeper策略引擎等),提供从开发到运维的闭环解决方案。
內容簡介:
本书是管理大规模容器编排的大师级读物,涵盖了所有最新的Kubernetes功能、工具和弃用内容。在本书中,四位在分布式系统、企业应用开发和开源领域有着丰富经验的Kubernetes专家对使用 Kubernetes 容器编排系统构建应用进行了全程指导。本书内容丰富,涵盖开发者工作流、监控和度量指标、配置管理、持续集成和测试、版本控制与发布、应用程序的全球化部署、资源管理、网络、Pod安全、集群策略与治理、多集群管理、外部服务集成、机器学习、在Kubernetes上构建高层应用的模式、状态管理和有状态应用、准入控制与授权、GitOps、安全性、混沌测试、实现Operator等,是一本非常全面的实践指南。
關於作者:
endan Burns是微软Azure的杰出工程师,也是Kubernetes开源项目的联合创始人。
Eddie Villalba是Google Cloud北美地区的工程管理者兼应用平台实践负责人,专注于云原生生态系统和Kubernetes。
Dave Strebel是一位专注于开源云与Kubernetes的首席云原生架构师。
Lachlan Evenson是微软Azure云原生生态系统的首席项目经理。
张扬,思特沃克软件技术(武汉)有限公司资深咨询师。从事DevOps和云原生相关解决方案设计、咨询和交付工作。中国 DevOps 社区核心组织者。译著有《Kubernetes实战》
目錄 :
目录
前言1
第1章 搭建一个基本服务7
1.1 应用程序概览 7
1.2 管理配置文件7
1.3 使用Deployment创建多副本服务9
1.3.1 镜像管理的最佳实践9
1.3.2 创建多副本应用程序10
1.4 为HTTP流量配置外部Ingress12
1.5 使用ConfigMap配置应用程序13
1.6 使用Secret管理认证14
1.7 部署简单的有状态数据库17
1.8 使用Service创建TCP负载均衡器20
1.9 使用Ingress将流量路由到静态文件服务器21
1.10 使用Helm将你的应用程序参数化23
1.11 部署服务的最佳实践25
1.12 本章小结25
第2章 开发者工作流26
2.1 目的26
2.2 搭建开发环境集群 27
2.3 为多个开发者搭建共享集群 28
2.3.1 添加用户 28
2.3.2 创建和保护命名空间31
2.3.3 管理命名空间32
2.3.4 集群级服务33
2.4 启用开发者工作流34
2.4.1 环境初始化34
2.4.2 启动开发35
2.4.3 启动测试与调试35
2.5 搭建开发环境的最佳实践36
2.6 本章小结37
第3章 监控和日志38
3.1 指标与日志38
3.2 监控技术38
3.3 监控模式39
3.4 Kubernetes 指标概述40
3.4.1 cAdvisor40
3.4.2 Metrics Server40
3.4.3 kube-state-metrics41
3.5 我应该监控哪些指标42
3.6 监控工具43
3.7 使用Prometheus监控Kubernetes45
3.8 日志概述48
3.9 日志工具50
3.10 使用Loki-Stack记录日志50
3.11 告警53
3.12 监控、日志和告警的最佳实践54
3.12.1 监控54
3.12.2 日志55
3.12.3 告警55
3.13 本章小结55
第4章 配置、Secret和RBAC 56
4.1 通过ConfigMap和Secret配置应用56
4.1.1 ConfigMap56
4.1.2 Secret57
4.2 ConfigMap和Secret API的通用最佳实践58
4.3 Secret 特定的最佳实践62
4.4 RBAC63
4.4.1 RBAC入门64
4.4.2 RBAC最佳实践65
4.5 本章小结66
第5章 持续集成、测试和部署67
5.1 版本控制68
5.2 持续集成68
5.3 测试68
5.4 容器构建69
5.5 为容器镜像打标签70
5.6 持续部署70
5.7 部署策略71
5.8 生产环境中的测试74
5.9 搭建流水线并进行混沌实验76
5.9.1 搭建CI76
5.9.2 搭建CD79
5.9.3 执行滚动升级79
5.9.4 简单的混沌实验79
5.10 CI/CD的最佳实践80
5.11 本章小结81
第6章 版本控制、发布和上线82
6.1 版本控制82
6.2 发布83
6.3 上线83
6.4 综合示例84
6.5 版本控制、发布以及上线的最佳实践 87
6.6 本章小结88
第7章 全球化应用的分发和预演89
7.1 镜像的分发89
7.2 参数化部署91
7.3 全球流量负载均衡91
7.4 可靠的全球化上线91
7.4.1 上线前验证92
7.4.2 金丝雀区域94
7.4.3 识别区域类型95
7.4.4 进行全球上线96
7.5 如何应对出现的问题96
7.6 全球化上线的最佳实践97
7.7 本章小结98
第8章 资源管理99
8.1 Kubernetes Scheduler99
8.1.1 预选99
8.1.2 优选100
8.2 高级调度技术101
8.2.1 Pod的亲和性和反亲和性101
8.2.2 nodeSelector102
8.2.3 污点和容忍102
8.3 Pod资源管理104
8.3.1 资源请求104
8.3.2 资源限制和Pod服务质量105
8.3.3 PodDisruptionBudget106
8.3.4 使用命名空间管理资源108
8.3.5 ResourceQuota109
8.3.6 LimitRange110
8.3.7 集群的扩缩容111
8.3.8 应用程序的扩缩容112
8.3.9 通过HPA进行扩缩容113
8.3.10 自定义指标的 HPA114
8.3.11 Pod垂直自动伸缩114
8.4 资源管理的最佳实践115
8.5 本章小结115
第9章 网络、网络安全与服务网格116
9.1 Kubernetes的网络原则116
9.2 网络插件117
9.2.1 Kubenet118
9.2.2 Kubenet最佳实践118
9.2.3 CNI插件119
9.2.4 CNI最佳实践120
9.3 Kubernetes中的Service120
9.3.1 ClusterIP服务类型121
9.3.2 NodePort服务类型122
9.3.3 ExternalName服务类型122
9.3.4 LoadBalancer 服务类型 123
9.3.5 Ingress和Ingress控制器124
9.3.6 Gateway API126
9.3.7 Service和Ingress控制器的最佳实践128
9.4 网络安全策略128
9.5 网络策略的最佳实践130
9.6 服务网格132
9.7 服务网格的最佳实践133
9.8 本章小结134
第10章 Pod和容器安全135
10.1 Pod安全性准入控制器135
10.1.1 启用Pod安全性准入控制136
10.1.2 Pod安全性级别136
10.1.3 使用命名空间标签激活Pod安全性137
10.2 工作负载隔离和运行时类137
10.2.1 使用运行时类139
10.2.2 运行时的实现139
10.2.3 工作负载隔离和RuntimeClass的最佳实践 139
10.3 其他Pod和容器安全性注意事项140
10.3.1 准入控制器 140
10.3.2 入侵和异常检测工具140
10.4 本章小结140
第11章 集群的策略和治理141
11.1 为什么策略和治理很重要141
11.2 这里所说的策略有何不同141
11.3 云原生策略引擎142
11.4 Gatekeeper简介142
11.4.1 策略示例142
11.4.2 Gatekeeper术语143
11.4.3 定义约束模板143
11.4.4 定义约束145
11.4.5 数据复制146
11.4.6 用户体验146
11.5 利用强制措施和审核147
11.5.1 变更策略148
11.5.2 测试策略149
11.5.3 熟悉Gatekeeper149
11.6 策略和治理的最佳实践 149
11.7 本章小结150
第12章 多集群管理151
12.1 为什么需要多集群 151
12.2 多集群设计的考量 153
12.3 多集群部署管理 154
12.4 部署和管理模式155
12.5 GitOps集群管理方式156
12.6 多集群管理工具 158
12.7 Kubernetes 联邦159
12.8 多集群管理的最佳实践159
12.9 本章小结160
第13章 外部服务与Kubernetes的集成161
13.1 将外部服务导入Kubernetes161
13.1.1 适用于固定IP地址的无选择算符Service162
13.1.2 适用于固定DNS名称的基于CNAME的Service162
13.1.3 主动基于控制器的方式164
13.2 将Kubernetes服务导出到外部 164
13.2.1 使用内部负载均衡器导出服务165
13.2.2 使用NodePort导出服务 166
13.2.3 集成外部机器和Kubernetes 167
13.3 在Kubernetes之间共享服务 167
13.4 第三方工具168
13.5 连接集群和外部服务的最佳实践 168
13.6 本章小结 169
第14章 在Kubernetes中运行机器学习170
14.1 为什么 Kubernetes 非常适合机器学习170
14.2 机器学习工作流 171
14.3 Kubernetes集群管理员与机器学习 172
14.3.1 Kubernetes上的模型训练 172
14.3.2 Kubernetes上的分布式训练175
14.3.3 资源约束176
14.3.4 专用硬件176
14.3.5 库、驱动和内核模块 177
14.3.6 存储177
14.3.7 网络178
14.3.8 专用协议178
14.4 数据科学家关心的事 179
14.5 在Kubernetes上进行机器学习的最佳实践179
14.6 本章小结180
第15章 在Kubernetes上构建更高层的应用程序模式181
15.1 开发更高层次的抽象的方法181
15.2 扩展Kubernetes182
15.2.1 扩展Kubernetes集群182
15.2.2 扩展Kubernetes用户体验184
15.2.3 让容器化开发更容易185
15.2.4 开发一键部署体验185
15.3 构建平台时的设计考量185
15.3.1 支持导出为容器镜像186
15.3.2 支持现有的服务和服务发现机制186
15.4 构建应用平台的最佳实践187
15.5 本章小结187
第16章 管理状态和有状态应用188
16.1 卷和卷挂载188
16.2 卷的最佳实践189
16.3 Kubernetes存储190
16.3.1 PersistentVolume 190
16.3.2 PersistentVolumeClaim191
16.3.3 StorageClass192
16.3.4 Kubernetes存储的最佳实践193
16.4 有状态应用194
16.4.1 StatefulSet194
16.4.2 Operator196
16.4.3 StatefulSet和Operator最佳实践197
16.5 本章小结198
第17章 准入控制与授权199
17.1 准入控制200
17.1.1 准入控制器是什么200
17.1.2 为什么准入控制器如此重要200
17.1.3 准入控制器的类型201
17.1.4 配置准入Webhook201
17.1.5 准入控制的最佳实践203
17.2 授权206
17.2.1 授权模块206
17.2.2 授权的最佳实践209
17.3 本章小结209
第18章 GitOps和部署210
18.1 GitOps是什么211
18.2 为什么需要GitOps212
18.3 GitOps代码库结构213
18.4 机密信息管理215
18.5 设置Flux216
18.6 GitOps工具218
18.7 GitOps的最佳实践219
18.8 本章小结219
第19章 安全性220
19.1 集群安全性220
19.1.1 etcd的访问221
19.1.2 认证221
19.1.3 授权221
19.1.4 TLS221
19.1.5 Kubelet和云端元数据访问222
19.1.6 机密信息222
19.1.7 日志与审计222
19.1.8 集群安全水平感知工具222
19.2 集群安全性最佳实践223
19.3 工作负载容器的安全性223
19.3.1 Pod安全性准入223
19.3.2 Seccomp、AppArmor和SELinux223
19.3.3 准入控制器224
19.3.4 Operator224
19.3.5 网络策略224
19.3.6 运行时安全224
19.3.7 工作负载容器安全性最佳实践225
19.4 代码安全性225
19.4.1 非root容器和distroless容器226
19.4.2 容器安全漏洞扫描226
19.4.3 代码仓库安全226
19.5 代码安全性最佳实践226
19.6 本章小结227
第20章 混沌测试、负载测试和试验228
20.1 混沌测试228
20.1.1 混沌测试的目标228
20.1.2 混沌测试的先决条件229
20.1.3 应用程序通信的混沌测试229
20.1.4 应用程序运行的混沌测试230
20.1.5 应用程序安全性和韧性的模糊测试231
20.1.6 混沌测试小结231
20.2 负载测试232
20.2.1 负载测试的目标232
20.2.2 负载测试的先决条件233
20.2.3 获取真实的流量233
20.2.4 应用程序的负载测试234
20.2.5 使用负载测试调优应用程序234
20.2.6 负载测试小结235
20.3 试验235
20.3.1 试验的目标235
20.3.2 试验的先决条件236
20.3.3 设立一个试验236
20.3.4 试验小结237
20.4 本章小结237
第21章 实现一个Operator238
21.1 Operator的核心组件238
21.2 定制资源定义239
21.3 创建API240
21.4 控制器调谐247
21.5 资源验证248
21.6 控制器的实现249
21.7 Operator的生命周期254
21.7.1 版本更新254
21.7.2 Operator 的最佳实践255
21.8 本章小结256
第22章 结束语257
內容試閱 :
前言
目标读者
Kubernetes是云原生开发的事实标准。它是一个功能强大的工具,可以使应用程序开发 更容易、部署更快、运行更可靠。但是,只有正确使用Kubernetes才能发挥它最大的价值。本书的目标读者是那些需要将应用程序部署到Kubernetes,以及有兴趣学习可应用于在Kubernetes上构建的应用程序的模式和实践的人员。
需要注意的是,本书并不是Kubernetes的入门指南。我们假设你对Kubernetes API和工具有基本的了解,并且知道如何创建 Kubernetes集群并与之交互。如果你想学习Kubernetes的基础知识,可以找到很多优秀的资源,例如 Kubernetes: Up and Running (O’Reilly)。
本书面向的是那些想要深入了解如何在Kubernetes 上部署特定应用程序和工作负载的 人。无论你是刚准备将第一个应用程序部署到 ubernetes,还是已经使用Kubernetes多年,本书都会对你有帮助。
为什么写这本书
我们对如何帮助人们将应用程序部署到Kubernetes有着丰富的经验。基于这些经验,我们清楚地知道人们的痛点在哪里,可以帮助他们找到成功之道。在编写本书时,我们试 图总结这些经验,以便更多的人可以学习在实践中积累的知识。同时,我们希望能够将这些经验记录下来并且传播出去,使人们能够独立地在Kubernetes上成功地部署和管理 应用程序。
本书概览
很可能你会一口气就把整本书从头到尾浏览完,但这并不是我们真正希望的。相反,我们将本书设计成一个个独立章节的集合。每一章都完整阐述了可能需要使用Kubernetes完成的特定任务。你可以根据需要学习本书某章,以了解某个特定的主题或感兴趣的部 分,然后将它放在一边,直到有新的主题要了解时再拿起它。
尽管采用了这种章节独立的组织方式,但还是会有一些主题贯穿多个章节。有几章是关于 Kubernetes 上的应用程序开发的:第 2 章介绍开发者工作流,第 5 章探讨持续集成、 测试和部署,第 15 章介绍如何在 Kubernetes 上构建更高层的应用程序模式,第 16 章论述管理状态和有状态应用。除了应用程序开发之外,还有几章是关于 Kubernetes 中的服 务运维的:第 1 章介绍如何搭建一个基本服务,第 3 章介绍监控和日志,第 4 章介绍配 置管理,第 6 章介绍版本控制、发布和上线,第 7 章介绍应用程序的全球化部署。
还有几章是关于集群管理的:第 8 章关于资源管理,第 9 章关于网络,第 10 章关于 Pod 和容 器安全,第 11 章关于集群策略与治理,第 12 章关于多集群管理,第 17 章关于准入控制与授 权。最后,有几章是完全独立的,其中包括第 13 章(外部服务集成)和第 14 章(机器学习)。
尽管在付诸实践之前先阅读所有章节可能会很有用,但我们更希望你能将本书当作参考手册来使用。它旨在作为指南,为你在实际工作中实践这些主题时提供指导。
版本更新
我们希望用4个新章来补充第 1 版,这些章涵盖了随着Kubernetes不断成熟并提供最佳 实践而出现的新兴工具和模式:第 18 章关于GitOps,第 19 章关于安全性,第 20 章关于混沌测试、负载测试和试验,第 21 章关于实现 Operator。