Kubernetes实战(原书第2版)
Kubernetes实战(原书第2版)
Brendan Burns, Eddie Villalba, Dave Strebel, Lachlan Evenson
黄亚铭, 江海峰, 张扬 译
出版时间:2025年06月
页数:257
“这本书由云原生领域的杰出专家撰写,是一本关于大规模管理容器编排的权威指南。”
——Joseph Sandoval
Adobe公司首席产品经理
在这本实用指南中,四位在分布式系统、开源技术和企业应用程序开发领域拥有丰富经验的Kubernetes专家将指导你完成使用该容器编排系统构建应用程序的全过程。他们共同提炼了多家在生产环境中成功运行Kubernetes的公司数十年的经验,并提供了具体的代码示例来支持书中介绍的方法。
本书经过修订,涵盖了所有最新的Kubernetes功能、新工具和弃用内容,非常适合熟悉Kubernetes基本概念但希望快速掌握最新的最佳实践的读者。你将确切了解如何首次使用Kubernetes构建最优秀的应用程序。
通过学习本书,你将:
● 能够在Kubernetes中设置和开发应用程序。
● 学习监控、系统安全以及管理升级、部署和回滚的模式。
● 能够集成服务和传统应用程序,并在Kubernetes之上开发更高级别的平台。
● 能够在Kubernetes中运行机器学习工作负载。
● 能够确保Pod和容器的安全性。
● 能够在Kubernetes之上构建更高级别的应用程序模式和实现Operator。
● 了解对成功实施Kubernetes日益关键的问题:混沌工程/ 测试、GitOps、服务网格、可观测性和多集群管理。
  1. 前言
  2. 第1章 搭建一个基本服务
  3. 1.1 应用程序概览
  4. 1.2 管理配置文件
  5. 1.3 使用Deployment创建多副本服务
  6. 1.3.1 镜像管理的最佳实践
  7. 1.3.2 创建多副本应用程序
  8. 1.4 为HTTP流量配置外部Ingress
  9. 1.5 使用ConfigMap配置应用程序
  10. 1.6 使用Secret管理认证
  11. 1.7 部署简单的有状态数据库
  12. 1.8 使用Service创建TCP负载均衡
  13. 1.9 使用Ingress将流量路由到静态文件服务器
  14. 1.10 使用Helm将你的应用程序参数化
  15. 1.11 部署服务的最佳实践
  16. 1.12 本章小结
  17. 第2章 开发者工作流
  18. 2.1 目的
  19. 2.2 搭建开发环境集群
  20. 2.3 为多个开发者搭建共享集群
  21. 2.3.1 添加用户
  22. 2.3.2 创建和保护命名空间
  23. 2.3.3 管理命名空间
  24. 2.3.4 集群级服务
  25. 2.4 启用开发者工作流
  26. 2.4.1 环境初始化
  27. 2.4.2 启动开发
  28. 2.4.3 启动测试与调试
  29. 2.5 搭建开发环境的最佳实践
  30. 2.6 本章小结
  31. 第3章 监控和日志
  32. 3.1 指标与日志
  33. 3.2 监控技术
  34. 3.3 监控模式
  35. 3.4 Kubernetes指标概述
  36. 3.4.1 cAdvisor
  37. 3.4.2 Metrics Server
  38. 3.4.3 kube-state-metrics
  39. 3.5 我应该监控哪些指标
  40. 3.6 监控工具
  41. 3.7 使用Prometheus监控Kubernetes
  42. 3.8 日志概述
  43. 3.9 日志工具
  44. 3.10 使用Loki-Stack记录日志
  45. 3.11 告警
  46. 3.12 监控、日志和告警的最佳实践
  47. 3.12.1 监控
  48. 3.12.2 日志
  49. 3.12.3 告警
  50. 3.13 本章小结
  51. 第4章 配置、Secret和RBAC
  52. 4.1 通过ConfigMap和Secret配置应用
  53. 4.1.1 ConfigMap
  54. 4.1.2 Secret
  55. 4.2 ConfigMap和Secret API的通用最佳实践
  56. 4.3 Secret 特定的最佳实践
  57. 4.4 RBAC
  58. 4.4.1 RBAC入门
  59. 4.4.2 RBAC最佳实践
  60. 4.5 本章小结
  61. 第5章 持续集成、测试和部署
  62. 5.1 版本控制
  63. 5.2 持续集成
  64. 5.3 测试
  65. 5.4 容器构建
  66. 5.5 为容器镜像打标签
  67. 5.6 持续部署
  68. 5.7 部署策略
  69. 5.8 生产环境中的测试
  70. 5.9 搭建流水线并进行混沌实验
  71. 5.9.1 搭建CI
  72. 5.9.2 搭建CD
  73. 5.9.3 执行滚动升级
  74. 5.9.4 简单的混沌实验
  75. 5.10 CI/CD的最佳实践
  76. 5.11 本章小结
  77. 第6章 版本控制、发布和上线
  78. 6.1 版本控制
  79. 6.2 发布
  80. 6.3 上线
  81. 6.4 综合示例
  82. 6.5 版本控制、发布以及上线的最佳实践
  83. 6.6 本章小结
  84. 第7章 全球化应用的分发和预演
  85. 7.1 镜像的分发
  86. 7.2 参数化部署
  87. 7.3 全球流量负载均衡
  88. 7.4 可靠的全球化上线
  89. 7.4.1 上线前验证
  90. 7.4.2 金丝雀区域
  91. 7.4.3 识别区域类型
  92. 7.4.4 进行全球上线
  93. 7.5 如何应对出现的问题
  94. 7.6 全球化上线的最佳实践
  95. 7.7 本章小结
  96. 第8章 资源管理
  97. 8.1 Kubernetes Scheduler
  98. 8.1.1 预选
  99. 8.1.2 优选
  100. 8.2 高级调度技术
  101. 8.2.1 Pod的亲和性和反亲和性
  102. 8.2.2 nodeSelector
  103. 8.2.3 污点和容忍
  104. 8.3 Pod资源管理
  105. 8.3.1 资源请求
  106. 8.3.2 资源限制和Pod服务质量
  107. 8.3.3 PodDisruptionBudget
  108. 8.3.4 使用命名空间管理资源
  109. 8.3.5 ResourceQuota
  110. 8.3.6 LimitRange
  111. 8.3.7 集群的扩缩容
  112. 8.3.8 应用程序的扩缩容
  113. 8.3.9 通过HPA进行扩缩容
  114. 8.3.10 自定义指标的HPA
  115. 8.3.11 Pod垂直自动伸缩
  116. 8.4 资源管理的最佳实践
  117. 8.5 本章小结
  118. 第9章 网络、网络安全与服务网格
  119. 9.1 Kubernetes的网络原则
  120. 9.2 网络插件
  121. 9.2.1 Kubenet
  122. 9.2.2 Kubenet最佳实践
  123. 9.2.3 CNI插件
  124. 9.2.4 CNI最佳实践
  125. 9.3 Kubernetes中的Service
  126. 9.3.1 ClusterIP服务类型
  127. 9.3.2 NodePort服务类型
  128. 9.3.3 ExternalName服务类型
  129. 9.3.4 LoadBalancer 服务类型
  130. 9.3.5 Ingress和Ingress控制器
  131. 9.3.6 Gateway API
  132. 9.3.7 Service和Ingress控制器的最佳实践
  133. 9.4 网络安全策略
  134. 9.5 网络策略的最佳实践
  135. 9.6 服务网格
  136. 9.7 服务网格的最佳实践
  137. 9.8 本章小结
  138. 第10章 Pod和容器安全
  139. 10.1 Pod安全性准入控制器
  140. 10.1.1 启用Pod安全性准入控制
  141. 10.1.2 Pod安全性级别
  142. 10.1.3 使用命名空间标签激活Pod安全性
  143. 10.2 工作负载隔离和运行时类
  144. 10.2.1 使用运行时类
  145. 10.2.2 运行时的实现
  146. 10.2.3 工作负载隔离和RuntimeClass的最佳实践
  147. 10.3 其他Pod和容器安全性注意事项
  148. 10.3.1 准入控制器
  149. 10.3.2 入侵和异常检测工具
  150. 10.4 本章小结
  151. 第11章 集群的策略和治理
  152. 11.1 为什么策略和治理很重要
  153. 11.2 这里所说的策略有何不同
  154. 11.3 云原生策略引擎
  155. 11.4 Gatekeeper简介
  156. 11.4.1 策略示例
  157. 11.4.2 Gatekeeper术语
  158. 11.4.3 定义约束模板
  159. 11.4.4 定义约束
  160. 11.4.5 数据复制
  161. 11.4.6 用户体验
  162. 11.5 利用强制措施和审核
  163. 11.5.1 变更策略
  164. 11.5.2 测试策略
  165. 11.5.3 熟悉Gatekeeper
  166. 11.6 策略和治理的最佳实践
  167. 11.7 本章小结
  168. 第12章 多集群管理
  169. 12.1 为什么需要多集群
  170. 12.2 多集群设计的考量
  171. 12.3 多集群部署管理
  172. 12.4 部署和管理模式
  173. 12.5 GitOps集群管理方式
  174. 12.6 多集群管理工具
  175. 12.7 Kubernetes联邦
  176. 12.8 多集群管理的最佳实践
  177. 12.9 本章小结
  178. 第13章 外部服务与Kubernetes的集成
  179. 13.1 将外部服务导入Kubernetes
  180. 13.1.1 适用于固定IP地址的无选择算符Service
  181. 13.1.2 适用于固定DNS名称的基于CNAME的Service
  182. 13.1.3 主动基于控制器的方式
  183. 13.2 将Kubernetes服务导出到外部
  184. 13.2.1 使用内部负载均衡器导出服务
  185. 13.2.2 使用NodePort导出服务
  186. 13.2.3 集成外部机器和Kubernetes
  187. 13.3 在Kubernetes之间共享服务
  188. 13.4 第三方工具
  189. 13.5 连接集群和外部服务的最佳实践
  190. 13.6 本章小结
  191. 第14章 在Kubernetes中运行机器学习
  192. 14.1 为什么 Kubernetes非常适合机器学习
  193. 14.2 机器学习工作流
  194. 14.3 Kubernetes集群管理员与机器学习
  195. 14.3.1 Kubernetes上的模型训练
  196. 14.3.2 Kubernetes上的分布式训练
  197. 14.3.3 资源约束
  198. 14.3.4 专用硬件
  199. 14.3.5 库、驱动和内核模块
  200. 14.3.6 存储
  201. 14.3.7 网络
  202. 14.3.8 专用协议
  203. 14.4 数据科学家关心的事
  204. 14.5 在Kubernetes上进行机器学习的最佳实践
  205. 14.6 本章小结
  206. 第15章 在Kubernetes上构建更高层的应用程序模式
  207. 15.1 开发更高层次的抽象的方法
  208. 15.2 扩展Kubernetes
  209. 15.2.1 扩展Kubernetes集群
  210. 15.2.2 扩展Kubernetes用户体验
  211. 15.2.3 让容器化开发更容易
  212. 15.2.4 开发一键部署体验
  213. 15.3 构建平台时的设计考量
  214. 15.3.1 支持导出为容器镜像
  215. 15.3.2 支持现有的服务和服务发现机制
  216. 15.4 构建应用平台的最佳实践
  217. 15.5 本章小结
  218. 第16章 管理状态和有状态应用
  219. 16.1 卷和卷挂载
  220. 16.2 卷的最佳实践
  221. 16.3 Kubernetes存储
  222. 16.3.1 PersistentVolume
  223. 16.3.2 PersistentVolumeClaim
  224. 16.3.3 StorageClass
  225. 16.3.4 Kubernetes存储的最佳实践
  226. 16.4 有状态应用
  227. 16.4.1 StatefulSet
  228. 16.4.2 Operator
  229. 16.4.3 StatefulSet和Operator最佳实践
  230. 16.5 本章小结
  231. 第17章 准入控制与授权
  232. 17.1 准入控制
  233. 17.1.1 准入控制器是什么
  234. 17.1.2 为什么准入控制器如此重要
  235. 17.1.3 准入控制器的类型
  236. 17.1.4 配置准入Webhook
  237. 17.1.5 准入控制的最佳实践
  238. 17.2 授权
  239. 17.2.1 授权模块
  240. 17.2.2 授权的最佳实践
  241. 17.3 本章小结
  242. 第18章 GitOps和部署
  243. 18.1 GitOps是什么
  244. 18.2 为什么需要GitOps
  245. 18.3 GitOps代码库结构
  246. 18.4 机密信息管理
  247. 18.5 设置Flux
  248. 18.6 GitOps工具
  249. 18.7 GitOps的最佳实践
  250. 18.8 本章小结
  251. 第19章 安全性
  252. 19.1 集群安全性
  253. 19.1.1 etcd的访问
  254. 19.1.2 认证
  255. 19.1.3 授权
  256. 19.1.4 TLS
  257. 19.1.5 Kubelet和云端元数据访问
  258. 19.1.6 机密信息
  259. 19.1.7 日志与审计
  260. 19.1.8 集群安全水平感知工具
  261. 19.2 集群安全性最佳实践
  262. 19.3 工作负载容器的安全性
  263. 19.3.1 Pod安全性准入
  264. 19.3.2 Seccomp、AppArmor和SELinux
  265. 19.3.3 准入控制器
  266. 19.3.4 Operator
  267. 19.3.5 网络策略
  268. 19.3.6 运行时安全
  269. 19.3.7 工作负载容器安全性最佳实践
  270. 19.4 代码安全性
  271. 19.4.1 非root容器和distroless容器
  272. 19.4.2 容器安全漏洞扫描
  273. 19.4.3 代码仓库安全
  274. 19.5 代码安全性最佳实践
  275. 19.6 本章小结
  276. 第20章 混沌测试、负载测试和试验
  277. 20.1 混沌测试
  278. 20.1.1 混沌测试的目标
  279. 20.1.2 混沌测试的先决条件
  280. 20.1.3 应用程序通信的混沌测试
  281. 20.1.4 应用程序运行的混沌测试
  282. 20.1.5 应用程序安全性和韧性的模糊测试
  283. 20.1.6 混沌测试小结
  284. 20.2 负载测试
  285. 20.2.1 负载测试的目标
  286. 20.2.2 负载测试的先决条件
  287. 20.2.3 获取真实的流量
  288. 20.2.4 应用程序的负载测试
  289. 20.2.5 使用负载测试调优应用程序
  290. 20.2.6 负载测试小结
  291. 20.3 试验
  292. 20.3.1 试验的目标
  293. 20.3.2 试验的先决条件
  294. 20.3.3 设立一个试验
  295. 20.3.4 试验小结
  296. 20.4 本章小结
  297. 第21章 实现一个Operator
  298. 21.1 Operator的核心组件
  299. 21.2 定制资源定义
  300. 21.3 创建API
  301. 21.4 控制器调谐
  302. 21.5 资源验证
  303. 21.6 控制器的实现
  304. 21.7 Operator的生命周期
  305. 21.7.1 版本更新
  306. 21.7.2 Operator的最佳实践
  307. 21.8 本章小结
  308. 第22章 结束语
