本书适合哪些人来读?
l 这本书并不是Kubernetes的入门介绍,它的目的不是告诉读者Kubernetes是什么,而是怎么使用Kubernetes,尤其是如何结合持续交付和DevOps实践来使用Kubernetes。
l 想要深入了解如何在Kubernetes上部署特定应用程序和工作负载的人。
l 面向已经熟悉Kubernetes 的基本概念,想进一步学习通用的最佳实践的读者。
本书与市面上其他讲解Kubernetes的书籍有何不同?
本书并非局限于Kubernetes本身的诸多最佳实践,更多的是从实际场景出发,详细介绍如何在Kubernetes上构建应用,包括开发者工作流、镜像分发、持续部署、网络安全、运维监控等应用交付和运维全生命周期的方方面面,甚至还包括很多Kubernetes生态圈中的优秀工具与发展趋势,以帮助我们更好地管理集群。无论你是Kubernetes的初学者还是经验丰富的工程师,相信都能从本书中找到一些解决实际问题的灵感。
如何阅读使用?
即使在第1章,对于一个简单的博客应用,作者也没有仅仅以使其能够启动运行作为目标,而是引出了制成品版本回溯、应用与配置分离、配置即代码等持续交付和DevOps的最佳实践在Kubernetes中的落地方式。
如果读者已经在其他平台有这些实践的实施经验,那么本书是一本极具针对性的工具书,比起从网络各处质量参差不齐的资料中自行筛选和识别要高效得多。也正是因为这样的写作理念,本书的最佳实践才不容易过时。
目录
前言1
第1章 搭建一个基本服务7
1.1 应用程序概览7
1.2 配置文件管理7
1.3 使用Deployment创建多副本服务9
1.4 为HTTP流量配置外部Ingress12
1.5 使用ConfigMap配置应用程序13
1.6 使用Secret管理认证15
1.7 部署简单的有状态数据库18
1.8 使用服务创建TCP负载均衡器21
1.9 使用Ingress将流量路由到静态文件服务器22
1.10 使用Helm参数化应用程序24
1.11 部署服务的最佳实践26
1.12 小结27
第2章 开发者工作流29
2.1 目的29
2.2 搭建开发集群30
2.3 为多个开发者搭建共享集群31
2.4 启动开发者工作流38
2.5 环境初始化38
2.6 启动开发39
2.7 启动测试与调试40
2.8 搭建开发环境的最佳实践40
2.9 小结41
第3章 监控与日志43
3.1 指标与日志43
3.2 监控技术43
3.3 监控模式44
3.4 Kubernetes指标概述45
3.5 应该监控什么指标48
3.6 监控工具49
3.7 使用Prometheus监控Kubernetes51
3.8 日志概述55
3.9 日志工具57
3.10 使用EFK记录日志58
3.11 告警60
3.12 监控、日志及告警的最佳实践62
3.13 小结63
第4章 配置、机密以及RBAC65
4.1 通过ConfigMap和Secret配置应用65
4.2 ConfigMap和Secret API的最佳实践67
4.3 RBAC73
4.4 小结78
第5章 持续集成、测试和部署79
5.1 版本控制80
5.2 持续集成80
5.3 测试81
5.4 镜像构建81
5.5 为镜像标记标签82
5.6 持续部署83
5.7 部署策略84
5.8 生产环境中的测试88
5.9 搭建流水线并进行混沌试验89
5.10 CI/CD的最佳实践94
5.11 小结95
第6章 版本控制、发布和部署97
6.1 版本控制97
6.2 发布98
6.3 部署99
6.4 综合示例100
6.5 小结104
第7章 全球化应用的分发和预演105
7.1 镜像的分发106
7.2 参数化部署107
7.3 全球流量负载均衡107
7.4 可靠的全球化部署108
7.5 如何应对出现的问题113
7.6 全球化部署的最佳实践114
7.7 小结115
第8章 资源管理117
8.1 Kubernetes Scheduler117
8.2 高级调度技术119
8.3 Pod资源管理122
8.4 资源管理的最佳实践136
8.5 小结136
第9章 网络、网络安全与服务网格137
9.1 Kubernetes的网络原则137
9.2 网络插件139
9.3 Kubernetes中的服务142
9.4 网络安全策略149
9.5 服务网格153
9.6 小结155
第10章 Pod和容器安全157
10.1 PodSecurityPolicy API157
10.2 工作负载隔离和RuntimeClass170
10.3 其他Pod和容器安全注意事项172
10.4 小结173
第11章 集群的策略和治理175
11.1 为什么策略和治理很重要175
11.2 这里所说的策略有何不同175
11.3 云原生策略引擎176
11.4 Gatekeeper简介176
11.5 审计181
11.6 策略和治理的最佳实践183
11.7 小结184
第12章 多集群管理185
12.1 为什么需要多集群185
12.2 多集群设计的考量187
12.3 多集群部署管理189
12.4 GitOps集群管理方式191
12.5 多集群管理工具194
12.6 Kubernetes Federation194
12.7 多集群管理的最佳实践197
12.8 小结198
第13章 集成外部服务和 Kubernetes199
13.1 将外部服务导入Kubernetes199
13.2 将Kubernetes服务导出到外部203
13.3 在Kubernetes之间共享服务207
13.4 第三方工具207
13.5 连接集群和外部服务的最佳实践208
13.6 小结208
第14章 在Kubernetes上运行机器学习工作负载209
14.1 为什么Kubernetes非常适合机器学习209
14.2 机器学习工作流210
14.3 Kubernetes集群管理员与机器学习211
14.4 数据科学家关心的事218
14.5 在Kubernetes上运行机器学习工作负载的最佳实践219
14.6 小结220
第15章 在Kubernetes上构建高层应用的模式221
15.1 开发高层抽象的方法221
15.2 扩展Kubernetes222
15.3 构建平台时的设计考量224
15.4 构建应用平台的最佳实践226
15.5 小结227
第16章 管理状态和有状态应用229
16.1 卷和卷挂载230
16.2 Kubernetes存储231
16.3 有状态应用235
16.4 小结240
第17章 准入控制和授权241
17.1 准入控制241
17.2 授权248
17.3 小结251
第18章 总结253
这本来自一线专家的实践指南将让你对快速发展的Kubernetes生态有深刻的洞察。
——Bridget Kromhout (微软首席开发经理)
你将从本书中获得在不同规模、拓扑、领域和用例中使用Kubernetes的宝贵经验。
——Bilgin Ibryam (Kubernetes Patterns的作者之一,Red Hat首席架构师)
本书给出一系列实用方法,可为实际中使用Kubernetes面临的各种挑战提供解决方案,强烈推荐!
——Roland Huß (Kubernetes Patterns的作者之一,Red Hat首席软件工程师)
本书的译者对微服务架构、领域驱动架构、敏捷管理、DevOps持续交付有着非常丰富的实战经验。
—— 刘翔 明源云CTO
本书并不是Kubernetes的入门介绍,它的目的不是告诉读者Kubernetes是什么,而是怎么使用Kubernetes,尤其是如何结合持续交付和DevOps实践来使用Kubernetes。
—— 周宇刚 ThoughtWorks资深架构师