[套装书]深入理解Elasticsearch(原书第3版)+Kubernetes进阶实战(2册)

作者
(印度)波哈维·荻西特(Bharvi Dixit)马永亮
丛书名
云计算与虚拟化技术丛书
出版社
机械工业出版社
ISBN
9782001101541
简要
简介
内容简介书籍计算机书籍 ---------------------------深入理解Elasticsearch(原书第3版)--------------------------- 本书在回顾Elasticsearch基础知识的同时,介绍了最新版本Elasticsearch 5的新功能,并对其中级和高级的功能(如查询、索引、搜索和修改数据)进行了详细说明。本书还将探索聚集、指标控制、分片、复制和聚类等概念,并通过实例展示监控管理模块、创建分析插件等。通过本书,读者可以对Elasticsearch 5有一个全面的认识并掌握其性能。 ---------------------------Kubernetes进阶实战--------------------------- 全书分为3篇。第一篇详细讲解Kubernetes系统基础架构及核心概述,并提供一个Kubernetes快速部署和应用的入门指南。第二篇剖析分Kubernetes系统的核心组件,对Pod、Controller、Service、Network Policy、Volume、ConfigMap和Secret等都有着深入讲解。第三篇主要关注实际应用,以DevOps为主线讲解Kubernetes在企业落地应用的解决方案示例。
目录



---------------------------深入理解Elasticsearch(原书第3版)---------------------------


