Kubernetes即学即用(第三版)
Brendan Burns, Joe Beda, Kelsey Hightower, Lachlan Evenson
马晶慧 译
出版时间:2024年11月
页数:344
“本书由四位最权威的云原生系统专家撰写而成,为学习Kubernetes概念打下坚实的基础,书中提供了大量示例可以帮助读者自行探索Kubernetes。”
—— Liz Rice
lsovalent

Kubernetes从根本上改变了开发人员和运维人员在云中构建、部署以及维护应用程序的方式。无论你是分布式系统的新手,还是多年来一直在部署云原生应用程序的老手,这款流行的容器编排器都可以帮助你在速度、敏捷性、可靠性以及效率等方面更上一层楼。
本书讲解了如何将Kubernetes融入分布式应用程序的生命周期。无论你是软件开发人员、工程师还是架构师,无论你的系统是在线服务、机器学习应用程序,还是树莓派计算机集群,都可以通过本书学习如何使用各种工具以及API来实现可扩展分布式系统的自动化。
本书的主要内容包括:
● 创建一个简单的集群,了解Kubernetes的基本工作原理。
● 深入了解使用Kubernetes部署应用程序的细节。
● 学习Kubernetes的专属对象,如守护进程集、作业、ConfigMap以及机密等。
● 探索如何通过部署组织应用程序的整个生命周期。
● 学习如何保护应用程序部署的安全。
● 学习部署多集群应用程序,以及通过编程语言访问Kubernetes。
  1. 前言
  2. 第1章 概述
  3. 1.1 速度
  4. 1.1.1 不可变性的价值
  5. 1.1.2 声明式配置
  6. 1.1.3 自我修复系统
  7. 1.2 扩展服务和团队
  8. 1.2.1 解耦
  9. 1.2.2 轻松扩展应用程序和集群
  10. 1.2.3 通过微服务扩展开发团队
  11. 1.2.4 统一性与扩展的关注点分离
  12. 1.3 基础设施的抽象
  13. 1.4 效率
  14. 1.5 云原生生态系统
  15. 1.6 小结
  16. 第2章 创建和运行容器
  17. 2.1 容器镜像
  18. 2.2 使用Docker构建应用程序镜像
  19. 2.2.1 Dockerfiles
  20. 2.2.2 优化镜像的大小
  21. 2.2.3 镜像安全
  22. 2.3 多阶段镜像构建
  23. 2.4 将镜像存储到远程仓库
  24. 2.5 容器运行时接口
  25. 2.5.1 通过Docker运行容器
  26. 2.5.2 探索kuard应用程序
  27. 2.5.3 限制资源使用
  28. 2.6 清理
  29. 2.7 小结
  30. 第3章 部署Kubernetes集群
  31. 3.1 在公共云上安装Kubernetes
  32. 3.1.1 Google Kubernetes Engine
  33. 3.1.2 使用Azure Kubernetes服务安装Kubernetes
  34. 3.1.3 在AWS上安装Kubernetes
  35. 3.2 使用minikube在本地安装Kubernetes
  36. 3.3 在Docker中运行Kubernetes
  37. 3.4 Kubernetes客户端
  38. 3.4.1 检查集群状态
  39. 3.4.2 列出Kubernetes的节点
  40. 3.5 集群组件
  41. 3.5.1 Kubernetes代理
  42. 3.5.2 Kubernetes DNS
  43. 3.5.3 Kubernetes用户界面
  44. 3.6 小结
  45. 第4章 常用的kubectl命令
  46. 4.1 命名空间
  47. 4.2 上下文
  48. 4.3 查看Kubernetes API对象
  49. 4.4 创建、更新和销毁Kubernetes对象
  50. 4.5 对象的标签与注释
  51. 4.6 调试命令
  52. 4.7 集群管理
  53. 4.8 自动补齐命令
  54. 4.9 查看集群的其他方法
  55. 4.10 小结
  56. 第5章 Pod
  57. 5.1 Kubernetes中的Pod
  58. 5.2 Pod的应用思路
  59. 5.3 Pod清单
  60. 5.3.1 创建Pod
  61. 5.3.2 创建Pod清单
  62. 5.4 运行Pod
  63. 5.4.1 查询Pod列表
  64. 5.4.2 Pod的详细信息
  65. 5.4.3 删除Pod
  66. 5.5 访问Pod
  67. 5.5.1 通过日志获取更多信息
  68. 5.5.2 使用exec在容器中运行命令
  69. 5.5.3 在容器之间复制文件
  70. 5.6 健康检查
  71. 5.6.1 存活探针
  72. 5.6.2 就绪探针
  73. 5.6.3 启动探针
  74. 5.6.4 高级探针配置
  75. 5.6.5 其他类型的健康检查
  76. 5.7 资源管理
  77. 5.7.1 资源请求:所需的最少资源量
  78. 5.7.2 通过约束限制资源使用量
  79. 5.8 利用卷持久保存数据
  80. 5.8.1 在Pod中使用卷
  81. 5.8.2 Pod中卷的不同使用方式
  82. 5.9 综合讨论
  83. 5.10 小结
  84. 第6章 标签与注释
  85. 6.1 标签
  86. 6.1.1 应用标签
  87. 6.1.2 修改标签
  88. 6.1.3 标签选择器
  89. 6.1.4 API对象中的标签选择器
  90. 6.1.5 Kubernetes架构中的标签
  91. 6.2 注释
  92. 6.3 清理
  93. 6.4 小结
  94. 第7章 服务发现
  95. 7.1 什么是服务发现
  96. 7.2 服务对象
  97. 7.2.1 DNS服务
  98. 7.2.2 就绪检查
  99. 7.3 向外公开集群服务
  100. 7.4 负载均衡器整合
  101. 7.5 高级集成
  102. 7.5.1 端点
  103. 7.5.2 手动发现服务
  104. 7.5.3 kube-proxy与集群IP
  105. 7.5.4 集群IP环境变量
  106. 7.6 连接到其他环境
  107. 7.6.1 连接到集群外部的资源
  108. 7.6.2 将外部资源连接到集群内部的服务
  109. 7.7 清理
  110. 7.8 小结
  111. 第8章 Ingress的HTTP负载均衡
  112. 8.1 Ingress规范与Ingress控制器
  113. 8.2 安装Contour
  114. 8.2.1 配置DNS
  115. 8.2.2 配置本地hosts文件
  116. 8.3 使用Ingress
  117. 8.3.1 最简单的用法
  118. 8.3.2 使用主机名
  119. 8.3.3 使用路径
  120. 8.3.4 清理
  121. 8.4 Ingress的高级话题和技巧
  122. 8.4.1 运行多个Ingress控制器
  123. 8.4.2 多个Ingress对象
  124. 8.4.3 Ingress与命名空间
  125. 8.4.4 改写路径
  126. 8.4.5 提供TLS
  127. 8.5 其他Ingress实现
  128. 8.6 Ingress的未来
  129. 8.7 小结
  130. 第9章 副本集
  131. 9.1 协调循环
  132. 9.2 Pod与副本集的关系
  133. 9.2.1 采用现有的容器
  134. 9.2.2 隔离容器
  135. 9.3 副本集的设计思想
  136. 9.4 副本集的规范
  137. 9.4.1 Pod模板
  138. 9.4.2 标签
  139. 9.5 创建副本集
  140. 9.6 检查副本集
  141. 9.6.1 根据Pod查找副本集
  142. 9.6.2 查找副本集管理的Pod集合
  143. 9.7 副本集的伸缩
  144. 9.7.1 副本集的命令式伸缩:kubectl scale
  145. 9.7.2 副本集的声明式伸缩:kubectl apply
  146. 9.7.3 自动伸缩副本集
  147. 9.8 删除副本集
  148. 9.9 小结
  149. 第10章 部署
  150. 10.1 首次部署
  151. 10.2 创建部署
  152. 10.3 管理部署
  153. 10.4 更新部署
  154. 10.4.1 扩展部署
  155. 10.4.2 更新容器镜像
  156. 10.4.3 推出的历史记录
  157. 10.5 部署策略
  158. 10.5.1 重建策略
  159. 10.5.2 滚动更新策略
  160. 10.5.3 放慢部署速度以确保服务健康
  161. 10.6 删除部署
  162. 10.7 监控部署
  163. 10.8 小结
  164. 第11章 守护进程集
  165. 11.1 守护进程集调度器
  166. 11.2 创建守护进程集
  167. 11.3 将守护进程集限制到特定节点
  168. 11.3.1 向节点添加标签
  169. 11.3.2 节点选择器
  170. 11.4 更新守护进程集
  171. 11.5 删除守护进程集
  172. 11.6 小结
  173. 第12章 作业
  174. 12.1 作业对象
  175. 12.2 作业模式
  176. 12.2.1 一次性作业
  177. 12.2.2 并行性
  178. 12.2.3 工作队列
  179. 12.3 定时作业
  180. 12.4 小结
  181. 第13章 ConfigMap与机密
  182. 13.1 ConfigMap
  183. 13.1.1 创建ConfigMap
  184. 13.1.2 使用ConfigMap
  185. 13.2 机密
  186. 13.2.1 创建机密
  187. 13.2.2 消费机密
  188. 13.2.3 私有容器仓库
  189. 13.3 命名约束
  190. 13.4 管理ConfigMap和机密
  191. 13.4.1 显示列表
  192. 13.4.2 创建
  193. 13.4.3 更新
  194. 13.5 小结
  195. 第14章 基于角色的访问控制
  196. 14.1 基于角色的访问控制
  197. 14.1.1 Kubernetes中的身份
  198. 14.1.2 角色和角色绑定
  199. 14.1.3 Kubernetes中的角色和角色绑定
  200. 14.2 RBAC的管理技巧
  201. 14.2.1 使用can-i测试授权
  202. 14.2.2 通过源代码控制管理RBAC
  203. 14.3 高级主题
  204. 14.3.1 聚合集群角色
  205. 14.3.2 分组绑定
  206. 14.4 小结
  207. 第15章 服务网格
  208. 15.1 双向TLS加密与身份验证
  209. 15.2 流量整形
  210. 15.3 内省
  211. 15.4 你真的需要服务网格吗
  212. 15.5 服务网格的实现
  213. 15.6 服务网格的发展前景
  214. 15.7 小结
  215. 第16章 存储解决方案与Kubernetes的集成
  216. 16.1 导入外部服务
  217. 16.1.1 没有选择器的服务
  218. 16.1.2 外部服务的局限性:健康检查
  219. 16.2 运行可靠的单例
  220. 16.2.1 运行MySQL单例服务
  221. 16.2.2 动态卷供应
  222. 16.3 利用状态集实现Kubernetes原生存储
  223. 16.3.1 状态集的属性
  224. 16.3.2 利用状态集手动复制MongoDB
  225. 16.3.3 自动化MongoDB集群的创建
  226. 16.3.4 持久卷与状态集
  227. 16.3.5 最后一步:存活探针
  228. 16.4 小结
  229. 第17章 扩展Kubernetes
  230. 17.1 扩展Kubernetes意味着什么
  231. 17.2 可扩展点
  232. 17.3 自定义资源的模式
  233. 17.3.1 仅有数据
  234. 17.3.2 编译器
  235. 17.3.3 操作器
  236. 17.3.4 如何入门
  237. 17.4 小结
  238. 第18章 利用常见的编程语言访问Kubernetes
  239. 18.1 Kubernetes API:客户端的视角
  240. 18.1.1 OpenAPI与生成的客户端库
  241. 18.1.2 kubectl命令
  242. 18.2 Kubernetes API编程
  243. 18.2.1 安装客户端库
  244. 18.2.2 Kubernetes API的身份验证
  245. 18.2.3 访问Kubernetes API
  246. 18.2.4 综合所有步骤:使用Python、Java或.NET列出和创建Pod
  247. 18.2.5 对象的创建与部分更新
  248. 18.2.6 监控Kubernetes API的变化
  249. 18.2.7 与Pod互动
  250. 18.3 小结
  251. 第19章 Kubernetes应用程序的安全
  252. 19.1 安全上下文
  253. 19.2 Pod安全
  254. 19.2.1 Pod安全是什么
  255. 19.2.2 应用Pod安全标准
  256. 19.3 服务账号管理
  257. 19.4 基于角色的访问控制
  258. 19.5 运行时类
  259. 19.6 网络策略
  260. 19.7 服务网格
  261. 19.8 安全基准工具
  262. 19.9 镜像安全
  263. 19.10 小结
  264. 第20章 Kubernetes集群的管理策略
  265. 20.1 策略的重要性
  266. 20.2 准入流程
  267. 20.3 Gatekeeper的策略
  268. 20.3.1 开放策略代理
  269. 20.3.2 安装Gatekeeper
  270. 20.3.3 配置策略
  271. 20.3.4 约束模板
  272. 20.3.5 创建约束
  273. 20.3.6 审计
  274. 20.3.7 变更
  275. 20.3.8 数据复制
  276. 20.3.9 指标
  277. 20.3.10 策略库
  278. 20.4 小结
  279. 第21章 多集群应用程序的部署
  280. 21.1 打好基础
  281. 21.2 负载均衡
  282. 21.3 构建跨多个集群的应用程序
  283. 21.3.1 复制孤岛:最简单的跨区域模型
  284. 21.3.2 分片:区域数据
  285. 21.3.3 更好的灵活性:微服务路由
  286. 21.4 小结
  287. 第22章 组织应用程序
  288. 22.1 指导原则
  289. 22.1.1 将文件系统作为唯一可信的真相来源
  290. 22.1.2 代码审查的作用
  291. 22.1.3 特性门控
  292. 22.2 在源代码管理中管理应用程序
  293. 22.2.1 文件系统的布局
  294. 22.2.2 管理周期性的版本
  295. 22.3 从开发、测试与部署的角度组织应用程序的结构
  296. 22.3.1 目标
  297. 22.3.2 发布的进展
  298. 22.4 使用模板为应用程序添加参数
  299. 22.4.1 使用Helm和模板实现参数化
  300. 22.4.2 文件系统布局的参数化
  301. 22.5 部署全球性的应用程序
  302. 22.5.1 全球部署架构
  303. 22.5.2 实现全球部署
  304. 22.5.3 面向全球部署的仪表板和监视
  305. 22.6 小结
  306. 附录 构建自己的Kubernetes集群
