精通Kubernetes
全新正版 极速发货
¥
56.28
6.3折
¥
89
全新
库存3件
作者吉吉·塞凡
出版社人民邮电出版社
ISBN9787115536112
出版时间2020-07
装帧平装
开本16开
定价89元
货号1202081068
上书时间2024-06-02
商品详情
- 品相描述:全新
- 商品描述
-
导语摘要
1.针对Kubernetes1.10技术内容进行写作,帮助读者掌握在各种云平台上设计和部署大型集群的技能。
2.案例比较丰富,并附带基础练习题供读者加深对知识的理解;Kubernetes是一个用于自动化部署、扩展和管理容器化应用程序的开源系统。如果您运行多个容器,或者希望对容器进行自动化管理,那么Kubernetes是必需的。
本书聚焦于Kubernetes集群设计和管理,列举了在生产中使用容器编排时常见的问题,解释了网络配置的选项,并且提供了对各种Kubernetes网络插件进行设置、操作和故障排除的指导原则。
本书介绍了如何在Kubernetes上运行复杂的有状态微服务,包括水平Pod自动伸缩、滚动更新、资源配额和持久存储后端等高级功能,以及如何自动化和维护工作流中的自定义资源开发与利用。
另外,本书还概述了Kubernetes设计中的指导原则,展示了安全性、高可用性和集群联邦领域中的最佳实践。
您将学到以下内容:为程序运行构建一个健壮的Kubernetes集群了解Kubernetes在GCE、AWS、Azure和裸金属上运行的优点查看Kubernetes的身份验证模块和集群联邦的选项对Kubernetes集群进行监控和故障排除并运行高可用Kubernetes创建和配置自定义Kubernetes资源,并在自动化工作流中使用第三方资源了解如何在容器环境中运行复杂的有状态应用程序将应用程序作为标准包交付
作者简介
吉吉·塞凡(Gigi Sayfan)是Helix的软件架构师,Helix是一家生物信息学和基因组学的创业公司。他已有20多年的软件开发经验,涉及即时通信、变形、芯片制造过程控制、游戏控制台嵌入式多媒体应用、脑启发机器学习、定制浏览器开发、3D分布式游戏平台的Web服务以及物联网传感器和虚拟现实等多个领域。 他使用多种编程语言在多种操作系统中编写代码,编程语言诸如Go、Python、C、C++、C#、Java、Delphi、JavaScript,甚至Cobol和PowerBuilder;操作系统包括Windows (3.11~7)、Linux、macOS、嵌入式Lynx;另外,还有Sony PlayStation游戏机等。他的技术专长包括数据库、底层网络、分布式系统、非正统的用户界面和一般软件开发生命周期。
目录
第 1章 理解Kubernetes架构 1
1.1 理解容器编排 1
1.1.1 物理机、虚拟机和容器 1
1.1.2 云端容器 2
1.1.3 服务器运行模式 2
1.2 Kubernetes的相关概念 3
1.2.1 集群 4
1.2.2 节点 4
1.2.3 主节点 4
1.2.4 Pod 4
1.2.5 标签 5
1.2.6 注解 5
1.2.7 标签选择器 5
1.2.8 副本控制器和副本集 6
1.2.9 服务 6
1.2.10 存储卷 6
1.2.11 有状态服务集 7
1.2.12 密钥对象 7
1.2.13 名称 7
1.2.14 命名空间 8
1.3 深入了解Kubernetes架构 8
1.4 Kubernetes API 10
1.4.1 Kubernetes API 10
1.4.2 自动伸缩 API 10
1.5 Kubernetes组件 11
1.5.1 主组件 11
1.5.2 节点组件 12
1.6 Kubernetes运行时 13
1.6.1 运行时接口 13
1.6.2 Docker 14
1.6.3 Rkt 15
1.6.4 Hyper Container 16
1.7 持续集成与部署 17
1.7.1 CI/CD流水线 17
1.7.2 为Kubernetes设计CI/CD流水线 18
1.8 总结 19
第 2章 创建Kubernetes集群 20
2.1 用Minikube快速创建单节点集群 20
2.1.1 准备工作 20
2.1.2 创建集群 22
2.1.3 故障排除 23
2.1.4 检查集群 24
2.1.5 部署服务 25
2.1.6 用仪表板检查集群 26
2.2 用Kubeadm创建多节点集群 26
2.2.1 准备工作 26
2.2.2 组建Vagrant虚拟机集群 26
2.2.3 安装所需软件 27
2.2.4 创建集群 29
2.2.5 建立Pod网络 30
2.2.6 添加工作节点 31
2.3 在GCP、AWS和Azure云端创建集群 32
2.3.1 云提供商接口 32
2.3.2 GCP 33
2.3.3 AWS 33
2.3.4 Azure 34
2.4 从头开始创建裸金属集群 34
2.4.1 裸金属用例 34
2.4.2 什么时候应该考虑创建裸金属集群 35
2.5 进程 35
2.6 使用虚拟私有云基础设施 35
2.7 总结 36
第3章 监控、日志记录和故障排除 37
3.1 用Heapster监控Kubernetes 37
3.2 InfluxDB后端 39
3.2.1 存储模式 40
3.2.2 Grafana可视化 42
3.3 仪表板的性能分析 43
3.3.1 顶视图 44
3.3.2 添加中央日志 49
3.4 检测节点问题 51
3.4.1 节点问题检测器 52
3.4.2 DaemonSet 52
3.4.3 节点问题检测DaemonSet 52
3.5 故障排除方案 53
3.6 设计健壮的系统 53
3.6.1 硬件故障 54
3.6.2 配额、份额和限制 54
3.6.3 Bad Configuration 55
3.6.4 成本和性能 56
3.7 总结 57
第4章 高可用性和可靠性 58
4.1 高可用性概念 58
4.1.1 冗余 58
4.1.2 热交换 59
4.1.3 领导选举 59
4.1.4 智能负载均衡 59
4.1.5 幂等 59
4.1.6 自愈 60
4.2 高可用性最佳实践 60
4.2.1 创建高可用性集群 60
4.2.2 确保节点可靠 61
4.2.3 保护集群状态 62
4.2.4 保护数据 66
4.2.5 运行冗余API服务器 67
4.2.6 用Kubernetes运行领导选举 67
4.2.7 使预演环境高度可用 69
4.2.8 测试高可用性 70
4.3 集群在线升级 71
4.3.1 滚动升级 71
4.3.2 蓝绿升级 73
4.3.3 管理数据契约变更 73
4.3.4 数据迁移 74
4.3.5 检测过期API 74
4.4 大型集群的性能、成本和设计权衡 75
4.4.1 可用性要求 75
4.4.2 尽力而为 75
4.4.3 维护窗口 76
4.4.4 快速恢复 76
4.4.5 零停机时间 77
4.4.6 性能和数据的一致性 78
4.5 总结 78
第5章 配置Kubernetes安全、限制和账户 80
5.1 理解Kubernetes安全挑战 80
5.1.1 节点挑战 81
5.1.2 网络挑战 81
5.1.3 镜像挑战 82
5.1.4 配置和部署挑战 83
5.1.5 Pod和容器挑战 84
5.1.6 组织、文化和过程挑战 84
5.2 加固Kubernetes 85
5.2.1 理解Kubernetes的服务账户 85
5.2.2 访问API服务器 87
5.2.3 保护Pod 90
5.2.4 管理网络策略 95
5.2.5 使用密钥对象 97
5.3 运行多用户集群 100
5.3.1 多用户集群的案例 100
5.3.2 安全多租户使用命名空间 101
5.3.3 避免命名空间陷阱 102
5.4 总结 102
第6章 使用关键Kubernetes资源 103
6.1 设计Hue平台 103
6.1.1 定义Hue的范围 103
6.1.2 规划工作流 107
6.2 利用Kubernetes构建Hue平台 107
6.2.1 有效使用kubectl 107
6.2.2 理解kubectl资源配置文件 108
6.2.3 在Pod中部署长时间运行的微服务 110
6.3 内外部服务分离 114
6.3.1 部署内部服务 114
6.3.2 创建Hue-reminders服务 115
6.3.3 从外部公开服务 116
6.4 使用命名空间限制访问 118
6.5 启动Job 120
6.5.1 并行运行作业 121
6.5.2 清理已完成的作业 122
6.5.3 调度计划作业 122
6.6 kubectl获得Pod 123
6.7 混合非集群组件 124
6.7.1 集群网络外部组件 124
6.7.2 集群网络内部组件 125
6.7.3 用Kubernetes管理Hue平台 125
6.7.4 使用就绪探针管理依赖 126
6.8 为有序启动Pod采用初始容器 127
6.9 用Kubernetes进化Hue平台 129
6.9.1 Hue在企业中的运用 129
6.9.2 用Hue推进科学 129
6.9.3 用Hue实施教育 129
6.10 总结 129
第7章 管理Kubernetes存储 131
7.1 持久存储卷指导 131
7.1.1 存储卷 131
7.1.2 创建持久存储卷 135
7.1.3 持续存储卷声明 137
7.1.4 按使用存储卷挂载声明 138
7.1.5 存储类 139
7.1.6 从端到端演示持久存储卷 140
7.2 公共存储卷类型——GCE、AWS和Azure 144
7.2.1 AWS弹性块存储(EBS) 144
7.2.2 AWS弹性文件系统(EFS) 145
7.2.3 GCE持久化磁盘 145
7.2.4 Azure数据盘 146
7.2.5 Azure文件存储 147
7.3 Kubernetes中的GlusterFS和Ceph存储卷 148
7.3.1 使用GlusterFS 148
7.3.2 使用Ceph 151
7.4 Flocker作为集群容器数据存储卷管理器 153
7.5 将企业存储集成到Kubernetes 155
7.6 总结 156
第8章 使用Kubernetes运行有状态的应用程序 157
8.1 Kubernetes中的有状态与无状态应用 157
8.1.1 理解分布式数据密集型应用的本质 157
8.1.2 为什么在Kubernetes中管理状态 158
8.1.3 为什么在Kubernetes以外管理状态 158
8.2 共享环境变量与DNS记录 158
8.2.1 通过DNS访问外部数据存储 159
8.2.2 通过环境变量访问外部数据存储 159
8.2.3 使用冗余内存状态 161
8.2.4 使用DaemonSet进行冗余持久存储 161
8.2.5 应用持久存储卷声明 161
8.2.6 利用有状态服务集 162
8.3 在Kubernetes运行Cassandra集群 163
8.3.1 Cassandra快速入门 164
8.3.2 Cassandra Docker镜像 164
8.3.3 连接Kubernetes和Cassandra 169
8.3.4 创建Cassandra无源服务 172
8.3.5 使用有状态服务集创建Cassandra集群 172
8.3.6 使用副本控制器分布Cassandra 176
8.3.7 利用DaemonSet分布Cassandra 179
8.4 总结 180
第9章 滚动更新、可伸缩性和配额 181
9.1 水平Pod自动伸缩 181
9.1.1 声明水平Pod自动伸缩器 182
9.1.2 自定义度量 183
9.1.3 使用Kubectl自动伸缩 185
9.2 用自动伸缩进行滚动更新 187
9.3 用限制和配额处理稀缺资源 188
9.3.1 启用资源配额 189
9.3.2 资源配额类型 189
9.3.3 配额范围 191
9.3.4 请求与限制 192
9.3.5 使用配额 192
9.4 选择与管理集群性能 197
9.4.1 选择节点类型 197
9.4.2 选择存储解决方案 197
9.4.3 交易成本与响应时间 198
9.4.4 有效使用多节点配置 198
9.4.5 利用弹性云资源 198
9.4.6 考虑Hyper.sh 200
9.5 挑战Kubernetes性能极限 200
9.5.1 提高Kubernetes的性能和可扩展性 201
9.5.2 测量Kubernetes的性能和可伸缩性 202
9.5.3 按规模测试Kubernetes 205
9.6 总结 206
第 10章 高级Kubernetes网络 207
10.1 理解Kubernetes网络模型 207
10.1.1 容器内通信(容器-容器) 207
10.1.2 Pod间通信(Pod-Pod) 208
10.1.3 Pod-服务通信 208
10.1.4 外部访问 208
10.1.5 Kubernetes网络与Docker网络 209
10.1.6 查找与发现 210
10.1.7 Kubernetes网络插件 212
10.2 Kubernetes网络解决方案 217
10.2.1 裸金属集群桥接 217
10.2.2 Contiv 218
10.2.3 Open vSwitch 218
10.2.4 Nuage网络VCS 219
10.2.5 Canal 219
10.2.6 Flannel 220
10.2.7 Calico工程 221
10.2.8 Romana 222
10.2.9 Weave Net 222
10.3 有效使用网络策略 223
10.4 负载均衡选项 224
10.4.1 外部负载均衡器 225
10.4.2 服务负载均衡器 228
10.4.3 入口 228
10.5 编写自己的CNI插件 231
10.6 总结 236
第 11章 在云平台和集群联邦中运行Kubernetes 237
11.1 理解集群联邦 237
11.1.1 集群联邦的重要用例 238
11.1.2 联邦控制平面 240
11.1.3 联邦资源 241
11.1.4 高难度部分 245
11.2 管理Kubernetes集群联邦 248
11.3 从底层建立集群联邦 248
11.3.1 初始设置 249
11.3.2 使用官方hyperkube镜像 249
11.3.3 运行联邦控制平面 249
11.3.4 用联邦注册Kubernetes集群 250
11.3.5 更新KubeDNS 251
11.3.6 关闭联邦 251
11.3.7 用Kubefed建立集群联邦 251
11.4 运行联邦工作负载 257
11.4.1 创建联邦服务 257
11.4.2 添加后端Pod 258
11.4.3 验证公共DNS记录 258
11.4.4 发现联邦服务 259
11.4.5 后端Pod和整个集群的故障处理 261
11.4.6 故障排除 261
11.5 总结 262
第 12章 自定义Kubernetes API和插件 264
12.1 使用Kubernetes API 264
12.1.1 理解OpenAPI 264
12.1.2 设置代理 265
12.1.3 直接探索Kubernetes API 265
12.1.4 通过Kubernetes API创建Pod 268
12.1.5 通过Python客户端访问Kubernetes API 269
12.2 扩展Kubernetes API 275
12.2.1 理解第三方资源的结构 276
12.2.2 开发第三方资源 276
12.2.3 整合第三方资源 277
12.3 编写Kubernetes插件 278
12.4 编写授权插件 284
12.4.1 编写准入控制接口 284
12.4.2 编写自定义度量插件 287
12.4.3 编写卷插件 288
12.5 总结 291
第 13章 操作Kubernetes软件包管理器 292
13.1 理解Helm 292
13.1.1 Helm的动机 292
13.1.2 Helm架构 293
13.1.3 Helm组件 293
13.1.4 Helm与Helm-Classic 294
13.2 使用Helm 294
13.2.1 安装Helm 294
13.2.2 寻找图表 295
13.2.3 安装包 297
13.2.4 使用安装包库 302
13.2.5 使用Helm管理图表 303
13.3 创建自己的图表 304
13.3.1 Chart.yaml文件 304
13.3.2 图表元数据文件 306
13.3.3 管理图表依赖 306
13.3.4 使用模板和值 309
13.4 总结 312
第 14章 Kubernetes的未来 313
14.1 未来发展道路 313
14.1.1 Kubernetes的发行版和里程碑 313
14.1.2 Kubernetes的特别兴趣小组和工作组 314
14.2 面临的挑战 314
14.2.1 捆绑价值 314
14.2.2 Docker Swarm 315
14.2.3 Mesos/Mesosphere 315
14.2.4 云平台 315
14.2.5 AWS 315
14.2.6 Azure 316
14.2.7 阿里云 316
14.3 Kubernetes势头 316
14.3.1 社区 316
14.3.2 GitHub 316
14.3.3 会议 316
14.3.4 思维共享 317
14.3.5 生态系统 317
14.3.6 公有云提供商 317
14.4 教育和培训 318
14.5 动态插件 318
14.6 总结 319
内容摘要
本书通过理论与实践相结合,全方位地介绍Kubernetes这一容器编排的理想工具。本书共14章,涉及的主题包括理解Kubernetes架构,创建Kubernetes集群,监控、日志记录和故障排除,高可用性和可靠性,配置Kubernetes安全、限制和账户,使用关键Kubernetes资源,管理Kubernetes存储,使用Kubernetes运行有状态应用程序,滚动更新、可伸缩性和配额,高级Kubernetes网络,在云平台和集群联邦中运行Kubernetes,自定义KubernetesAPI和插件,操作Kubernetes软件包管理器以及Kubernetes的未来。本书综合考虑不同环境和用例,使读者了解如何创建大型系统并将其部署在Kubernetes上。在各章节主题中,读者提供了丰富的实践案例分析,娓娓道来,引人入胜。
本书可以作为Kubernetes的实践参考手册,聚焦于设计和管理Kubernetes集群,为开发人员、运维工程师详细介绍了Kubernetes所提供的功能和服务。
— 没有更多了 —
以下为对购买帮助不大的评价