译者序
前言
致谢
作者简介
审阅者简介
第1章 回顾Elasticsearch与演进历史 1
1.1 Apache Lucene简介 1
1.1.1 更深入地了解Lucene索引 2
1.1.2 Elasticsearch概览 7
1.2 Elasticsearch 5.x介绍 8
1.2.1 Elasticsearch新特性简介 9
1.2.2 Elasticsearch的演进 10
1.2.3 2.x到5.x的变化 14
1.3 小结 16
第2章 查询DSL进阶 17
2.1 Lucene的新默认文本评分机制——BM25 17
2.1.1 理解精确率与召回率 18
2.1.2 回顾TF-IDF 18
2.1.3 BM25与TF-IDF有什么不同 21
2.2 查询DSL重构 22
2.3 为任务选择合适的查询 22
2.3.1 查询方式分类 22
2.3.2 使用示例 27
2.3.3 查询DSL的其他重要变化 36
2.4 查询改写 37
2.4.1 前缀查询示例 37
2.4.2 回到Apache Lucene 39
2.4.3 查询改写的属性 40
2.5 查询模板 43
2.5.1 引入查询模板 43
2.5.2 Mustache模板引擎 45
2.6 小结 49
第3章 不只是文本搜索 50
3.1 多匹配控制 50
3.2 多匹配类型 51
3.2.1 最佳字段匹配 51
3.2.2 跨字段匹配 54
3.2.3 最多字段匹配 55
3.2.4 短语匹配 56
3.2.5 带前缀的短语匹配 56
3.3 用函数得分查询控制分数 57
3.4 函数得分查询下的内嵌函数 58
3.4.1 weight函数 58
3.4.2 字段值因子函数 59
3.4.3 脚本评分函数 60
3.4.4 衰变函数——linear、exp和gauss 60
3.5 查询二次评分 61
3.6 二次评分查询的结构 62
3.7 Elasticsearch脚本 66
3.7.1 语法 66
3.7.2 Elasticsearch各版本中脚本的变化 66
3.8 新的默认脚本语言Painless 67
3.8.1 用Painless写脚本 67
3.8.2 示例 69
3.8.3 用脚本为结果排序 71
3.8.4 按多个字段排序 72
3.9 Lucene表达式 73
3.9.1 基础知识 73
3.9.2 一个例子 73
3.10 小结 75
第4章 数据建模与分析 76
4.1 Elasticsearch中的数据建模方法 76
4.2 管理Elasticsearch中的关系型数据 77
4.2.1 对象类型 77
4.2.2 嵌套文档 80
4.2.3 父子关系 82
4.2.4 其他可选方案 84
4.2.5 数据反范式的例子 84
4.3 用聚合做数据分析 85
4.3.1 Elasticsearch 5.0的快速聚合 85
4.3.2 重温聚合 86
4.3.3 一类新的聚合:矩阵聚合 93
4.4 小结 96
第5章 改善用户搜索体验 97
5.1 改正用户拼写错误 97
5.1.1 测试数据 98
5.1.2 深入技术细节 99
5.2 suggester 99
5.2.1 在_search端点下使用suggester 99
5.2.2 term suggester 103
5.2.3 phrase suggester 105
5.2.4 completion suggester 113
5.3 实现自己的自动完成功能 117
5.4 处理同义词 120
5.4.1 为同义词搜索准备settings 120
5.4.2 格式化同义词 121
5.4.3 同义词扩展与收缩 122
5.5 小结 123
第6章 分布式索引架构 125
6.1 配置示例的多节点集群 125
6.2 选择合适数量的分片和副本 127
6.2.1 分片和预分配 127
6.2.2 预分配的正面例子 128
6.2.3 多分片与多索引 128
6.3 路由 129
6.3.1 分片和数据 129
6.3.2 测试路由功能 130
6.3.3 在索引过程中使用路由 132
6.3.4 路由实战 132
6.3.5 查询 134
6.3.6 别名 136
6.3.7 多值路由 137
6.4 分片分配控制 137
6.4.1 部署意识 138
6.4.2 确定每个节点允许的总分片数 142
6.4.3 确定每台物理服务器允许的总分片数 143
6.5 查询执行偏好 146
6.5.1 preference参数 146
6.5.2 使用查询执行偏好的例子 148
6.6 将数据切分到多个路径中 148
6.7 索引与类型——创建索引的改进方法 148
6.8 小结 149
第7章 底层索引控制 150
7.1 改变Apache Lucene的评分方式 150
7.2 可用的相似度模型 151
7.3 为每个字段配置相似度模型 151
7.4 相似度模型配置 152
7.5 选择默认的相似度模型 153
7.6 选择合适的实现——store模块 156
7.7 存储类型 156
7.8 准实时、提交、更新及事务日志 158
7.8.1 索引更新及更新提交 159
7.8.2 更改默认的刷新时间 159
7.8.3 事务日志 160
7.8.4 实时读取 161
7.9 控制段合并 162
7.9.1 Elasticsearch合并策略的变化 163
7.9.2 配置tiered合并策略 163
7.9.3 合并调度 164
7.9.4 强制合并 165
7.10 理解Elasticsearch缓存 166
7.10.1 节点查询缓存 166
7.10.2 分片查询缓存 166
7.10.3 字段数据缓存 168
7.10.4 使用circuit breaker 168
7.11 小结 169
第8章 管理Elasticsearch 170
8.1 Elasticsearch的节点类型 170
8.1.1 数据节点 171
8.1.2 主节点 171
8.1.3 Ingest节点 171
8.1.4 部落节点 172
8.1.5 协调节点/客户端节点 172
8.2 发现和恢复模块 172
8.2.1 发现模块的配置 173
8.2.2 网关和恢复模块的配置 177
8.2.3 索引恢复API 179
8.3 使用对人类友好的Cat API 182
8.3.1 Cap API的基础知识 183
8.3.2 使用Cat API 184
8.4 备份 186
8.4.1 快照API 187
8.4.2 在文件系统中保存备份 187
8.4.3 在云中保存备份 189
8.5 快照恢复 193
8.6 小结 196
第9章 数据转换与联盟搜索 197
9.1 用ingest节点在Elasticsearch里对数据进行预处理 197
9.1.1 使用ingest管道 198
9.1.2 处理管道中的错误 202
9.1.3 使用ingest处理器 204
9.2 联盟搜索 208
9.2.1 测试集群 208
9.2.2 建立部落节点 209
9.2.3 通过部落节点读取数据 211
9.2.4 主节点级别的读操作 212
9.2.5 通过部落节点写入数据 213
9.2.6 主节点级别的写操作 213
9.2.7 处理索引冲突 213
9.2.8 屏蔽写操作 215
9.3 小结 215
第10章 提升性能 216
10.1 查询验证与分析器 216
10.1.1 在执行前就验证代价大的查询 217
10.1.2 获得详细查询执行报告的查询分析器 219
10.1.3 关于查询分析用途的思考 221
10.2 热点线程 222
10.2.1 热点线程的使用说明 222
10.2.2 热点线程API的响应 223
10.3 扩展Elasticsearch集群 224
10.3.1 垂直扩展 224
10.3.2 水平扩展 225
10.3.3 在高负载的场景下使用Elasticsearch 231
10.4 用shrink和rollover API高效管理基于时间的索引 242
10.4.1 shrink API 243
10.4.2  rollover API 244
10.5 小结 246
第11章 开发Elastisearch插件 247
11.1 创建Apache Maven的项目架构 247
11.1.1 了解基础知识 248
11.1.2 Maven Java项目的结构 248
11.2 创建自定义REST行为插件 252
11.2.1 设定 252
11.2.2 实现细节 252
11.2.3 测试阶段 256
11.2.4 检验REST行为插件是否工作正常 257
11.3 创建自定义分析插件 258
11.3.1 实现细节 258
11.3.2 测试自定义分析插件 262
11.4 小结 264
第12章 介绍Elastic Stack 5.0 265
12.1 Elastic Stack 5.0简介 265
12.2 介绍Logstash、Beats和Kibana 266
12.2.1 使用Logstash 266
12.2.2 引入Beats作为数据传输器 271
12.2.3 使用Kibana 273
12.3 小结 282