书名:Kubernetes即学即用(第三版)
译者:马晶慧 译
国内出版社:中国电力出版社
出版时间:2024年11月
页数:344
书号:978-7-5198-9178-7
原版书书名:Kubernetes: Up and Running, 3rd Edition
原版书出版商:O'Reilly Media
Brendan Burns
 
Brendan Burns是微软的杰出工程师,也是Kubernetes项目的共同创始人。目前在微软 Azure负责容器和DevOps相关工作。在加入微软之前,他在谷歌云平台上工作,帮助构建了Deployment Manager和Cloud DNS等API。在从事云计算之前,他曾在谷歌从事网络搜索基础架构方面工作,专注于低延迟索引。他拥有马萨诸塞州阿默斯特大学计算机科学博士学位,主修机器人技术。他和妻子Robin Sanders(以及两个孩子),还有一只名字叫Mrs. Paws的猫(用铁爪管理着他们的家)居住在美国西雅图。
 
 
Joe Beda
 
Joe Beda的职业生涯始于微软,从事Internet Explorer方面的工作(那时,他很年轻,也很天真)。在微软工作了7年后,Joe加入谷歌公司,并为其效力10年之久,从事过GUI框架、实时语音与聊天、电话通信、广告机器学习和云计算等方面的工作。
最值得注意的是,在谷歌工作期间,Joe发起了Google Compute Engine 项目,并与Brendan和Craig McLuckie一起创建了Kubernetes。目前,Joe担任Heptio公司的首席技术官,其中Heptio是他与Craig一起创建的一家创业公司。Joe目前居住在西雅图,并因此引以为豪。
 
 
Kelsey Hightower
 
