本书共11章,由浅入深地介绍了Kubernetes的相关技术。主要内容包括容器的发展史,Kubernetes的核心概念,Kubernetes的安装与部署,Kubernetes的基本单位Pod,Kubernetes中的各种控制器,Kubernetes发布服务的方式,Kubernetes中的存储卷与用法,Kubernetes中的几种实用扩展,Kubernetes管理资源的方式与Pod的调度原理,API Server的基本使用方式及身份认证与授权方式等。
本书适合开发人员、运维人员、测试人员阅读,同时也适合对Kubernetes或容器技术感兴趣的读者阅读。
结合示例代码,系统讲述Kubernetes的主要功能和核心组件,有助于读者迅速提升运维技能。
Kubernetes是谷歌开源的Docker容器集群管理系统,为容器化的应用提供了资源调度、部署、运行、服务发现、扩容和缩容等功能,充分发挥了容器技术的潜力,给开发人员和运维人员带来了极大的便利。 本书由浅入深剖析了Kubernetes的功能。本书首先介绍了Kubernetes的基础知识,然后讲述了Kubernetes中的核心组件(如Pod、控制器、Service、Ingress)等,接着讨论了Kubernetes的进阶内容,最后通过一个案例展示了如何使用Kubernetes部署项目。
本书主要内容:
·Kubernetes的设计架构和核心对象;
·Kubernetes的安装与部署;
·Kubernetes的基本单位——Pod;
·用于管理Pod的控制器;
·在Kubernetes中发布服务和管理服务的方式;
·Kubernetes中的数据存储机制;
·Kubernetes中管理资源的方式和调度Pod的方式;
·API Server的使用方式。
赵卓,新蛋科技有限公司电子商务研发团队项目经理,从事过多年测试工作和开发工作,精通各类开发和测试技术。编写过的图书有《Selenium自动化测试指南》,翻译过的图书有《精通Selenium WebDriver 3.0 (第2版)》《Visual Studio 2010软件测试指南》和《快速编码:高效使用Microsoft Visual Studio》。
目 录
第 一部分 基础知识
第 1章 容器的发展史 3
1.1 开发过程的发展 3
1.1.1 瀑布式开发 3
1.1.2 敏捷式开发 4
1.1.3 DevOps 5
1.2 应用架构的发展 6
1.2.1 单体架构与多层架构 6
1.2.2 微服务架构 7
1.3 部署/打包的发展 9
1.3.1 物理机和虚拟机 9
1.3.2 容器 10
1.3.3 容器的舵手—Kubernetes 11
第 2章 Kubernetes的核心概念 12
2.1 Kubernetes的设计架构 12
2.1.1 Master 13
2.1.2 Node 15
2.1.3 组件间的基本交互流程 16
2.2 Kubernetes的核心对象 17
2.2.1 Pod 17
2.2.2 控制器 18
2.2.3 服务与存储 20
2.2.4 资源划分 22
2.3 本章小结 23
第二部分 应用
第3章 Kubernetes的安装与部署 27
3.1 Master与Node都要安装的
基础组件 28
3.1.1 在Debian、Ubuntu系统上安装
基础组件 28
3.1.2 在CentOS以及RHEL和Fedora
系统上安装基础组件 28
3.2 Master的安装与配置 29
3.2.1 如何解决CPU数量
不够的问题 29
3.2.2 如何解决不支持交换
内存的问题 29
3.2.3 如何解决网络连接
错误的问题 30
3.3 Node的安装与配置 32
3.4 本章小结 36
第4章 Pod—Kubernetes的基本单位 37
4.1 Pod的基本操作 37
4.1.1 创建Pod 37
4.1.2 查询Pod 38
4.1.3 修改Pod 40
4.1.4 删除Pod 41
4.2 Pod模板详解 41
4.3 Pod与容器 45
4.3.1 Pod创建容器的方式 45
4.3.2 Pod组织容器的方式 50
4.4 Pod的生命周期 55
4.4.1 Pod的相位 55
4.4.2 Pod的重启策略 56
4.4.3 Pod的创建与销毁过程 57
4.4.4 Pod的生命周期事件 58
4.5 Pod的健康检查 63
4.6 本章小结 68
第5章 控制器—Pod的管理 70
5.1 Deployment控制器 70
5.1.1 Deployment控制器的
基本操作 71
5.1.2 Deployment控制器的模板 75
5.1.3 Deployment控制器的伸缩 76
5.1.4 Deployment控制器的更新 77
5.1.5 Deployment控制器的回滚 84
5.2 DaemonSet控制器 85
5.2.1 DaemonSet控制器的基本操作 86
5.2.2 DaemonSet控制器的更新 88
5.3 Job与CronJob控制器 90
5.3.1 Job控制器的基本操作 90
5.3.2 Job的异常处理 95
5.3.3 CronJob控制器的基本操作 98
5.4 其他控制器 101
5.5 本章小结 102
第6章 Service和Ingress—
发布Pod提供的服务 103
6.1 Service 103
6.1.1 向外发布—通过
ClusterIP发布 107
6.1.2 向外发布—通过
NodePort发布 110
6.1.3 向外发布—通过
LoadBalancer发布 112
6.1.4 向内发布—通过
无头Service 115
6.1.5 向内发布—通过
ExternalName 117
6.1.6 服务发现 119
6.1.7 其他配置方式 121
6.2 Ingress 124
6.2.1 Ingress控制器的安装 126
6.2.2 Ingress的基本操作 127
6.3 本章小结 137
第7章 存储与配置 138
7.1 本地存储卷 138
7.1.1 emptyDir 139
7.1.2 hostPath 140
7.2 网络存储卷 142
7.2.1 安装NFS 142
7.2.2 使用NFS 144
7.3 持久存储卷 146
7.3.1 PV与PVC 147
7.3.2 StorageClass 154
7.4 StatefulSet控制器 159
7.4.1 StatefulSet控制器的
基本操作 161
7.4.2 PVC及PV的使用 163
7.4.3 无头Service的访问 165
7.4.4 Pod的重建 167
7.4.5 StatefulSet控制器的
伸缩与更新 168
7.5 配置存储卷 168
7.5.1 ConfigMap 169
7.5.2 Secret 174
7.5.3 Downward API 181
7.6 本章小结 184
第8章 Kubernetes资源的管理及调度 186
8.1 资源调度—为Pod设置
计算资源 186
8.2 资源管理—命名空间 190
8.2.1 命名空间的基本操作 190
8.2.2 命名空间的资源配额 193
8.2.3 命名空间中单个资源的
限额范围 197
8.3 资源管理—标签、
选择器及注解 202
8.3.1 标签 202
8.3.2 选择器 204
8.3.3 注解 207
8.4 资源调度—Pod调度
策略详解 208
8.4.1 调度过程 208
8.4.2 节点选择调度 211
8.4.3 节点亲和性调度 212
8.4.4 Pod亲和性与反亲和性调度 215
8.4.5 污点与容忍度 219
8.4.6 优先级与抢占式调度 222
8.5 本章小结 224
第三部分 进阶
第9章 API Server 227
9.1 API Server的基本操作 227
9.1.1 写操作 228
9.1.2 读操作 234
9.1.3 独有操作 237
9.1.4 状态操作 241
9.2 API Server的身份认证、授权、
准入控制 245
9.2.1 身份认证 246
9.2.2 RBAC授权 253
9.3 本章小结 260
第 10章 Kubernetes的扩展 261
10.1 可视化管理—
Kubernetes Dashboard 261
10.1.1 安装Kubernetes Dashboard 261
10.1.2 使用Kubernetes Dashboard 264
10.2 资源监控—Prometheus与
Grafana 269
10.2.1 安装与配置Prometheus 269
10.2.2 安装与配置Grafana 270
10.3 日志管理—ElasticSearch、
Fluentd、Kibana 275
10.4 本章小结 277
第四部分 实践
第 11章 项目部署案例 281
11.1 无状态项目的部署案例 281
11.2 有状态项目的部署案例 287
11.3 使用Helm部署项目 292
11.3.1 Helm简介 293
11.3.2 Helm的安装 294
11.3.3 Helm Chart的基本操作 296
11.3.4 将Chart打包到
Chart仓库中 306
11.3.5 发布版本的更新、
回滚和删除 308
11.3.6 使用Helm部署的项目案例 310
11.4 本章小结 313