---------------------------Kubernetes进阶实战---------------------------


前言
第1章 Kubernetes系统基础 1
1.1 容器技术概述 1
1.1.1 容器技术的功用 2
1.1.2 容器简史 3
1.1.3 Docker的功能限制 4
1.2 Kubernetes概述 4
1.2.1 Kubernetes简史 4
1.2.2 Kubernetes特性 5
1.2.3 Kubernetes概念和术语 6
1.3 Kubernetes集群组件 10
1.3.1 Master组件 10
1.3.2 Node组件 12
1.3.3 核心附件 13
1.4 Kubernetes网络模型基础 13
1.4.1 网络模型概述 13
1.4.2 集群上的网络通信 15
1.5 本章小结 16
第2章 Kubernetes快速入门 17
2.1 Kubernetes的核心对象 17
2.1.1 Pod资源对象 18
2.1.2 Controller 19
2.1.3 Service 20
2.1.4 部署应用程序的主体过程 21
2.2 部署Kubernetes集群 22
2.2.1 kubeadm部署工具 22
2.2.2 集群运行模式 24
2.2.3 准备用于实践操作的集群环境 25
2.2.4 获取集群环境相关的信息 26
2.3 kubectl使用基础与示例 26
2.4 命令式容器应用编排 29
2.4.1 部署应用(Pod) 30
2.4.2 探查Pod及应用详情 33
2.4.3 部署Service对象 36
2.4.4 扩容和缩容 38
2.4.5 修改及删除对象 40
2.5 本章小结 41
第3章 资源管理基础 42
3.1 资源对象及API群组 42
3.1.1 Kubernetes的资源对象 43
3.1.2 资源及其在API中的组织形式 46
3.1.3 访问Kubernetes REST API 48
3.2 对象类资源格式 49
3.2.1 资源配置清单 50
3.2.2 metadata嵌套字段 51
3.2.3 spec和status字段 52
3.2.4 资源配置清单格式文档 53
3.2.5 资源对象管理方式 54
3.3 kubectl命令与资源管理 56
3.3.1 资源管理操作概述 56
3.3.2 kubectl的基本用法 57
3.4 管理名称空间资源 59
3.4.1 查看名称空间及其资源对象 60
3.4.2 管理Namespace资源 61
3.5 Pod资源的基础管理操作 61
3.5.1 陈述式对象配置管理方式 62
3.5.2 声明式对象配置管理方式 64
3.6 本章小结 65
第4章 管理Pod资源对象 66
4.1 容器与Pod资源对象 66
4.2 管理Pod对象的容器 68
4.2.1 镜像及其获取策略 69
4.2.2 暴露端口 70
4.2.3 自定义运行的容器化应用 71
4.2.4 环境变量 72
4.2.5 共享节点的网络名称空间 73
4.2.6 设置Pod对象的安全上下文 74
4.3 标签与标签选择器 75
4.3.1 标签概述 75
4.3.2 管理资源标签 77
4.3.3 标签选择器 78
4.3.4 Pod节点选择器nodeSelector 79
4.4 资源注解 80
4.4.1 查看资源注解 81
4.4.2 管理资源注解 82
4.5 Pod对象的生命周期 82
4.5.1 Pod的相位 82
4.5.2 Pod的创建过程 83
4.5.3 Pod生命周期中的重要行为 84
4.5.4 容器的重启策略 87
4.5.5 Pod的终止过程 87
4.6 Pod存活性探测 88
4.6.1 设置exec探针 89
4.6.2 设置HTTP探针 90
4.6.3 设置TCP探针 92
4.6.4 存活性探测行为属性 93
4.7 Pod就绪性探测 94
4.8 资源需求及资源限制 96
4.8.1 资源需求 96
4.8.2 资源限制 98
4.8.3 容器的可见资源 99
4.8.4 Pod的服务质量类别 100
4.9 本章小结 101
第5章 Pod控制器 103
5.1 关于Pod控制器 103
5.1.1 Pod控制器概述 104
5.1.2 控制器与Pod对象 105
5.1.3 Pod模板资源 106
5.2 ReplicaSet控制器 106
5.2.1 ReplicaSet概述 107
5.2.2 创建ReplicaSet 108
5.2.3 ReplicaSet管控下的Pod对象 109
5.2.4 更新ReplicaSet控制器 111
5.2.5 删除ReplicaSet控制器资源 114
5.3 Deployment控制器 114
5.3.1 创建Deployment 115
5.3.2 更新策略 116
5.3.3 升级Deployment 119
5.3.4 金丝雀发布 121
5.3.5 回滚Deployment控制器下的应用发布 123
5.3.6 扩容和缩容 123
5.4 DaemonSet控制器 124
5.4.1 创建DaemonSet资源对象 124
5.4.2 更新DaemonSet对象 126
5.5 Job控制器 127
5.5.1 创建Job对象 128
5.5.2 并行式Job 129
5.5.3 Job扩容 130
5.5.4 删除Job 130
5.6 CronJob控制器 131
5.6.1 创建CronJob对象 131
5.6.2 CronJob的控制机制 132
5.7 ReplicationController 133
5.8 Pod中断预算 133
5.9 本章小结 134
第6章 Service和Ingress 136
6.1 Service资源及其实现模型 136
6.1.1 Service资源概述 136
6.1.2 虚拟IP和服务代理 138
6.2 Service资源的基础应用 140
6.2.1 创建Service资源 140
6.2.2 向Service对象请求服务 141
6.2.3 Service会话粘性 142
6.3 服务发现 143
6.3.1 服务发现概述 143
6.3.2 服务发现方式:环境变量 145
6.3.3 ClusterDNS和服务发现 146
6.3.4 服务发现方式:DNS 146
6.4 服务暴露 147
6.4.1 Service类型 147
6.4.2 NodePort类型的Service资源 149
6.4.3 LoadBalancer类型的Service资源 150
6.4.4 ExternalName Service 151
6.5 Headless类型的Service资源 152
6.5.1 创建Headless Service资源 153
6.5.2 Pod资源发现 153
6.6 Ingress资源 154
6.6.1 Ingress和Ingress Controller 154
6.6.2 创建Ingress资源 155
6.6.3 Ingress资源类型 157
6.6.4 部署Ingress控制器(Nginx) 159
6.7 案例:使用Ingress发布tomcat 161
6.7.1 准备名称空间 161
6.7.2 部署tomcat实例 162
6.7.3 创建Service资源 163
6.7.4 创建Ingress资源 164
6.7.5 配置TLS Ingress资源 165
6.8 本章小结 168
第7章 存储卷与数据持久化 169
7.1 存储卷概述 169
7.1.1 Kubernetes支持的存储卷类型 170
7.1.2 存储卷的使用方式 171
7.2 临时存储卷 172
7.2.1 emptyDir存储卷 172
7.2.2 gitRepo存储卷 175
7.3 节点存储卷hostPath 176
7.4 网络存储卷 178
7.4.1 NFS存储卷 178
7.4.2 RBD存储卷 180
7.4.3 GlusterFS存储卷 182
7.4.4 Cinder存储卷 183
7.5 持久存储卷 184
7.5.1 创建PV 186
7.5.2 创建PVC 188
7.5.3 在Pod中使用PVC 190
7.5.4 存储类 191
7.5.5 PV和PVC的生命周期 194
7.6 downwardAPI存储卷 196
7.6.1 环境变量式元数据注入 197
7.6.2 存储卷式元数据注入 199
7.7 本章小结 201
第8章 配置容器应用:ConfigMap和Secret 202
8.1 容器化应用配置方式 202
8.2 通过命令行参数配置容器应用 204
8.3 利用环境变量配置容器应用 206
8.4 应用程序配置管理及ConfigMap资源 208
8.4.1 创建ConfigMap对象 209
8.4.2 向Pod环境变量传递ConfigMap对象键值数据 212
8.4.3 ConfigMap存储卷 215
8.4.4 容器应用重载新配置 219
8.4.5 使用ConfigMap资源的注意事项 220
8.5 Secret资源 221
8.5.1 Secret概述 221
8.5.2 创建Secret资源 222
8.5.3 Secret存储卷 224
8.5.4 imagePullSecret资源对象 225
8.6 本章小结 226
第9章 StatefulSet控制器 227
9.1 StatefulSet概述 227
9.1.1 Stateful应用和Stateless应用 227
9.1.2 StatefulSet控制器概述 228
9.1.3 StatefulSet的特性 230
9.2 StatefulSet基础应用 231
9.2.1 创建StatefulSet对象 232
9.2.2 Pod资源标识符及存储卷 234
9.3 StatefulSet资源扩缩容 237
9.4 StatefulSet资源升级 238
9.4.1 滚动更新 238
9.4.2 暂存更新操作 239
9.4.3 金丝雀部署 240
9.4.4 分段更新 241
9.4.5 其他话题 241
9.5 案例:etcd集群 242
9.5.1 创建Service资源 242
9.5.2 etcd StatefulSet 243
9.6 本章小结 247
第10章 认证、授权与准入控制 248
10.1 访问控制概述 248
10.1.1 用户账户与用户组 249
10.1.2 认证、授权与准入控制基础 250
10.2 服务账户管理与应用 253
10.2.1 Service Account自动化 253
10.2.2 创建服务账户 255
10.2.3 调用imagePullSecret资源对象 256
10.3 X.509数字证书认证 256
10.3.1 Kubernetes中的SSL/TLS认证 257
10.3.2 客户端配置文件kubeconfig 259
10.3.3 TLS bootstrapping机制 262
10.4 基于角色的访问控制:RBAC 263
10.4.1 RBAC授权插件 264
10.4.2 Role和RoleBinding 266
10.4.3 ClusterRole和ClusterRoleBin-ding 269
10.4.4 聚合型ClusterRole 271
10.4.5 面向用户的内建ClusterRole 273
10.4.6 其他的内建ClusterRole和ClusterRoleBinding 274
10.5 Kubernetes Dashboard 275
10.5.1 部署HTTPS通信的Dashboard 275
10.5.2 配置token认证 277
10.5.3 配置kubeconfig认证 277
10.6 准入控制器与应用示例 279
10.6.1 LimitRange资源与LimitRanger准入控制器 279
10.6.2 ResourceQuota资源与准入控制器 281
10.6.3 PodSecurityPolicy 283
10.7 本章小结 288
第11章 网络模型与网络策略 289
11.1 Kubernetes网络模型及CNI插件 289
11.1.1 Docker容器的网络模型 289
11.1.2 Kubernetes网络模型 291
11.1.3 Pod网络的实现方式 293
11.1.4 CNI插件及其常见的实现 295
11.2 flannel网络插件 297
11.2.1 flannel的配置参数 297
11.2.2 VxLAN后端和direct routing 298
11.2.3 host-gw后端 301
11.3 网络策略 302
11.3.1 网络策略概述 302
11.3.2 部署Canal提供网络策略功能 303
11.3.3 配置网络策略 305
11.3.4 管控入站流量 306
11.3.5 管控出站流量 308
11.3.6 隔离名称空间 310
11.3.7 网络策略应用案例 311
11.4 Calico网络插件 315
11.4.1 Calico工作特性 316
11.4.2 Calico系统架构 318
11.4.3 Calico部署要点 320
11.4.4 部署Calico提供网络服务和网络策略 321
11.4.5 客户端工具calicoctl 324
11.5 本章小结 325
第12章 Pod资源调度 326
12.1 Kubernetes调度器概述 326
12.1.1 常用的预选策略 327
12.1.2 常用的优选函数 330
12.2 节点亲和调度 332
12.2.1 节点硬亲和性 332
12.2.2 节点软亲和性 335
12.3 Pod资源亲和调度 337
12.3.1 位置拓扑 338
12.3.2 Pod硬亲和调度 338
12.3.3 Pod软亲和调度 341
12.3.4 Pod反亲和调度 342
12.4 污点和容忍度 343
12.4.1 定义污点和容忍度 344
12.4.2 管理节点的污点 345
12.4.3 Pod对象的容忍度 346
12.4.4 问题节点标识 347
12.5 Pod优选级和抢占式调度 347
12.6 本章小结 348
第13章 Kubernetes系统扩展 349
13.1 自定义资源类型(CRD) 349
13.1.1 创建CRD对象 350
13.1.2 自定义资源格式验证 351
13.1.3 子资源 353
13.1.4 使用资源类别 355
13.1.5 多版本支持 355
13.1.6 自定义控制器基础 356
13.2 自定义API Server 359
13.2.1 自定义API Server概述 359
13.2.2 APIService对象 360
13.3 Kubernetes集群高可用 361
13.3.1 etcd高可用 362
13.3.2 Controller Manager和Scheduler高可用 363
13.4 Kubernetes的部署模式 364
13.4.1 关键组件 365
13.4.2 常见的部署模式 366
13.5 容器时代的DevOps概述 369
13.5.1 容器:DevOps协作的基础 369
13.5.2 泛型端到端容器应用程序生命周期工作流 370
13.5.3 基于Kubernetes的DevOps 371
13.6 本章小结 372
第14章 资源指标及HPA控制器 373
14.1 资源监控及资源指标 373
14.1.1 资源监控及Heapster 374
14.1.2 新一代监控架构 376
14.2 资源指标及其应用 378
14.2.1 部署metrics-server 378
14.2.2 kubectl top命令 380
14.3 自定义指标与Prometheus 381
14.3.1 Prometheus概述 382
14.3.2 部署Prometheus监控系统 384
14.3.3 自定义指标适配器k8s-prometheus-adapter 388
14.4 自动弹性缩放 390
14.4.1 HPA概述 390
14.4.2 HPA(v1)控制器 391
14.4.3 HPA(v2)控制器 393
14.5 本章小结 397
第15章 Helm程序包管理器 398
15.1 Helm基础 398
15.1.1 Helm的核心术语 399
15.1.2 Helm架构 400
15.1.3 安装Helm Client 400
15.1.4 安装Tiller server 401
15.1.5 Helm快速入门 402
15.2 Helm Charts 405
15.2.1 Charts文件组织结构 405
15.2.2 Chart.yaml文件组织格式 406
15.2.3 Charts中的依赖关系 407
15.2.4 模板和值 408
15.2.5 其他需要说明的话题 409
15.2.6 自定义Charts 410
15.3 Helm实践:部署EFK日志管理系统 415
15.3.1 ElasticSearch集群 416
15.3.2 日志采集代理fluentd 421
15.3.3 可视化组件Kibana 422
15.4 本章小结 424
附录A 部署Kubernetes集群 425
附录B 部署GlusterFS及Heketi 437



有问题微信扫码联系

推荐

Understand China
桂ICP备20004708号-4