书名:Kubernetes实战(原书第2版)
译者:黄亚铭, 江海峰, 张扬 译
国内出版社:机械工业出版社
出版时间:2025年06月
页数:257
书号:978-7-111-78055-7
原版书书名:Kubernetes Best Practices, Second Edition
原版书出版商:O'Reilly Media
Brendan Burns
 
Brendan Burns是微软的杰出工程师,也是Kubernetes项目的共同创始人。目前在微软 Azure负责容器和DevOps相关工作。在加入微软之前,他在谷歌云平台上工作,帮助构建了Deployment Manager和Cloud DNS等API。在从事云计算之前,他曾在谷歌从事网络搜索基础架构方面工作,专注于低延迟索引。他拥有马萨诸塞州阿默斯特大学计算机科学博士学位,主修机器人技术。他和妻子Robin Sanders(以及两个孩子),还有一只名字叫Mrs. Paws的猫(用铁爪管理着他们的家)居住在美国西雅图。
 
 
Eddie Villalba
 
Eddie Villalba是微软商业软件工程部门的软件工程师,专注于开源云和Kubernetes。
 
 
Dave Strebel
 
Dave Strebel是微软Azure的全球云原生架构师,专注于开源云和Kubernetes。
 
 
Lachlan Evenson
 
Lachlan Evenson是微软Azure的容器计算团队的首席开发经理。
 
 
本书封面上的动物是老世界绿头鸭(学名 Anas platyrhynchos),这是一种在水面觅食的戏水鸭,很少潜水捕食。绿头鸭的种类通常根据分布范围和行为习性来区分,但是绿头鸭经常与其他物种配对,从而引入了一些杂交品种。
绿头鸭的小鸭很早熟,孵出后便会游泳。在3至4个月的少年时期开始飞行,14个月时完全成年,平均寿命为3年。
绿头鸭是一种中等大小的鸭子,比大多数的戏水鸭略重。成年绿头鸭平均长23英寸(1英寸约为2.54厘米),翼展36英寸,重25磅(1磅约为454克)、小鸭有黄色和黑色的羽毛,大约6个月大时,随着羽毛颜色的变化,从视觉上就可以区分出性别。雄性具有绿色的头羽、白色的领环、紫褐色的胸膛、灰棕色的超膀和橙黄色的喙。雌性呈斑驳的棕色,这是大多数雌性戏水鸭的颜色。
绿头鸭在北半球和南半球都有广阔的栖息地,它们生存在淡水和威水湿地中,从湖泊到河流再到海岸。北部的绿头鸭是迁徙的,冬天迁往南部。绿头鸭的饮食范围很广泛,包括植物、种子、根茎、腹足类动物、无脊椎动物和甲壳类动物,
育雏寄生者是一种在绿头鸭巢中下蛋的鸟类,它会以绿头鸭的巢穴为目标。如果这类寄生者的蛋类似于绿头鸭的蛋,则绿头鸭会接受它们,并当作自己的蛋来孵化幼体。
绿头鸭必须与各种各样的捕食者抗衡,尤其是狐狸和猛禽(例如猎鹰和老鹰),它们还会被鲶鱼和梭鱼捕食。众所周知,乌鸦、天鹅和野鹅会因领土纠纷袭击鸭子。单半球睡眠(或睁着一只眼睛睡觉)首次在绿头鸭中记载,它可以使一个脑半球睡眠,而另一个脑半球则清醒,这是水禽中很常见的避免掠食行为。
购买选项
定价:99.00元
书号:978-7-111-78055-7
出版社:机械工业出版社