Kelsey Hightower在自己的科技职业生涯中乐于从事各种不同的角色,并且尤其喜欢担任使软件顺利落地的领导角色。Kelsey是一位强大的开源倡导者,专注于构建简单的工具,以提高开发人员的工作效率。如果他不在编写Go代码,就是在参加各种技术研讨会,探讨范围从编程到系统管理,无所不包。
 
 
Lachlan Evenson
 
Lachlan Evenson是微软Azure的容器计算团队的首席开发经理。
 
 
本书封面上的动物是大西洋斑纹海豚(学名:Atlantic white-sided dolphin)。顾名思义,这种海豚两侧都有浅色的斑纹,还有一条浅灰色的条纹从眼睛一直延伸至背鳍下方。它是最大的海豚物种之一,分布在整个北大西洋。它们喜欢开放水域,因此从海岸上很难看到它们的身影,但它们经常出现在船只附近,并展现各种绝技。
大西洋斑纹海豚是群居性动物,通常60只组群,但根据地域和食物的获取难度族群也有很大的变化。这种海豚通常以团队合作的方式来捕食鱼类,但它们也会单独狩猎。它们主要使用回声定位搜索猎物,这种方式类似于声纳。这种海洋哺乳动物的食谱通常包括鲱鱼、鲭鱼和鱿鱼。
大西洋斑纹海豚的平均寿命在22~27岁之间。雌性的产犊间隔期为2~3年,妊娠期为11个月。通常产仔在六月和七月,哺乳期为18个月。海豚的智商非常高,并表现出复杂的社交行为,例如悲伤、合作和解决问题,这是由于它们的大脑相对于身体比例很高(在水生哺乳动物中为最高)。
购买选项
定价:98.00元
书号:978-7-5198-9178-7
出版社:中国电力出版社