[套装书]Kubernetes进阶实战(第2版)+Kubernetes微服务实战(2册)

作者
马永亮 吉吉·赛凡
丛书名
云计算与虚拟化技术丛书
出版社
机械工业出版社
ISBN
9782102101138
简要
简介
内容简介书籍计算机书籍 ---------------------------Kubernetes进阶实战(第2版)--------------------------- 全书分为5个部分。第一部分介绍Kubernetes系统基础架构及核心概述,并提供一个Kubernetes快速部署和应用的入门指南。第二部分剖析分Kubernetes系统的应用编排核心组件,对Pod、Controller、Service和Ingress、存储卷和应用配置等进行深入介绍。第三部分介绍安全相关的话题,主要涉及认证、授权、准入控制、网络模型和网络策略等话题。第四部分介绍Kubernetes系统高级话题及系统扩展,包括调度策略、CRD和Operator、资源指标与系统监控及应用管理器等。第五部分介绍基于Kubernetes的服务治理与服务网络,涉及数据平面组件Envoy、Istio架构、部署和应用案例等话题。 ---------------------------Kubernetes微服务实战--------------------------- 本书深入介绍Kubernetes和微服务之间的协同关系。首先介绍如何使用示例应用程序Delinkcious,它将作为贯穿全书的动手实验,帮助读者在实际应用程序的上下文中理解微服务和Kubernetes的概念。接下来,介绍了如何设置CI/CD流水线以及使用Kubernetes ConfigMap配置微服务。然后介绍微服务安全和实现REST、gRPC API和Delinkcious数据存储的实践。除此之外,本书还探索了Nuclio项目,介绍如何在Kubernetes上运行一个无服务器任务,并管理和实现数据密集型测试。在最后几章中,你将在Kubernetes上部署微服务,并学习如何做好系统的监控。最后,你将逐渐发现服务网格的重要性,以及如何将Istio集成到Delinkcious集群中。
目录



---------------------------Kubernetes进阶实战(第2版)---------------------------


前言
第一部分 系统基础
第1章 Kubernetes系统基础2
1.1 容器与容器编排系统3
1.1.1 Docker容器技术3
1.1.2 OCI与容器运行时5
1.1.3 为什么需要容器编排系统7
1.2 Kubernetes基础8
1.2.1 Kubernetes集群概述9
1.2.2 Kubernetes集群架构11
1.3 应用的运行与互联互通14
1.3.1 Pod与Service15
1.3.2 Pod控制器16
1.3.3 Kubernetes网络基础18
1.3.4 部署并访问应用20
1.4 简析Kubernetes生态系统21
1.5 本章小结23
第2章 Kubernetes快速入门24
2.1 利用kubeadm部署Kubernetes集群24
2.1.1 kubeadm部署工具25
2.1.2 集群组件运行模式26
2.1.3 kubeadm init工作流程28
2.1.4 kubeadm join工作流程31
2.1.5 kubeadm配置文件33
2.2 部署分布式Kubernetes集群34
2.2.1 准备基础环境34
2.2.2 单控制平面集群38
2.3 kubectl命令与资源管理43
2.3.1 资源管理的操作44
2.3.2 kubectl的命令格式45
2.3.3 kubectl命令常用操作示例47
2.3.4 kubectl插件50
2.4 命令式应用编排52
2.4.1 应用编排53
2.4.2 部署Service对象56
2.4.3 扩容与缩容58
2.4.4 修改与删除对象60
2.5 本章小结61
第二部分 核心资源
第3章 Kubernetes资源管理64
3.1 资源对象与API群组64
3.1.1 Kubernetes的资源对象65
3.1.2 资源及其在API中的组织形式68
3.1.3 访问Kubernetes RESTful API70
3.2 对象类资源配置规范72
3.2.1 定义资源对象73
3.2.2 对象元数据74
3.2.3 资源的期望状态75
3.2.4 获取资源配置清单格式文档75
3.2.5 资源对象管理方式77
3.3 名称空间79
3.3.1 名称空间的作用80
3.3.2 管理Namespace资源81
3.4 节点资源86
3.4.1 节点心跳与节点租约86
3.4.2 节点状态87
3.4.3 手动管理Node资源与节点89
3.5 标签与标签选择器91
3.5.1 资源标签91
3.5.2 标签选择器93
3.6 资源注解94
3.7 本章小结96
第4章 应用部署、运行与管理97
4.1 应用容器与Pod资源97
4.1.1 Pod资源基础97
4.1.2 容器设计模式99
4.1.3 Pod的生命周期104
4.2 在Pod中运行应用105
4.2.1 使用单容器Pod资源106
4.2.2 获取Pod与容器状态详情107
4.2.3 自定义容器应用与参数110
4.2.4 容器环境变量111
4.2.5 Pod的创建与删除过程112
4.3 暴露容器服务115
4.3.1 其他容器端口映射115
4.3.2 配置Pod使用节点网络117
4.4 容器安全上下文118
4.4.1 配置格式速览119
4.4.2 管理容器进程的运行身份120
4.4.3 管理容器的内核功能121
4.4.4 特权模式容器123
4.4.5 在Pod上使用sysctl124
4.5 容器应用的管理接口125
4.5.1 健康状态监测接口126
4.5.2 容器存活状态检测127
4.5.3 Pod的重启策略133
4.5.4 容器就绪状态检测133
4.5.5 容器生命周期135
4.6 多容器Pod138
4.6.1 初始化容器138
4.6.2 Sidecar容器140
4.7 资源需求与资源限制142
4.7.1 资源需求与限制142
4.7.2 容器资源需求143
4.7.3 容器资源限制145
4.7.4 容器可见资源146
4.7.5 Pod服务质量类别147
4.8 综合应用案例149
4.9 本章小结150
第5章 存储卷与数据持久化152
5.1 存储卷基础152
5.1.1 存储卷概述152
5.1.2 配置Pod存储卷154
5.2 临时存储卷156
5.2.1 emptyDir存储卷156
5.2.2 gitRepo存储卷158
5.3 hostPath存储卷159
5.4 网络存储卷161
5.4.1 NFS存储卷162
5.4.2 RBD存储卷164
5.4.3 CephFS存储卷167
5.4.4 GlusterFS存储卷169
5.5 持久存储卷171
5.5.1 PV与PVC基础172
5.5.2 PV的生命周期173
5.5.3 静态PV资源175
5.5.4 PVC资源178
5.5.5 在Pod中使用PVC181
5.5.6 存储类181
5.6 容器存储接口CSI187
5.6.1 CSI基础187
5.6.2 Longhorn存储系统189
5.7 本章小结194
第6章 应用配置195
6.1 容器化应用配置195
6.1.1 容器化应用配置的常见方式195
6.1.2 容器环境变量197
6.2 应用程序配置管理与ConfigMap资源199
6.2.1 创建ConfigMap对象200
6.2.2 通过环境变量引用ConfigMap键值203
6.2.3 ConfigMap存储卷206
6.2.4 容器应用重载新配置211
6.3 Secret资源:向容器注入配置信息213
6.3.1 创建Secret资源213
6.3.2 使用Secret资源219
6.4 应用Downward API存储卷配置信息223
6.4.1 环境变量式元数据注入223
6.4.2 存储卷式元数据注入226
6.5 本章小结228
第7章 Service与服务发现229
7.1 Service资源及其实现模型229
7.1.1 Service资源概述229
7.1.2 kube-proxy代理模型230
7.1.3 Service资源类型233
7.2 应用Service资源235
7.2.1 应用ClusterIP Service资源236
7.2.2 应用NodePort Service资源238
7.2.3 应用LoadBalancer Service资源240
7.2.4 外部IP241
7.3 Service与Endpoint资源242
7.3.1 Endpoint与容器探针243
7.3.2 自定义Endpoint资源245
7.4 深入理解Service资源247
7.4.1 iptables代理模型247
7.4.2 ipvs代理模型255
7.5 Kubernetes服务发现258
7.5.1 服务发现概述258
7.5.2 基于环境变量的服务发现259
7.5.3 基于DNS的服务发现260
7.5.4 Pod的DNS解析策略与配置263
7.5.5 配置CoreDNS264
7.6 Headless Service资源解析266
7.6.1 ExternalName Service266
7.6.2 Headless Service267
7.7 本章小结270
第8章 应用编排与管理271
8.1 Kubernetes控制器基础271
8.1.1 控制器与Pod资源272
8.1.2 Pod模板资源275
8.2 ReplicaSet控制器276
8.2.1 功能分析276
8.2.2 ReplicaSet基础应用277
8.2.3 应用更新与回滚280
8.2.4 应用扩容与缩容285
8.2.5 高级更新策略286
8.3 Deployment控制器291
8.3.1 Deployment基础应用291
8.3.2 Deployment更新策略294
8.3.3 应用更新与回滚296
8.3.4 金丝雀发布298
8.4 StatefulSet控制器300
8.4.1 功能分析300
8.4.2 StatefulSet基础应用302
8.4.3 扩缩容与滚动更新306
8.4.4 StatefulSet的局限性309
8.5 DaemonSet控制器310
8.5.1 DaemonSet资源基础应用311
8.5.2 DaemonSet更新策略313
8.6 Job控制器314
8.6.1 Job资源基础应用315
8.6.2 并行式Job与扩容机制318
8.7 CronJob控制器319
8.8 Pod中断预算321
8.9 本章小结324
第三部分 安全
第9章 认证、授权与准入控制326
9.1 Kubernetes访问控制326
9.1.1 用户账户与用户组327
9.1.2 认证、授权与准入控制基础328
9.1.3 测试使用API Server的访问控制机制332
9.2 ServiceAccount及认证336
9.2.1 ServiceAccount自动化336
9.2.2 ServiceAccount基础应用338
9.2.3 Pod资源上的服务账户340
9.3 X509数字证书认证342
9.3.1 Kubernetes的X509数字证书认证体系343
9.3.2 TLS Bootstrapping机制347
9.4 kubeconfig配置文件348
9.4.1 kubeconfig文件格式348
9.4.2 自定义kubeconfig文件350
9.4.3 X509数字证书身份凭据353
9.4.4 多kubeconfig文件与合并354
9.5 基于角色的访问控制:RBAC355
9.5.1 RBAC授权模型356
9.5.2 Role与ClusterRole358
9.5.3 RoleBinding与ClusterRole-Binding361
9.5.4 聚合型ClusterRole364
9.5.5 面向用户的内置ClusterRole366
9.6 认证与权限应用案例:Dashboard368
9.6.1 部署Dashboard368
9.6.2 认证与授权370
9.7 准入控制器372
9.7.1 准入控制器概述372
9.7.2 LimitRange373
9.7.3 ResourceQuota377
9.7.4 PodSecurityPolicy379
9.8 本章小结386
第10章 网络模型与网络策略387
10.1 容器网络模型387
10.1.1 容器网络通信模式387
10.1.2 CNI网络插件基础391
10.1.3 Overlay网络模型394
10.1.4 Underlay网络模型396
10.1.5 配置CNI插件400
10.1.6 CNI插件与选型404
10.2 Flannel网络插件406
10.2.1 Flannel配置基础406
10.2.2 VXLAN后端408
10.2.3 直接路由412
10.2.4 host-gw后端414
10.3 Calico网络插件416
10.3.1 Calico架构417
10.3.2 Calico配置基础419
10.3.3 IPIP隧道网络421
10.3.4 客户端工具calicoctl424
10.3.5 BGP网络与BGP Reflector426
10.4 网络策略430
10.4.1 网络策略与配置基础431
10.4.2 管控入站流量433
10.4.3 管控出站流量436
10.4.4 隔离名称空间438
10.4.5 Calico的网络策略439
10.5 本章小结441
第四部分 进阶
第11章 Pod资源调度444
11.1  Kubernetes调度器444
11.1.1 调度器基础445
11.1.2 经典调度策略449
11.1.3 调度器插件454
11.1.4 配置调度器456
11.2 节点亲和调度461
11.2.1 Pod节点选择器462
11.2.2 强制节点亲和463
11.2.3 首选节点亲和465
11.3 Pod亲和调度467
11.3.1 位置拓扑468
11.3.2 Pod间的强制亲和469
11.3.3 Pod间的首选亲和471
11.3.4 Pod间的反亲和关系473
11.4 节点污点与Pod容忍度475
11.4.1 污点与容忍度基础概念475
11.4.2 定义污点477
11.4.3 定义容忍度478
11.4.4 问题节点标识479
11.5 拓扑分布式调度480
11.6 Pod优先级与抢占481
11.7 本章小结483
第12章 Kubernetes系统扩展484
12.1 CRD484
12.1.1 CRD 基础应用485
12.1.2 打印字段与资源类别488
12.1.3 CRD子资源489
12.1.4 CRD v1beta1版本491
12.2 自定义API Server492
12.2.1 自定义API Server运行机制493
12.2.2 APIService资源与应用494
12.3 控制器与Operator496
12.3.1 自定义控制器的工作机制496
12.3.2 Operator与简单应用示例500
12.4 Kubernetes集群高可用503
12.4.1 etcd高可用与控制平面拓扑503
12.4.2 Controller Manager与Scheduler高可用505
12.4.3 部署高可用控制平面506
12.5 本章小结508
第13章 Ingress与服务发布509
13.1  Ingress资源509
13.1.1 Ingress与Ingress控制器流量转发509
13.1.2 Ingress资源规范511
13.1.3 Ingress资源类型515
13.2 Ingress控制器部署与应用517
13.2.1 Ingress Nginx部署与测试518
13.2.2 配置Ingress Nginx522
13.2.3 Ingress资源案例:发布Dashboard524
13.3 Contour控制器525
13.3.1 Envoy数据平面525
13.3.2 部署Contour529
13.3.3 HTTPProxy基础532
13.3.4 HTTPProxy高级路由533
13.3.5 HTTPProxy服务韧性539
13.3.6 TCP代理542
13.4 本章小结544
第五部分 必备生态组件
第14章 应用管理546
14.1 Kustomize声明式应用管理546
14.1.1 声明式应用管理基本用法547
14.1.2 应用配置分解549
14.1.3 配置生成器551
14.1.4 资源补丁553
14.2 Helm基础应用556
14.2.1 Helm基础556
14.2.2 Helm 3 快速入门558
14.3 Helm Chart562
14.3.1 Chart包结构与描述文件562
14.3.2 Chart中的依赖关系564
14.3.3 模板与值565
14.3.4 其他需要说明的话题567
14.3.5 自定义Chart简单示例568
14.4 Helm实践:部署Harbor注册中心575
14.4.1 部署方案与配置方式577
14.4.2 Harbor部署与测试582
14.5 本章小结585
第15章 资源指标与集群监控586
15.1 资源监控与资源指标586
15.1.1 资源监控与Heapster587
15.1.2 新一代监控体系与指标系统589
15.2 资源指标与应用591
15.2.1 部署Metrics Server591
15.2.2 显示资源使用信息595
15.3 自定义指标与Prometheus596
15.3.1 Prometheus基础597
15.3.2 Prometheus核心概念601
15.3.3 Prometheus查询语言604
15.3.4 监控Kubernetes606
15.3.5 自定义指标适配器616
15.4 自动弹性缩放621
15.4.1 HPA控制器概述622
15.4.2 HPA v1控制器622
15.4.3 HPA v2控制器624
15.5 本章小结629
第16章 集群日志系统630
16.1 集群日志系统基础630
16.1.1 日志系统概述631
16.1.2 Elasticsearch基础633
16.2 EFK日志管理系统636
16.2.1 Elasticsearch集群637
16.2.2 日志采集器Fluent Bit642
16.2.3 可视化组件Kibana647
16.3 本章小结650



---------------------------Kubernetes微服务实战---------------------------


译者序
前言
关于评审者
第1章 面向开发人员的Kubernetes简介 1
1.1 技术需求 1
1.1.1 安装Docker 1
1.1.2 安装kubectl 2
1.1.3 安装Minikube 2
1.1.4 本章代码 2
1.2 Kubernetes简介 2
1.2.1 容器编排平台 2
1.2.2 Kubernetes发展历史 2
1.2.3 Kubernetes现状 3
1.3 Kubernetes架构 3
1.3.1 控制平面 4
1.3.2 数据平面 5
1.4 微服务的完美搭档 6
1.4.1 微服务打包和部署 6
1.4.2 微服务公开和发现 8
1.4.3 微服务安全 9
1.4.4 微服务验证和授权 11
1.4.5 微服务升级 12
1.5 创建本地集群 14
1.5.1 安装Minikube 14
1.5.2 探索集群 16
1.5.3 安装Helm 17
1.6 小结 19
1.7 扩展阅读 19
第2章 微服务入门 20
2.1 技术需求 21
2.1.1 在macOS上通过Homebrew安装Go 21
2.1.2 在其他平台上安装Go 21
2.1.3 本章代码 21
2.2 微服务编程—少即是多 21
2.3 微服务自治 23
2.4 使用接口和契约 23
2.5 通过API公开服务 24
2.6 使用客户端库 24
2.7 管理依赖 25
2.8 协调微服务 25
2.9 利用所有权 26
2.10 理解康威定律 27
2.10.1 垂直组织 27
2.10.2 水平组织 28
2.10.3 矩阵组织 28
2.11 跨服务故障排除 28
2.12 利用共享服务库 29
2.13 选择源代码控制策略 29
2.13.1 单体仓库 29
2.13.2 多仓库 30
2.13.3 混合模式 30
2.14 选择数据策略 30
2.14.1 每个微服务对应一个数据存储 31
2.14.2 运行分布式查询 31
2.14.3 使用Saga模式管理跨服务事务 33
2.15 小结 35
2.16 扩展阅读 36
第3章 示例应用程序—Delinkcious 37
3.1 技术需求 37
3.1.1 Visual Studio Code 38
3.1.2 GoLand 38
3.1.3 LiteIDE 38
3.1.4 其他选项 38
3.1.5 本章代码 38
3.2 为什么选择Go 39
3.3 认识Go kit 39
3.3.1 使用Go kit构建微服务 40
3.3.2 理解传输 41
3.3.3 理解端点 41
3.3.4 理解服务 42
3.3.5 理解中间件 42
3.3.6 理解客户端 43
3.3.7 生成样板 43
3.4 Delinkcious结构 43
3.4.1 cmd子 44
3.4.2 pkg子 44
3.4.3 svc子 45
3.5 Delinkcious微服务 45
3.5.1 对象模型 46
3.5.2 服务实现 47
3.5.3 支持函数实现 50
3.5.4 通过客户端库调用API 53
3.6 数据存储 56
3.7 小结 58
3.8 扩展阅读 58
第4章 构建CI/CD流水线 59
4.1 技术需求 59
4.2 理解CI/CD流水线 60
4.3 选择CI/CD流水线工具 61
4.4.1 Jenkins X 61
4.4.2 Spinnaker 62
4.4.3 Travis CI和CircleCI 62
4.4.4 Tekton 62
4.4.5 Argo CD 63
4.4.6 自研工具 63
4.4 GitOps 63
4.5 使用CircleCI构建镜像 64
4.5.1 查看源代码树 64
4.5.2 配置CI流水线 65
4.5.3 理解构建脚本 66
4.5.4 使用多阶段Dockerfile对Go服务容器化 68
4.5.5 探索CircleCI界面 68
4.5.6 未来的改进 71
4.6 为Delinkcious设置持续交付 71
4.6.1 部署Delinkcious微服务 71
4.6.2 理解Argo CD 72
4.6.3 Argo CD入门 73
4.6.4 配置Argo CD 75
4.6.5 探索Argo CD 77
4.7 小结 80
4.8 扩展阅读 81
第5章 使用Kubernetes配置微服务 82
5.1 技术需求 82
5.2 配置包含的内容 83
5.3 通过传统方式管理配置 83
5.3.1 约定 84
5.3.2 命令行标志 85
5.3.3 环境变量 85
5.3.4 配置文件 86
5.3.5 混合配置和默认 90
5.3.6 12-Factor应用程序配置 91
5.4 动态管理配置 92
5.4.1 理解动态配置 92
5.4.2 远程配置存储 93
5.4.3 远程配置服务 93
5.5 使用Kubernetes配置微服务 93
5.5.1 使用Kubernetes ConfigMaps 94
5.5.2 Kubernetes自定义资源 102
5.5.3 服务发现 105
5.6 小结 105
5.7 扩展阅读 106
第6章 Kubernetes与微服务安全 107
6.1 技术需求 107
6.2 应用完善的安全原则 108
6.3 区分用户账户和服务账户 110
6.3.1 用户账户 110
6.3.2 服务账户 111
6.4 使用Kubernetes管理密钥 114
6.4.1 Kubernetes密钥的三种类型 114
6.4.2 创造自己的密钥 115
6.4.3 将密钥传递到容器 116
6.4.4 构建一个安全的Pod 117
6.5 使用RBAC管理权限 118
6.6 通过认证、授权和准入控制访问权限 121
6.6.1 认证 121
6.6.2 授权 125
6.6.3 准入 125
6.7 通过安全最佳实践增强Kubernetes 126
6.7.1 镜像安全 126
6.7.2 网络安全—分而治之 127
6.7.3 镜像仓库安全 129
6.7.4 按需授予访问权限 129
6.7.5 使用配额最小化爆炸半径 130
6.7.6 实施安全上下文 132
6.7.7 使用安全策略强化Pod 133
6.7.8 强化工具链 134
6.8 小结 135
6.9 扩展阅读 136
第7章 API与负载均衡器 137
7.1 技术需求 137
7.2 熟悉Kubernetes服务 138
7.3 东西流量与南北流量 140
7.4 理解ingress和负载均衡器 141
7.5 提供和使用公有REST API 141
7.5.1 构建基于Python的API网关服务 141
7.5.2 添加ingress 146
7.5.3 验证API网关 147
7.6 提供和使用内部gRPC API 150
7.6.1 定义NewsManager接口 150
7.6.2 实现消息管理器 151
7.6.3 将NewsManager公开为gRPC服务 153
7.7 通过消息队列发送和接收事件 158
7.7.1 NATS 159
7.7.2 在Kubernetes集群中部署NATS 159
7.7.3 使用NATS发送链接事件 160
7.7.4 订阅NATS链接事件 162
7.7.5 处理链接事件 164
7.8 服务网格 166
7.9 小结 166
7.10 扩展阅读 166
第8章 有状态服务 167
8.1 技术需求 167
8.2 抽象存储 168
8.2.1 Kubernetes存储模型 168
8.2.2 内置和外部存储插件 172
8.2.3 理解CSI 173
8.3 在Kubernetes集群外存储数据 174
8.4 使用StatefulSet在Kubernetes集群内存储数据 175
8.4.1 理解StatefulSet 175
8.4.2 什么时候应该使用StatefulSet 178
8.4.3 一个大型StatefulSet示例 179
8.5 通过本地存储实现高性能 183
8.5.1 将数据存储在内存中 183
8.5.2 将数据存储在本地SSD硬盘上 183
8.6 在Kubernetes中使用关系型数据库 183
8.6.1 了解数据的存储位置 184
8.6.2 使用部署和服务 184
8.6.3 使用StatefulSet 185
8.6.4 帮助用户服务找到StatefulSet Pod 185
8.6.5 管理模式更改 187
8.7 在Kubernetes中使用非关系型数据存储 187
8.8 小结 191
8.9 扩展阅读 192
第9章 在Kubernetes上运行Serverless任务 193
9.1 技术需求 193
9.2 云中的Serverless 194
9.2.1 微服务与Serverless函数 195
9.2.2 在Kubernetes上的Serverless函数模型 195
9.2.3 构建、配置和部署Serverless函数 196
9.2.4 调用Serverless函数 196
9.3 Delinkcious链接检查 196
9.3.1 设计链接检查 197
9.3.2 实现链接检查 199
9.4 使用Nuclio实现Serverless链接检查 202
9.4.1 Nuclio简介 202
9.4.2 创建一个链接检查Serverless函数 203
9.4.3 使用nuctl部署链接检查函数 206
9.4.4 使用Nuclio仪表板部署函数 207
9.4.5 直接调用链接检查函数 207
9.4.6 在LinkManager中触发链接检查 208
9.5 其他Kubernetes Serverless框架 209
9.5.1 Kubernetes Job和CronJob 210
9.5.2 KNative 210
9.5.3 Fission 211
9.5.4 Kubeless 211
9.5.5 OpenFaas 211
9.6 小结 212
9.7 扩展阅读 212
第10章 微服务测试 213
10.1 技术需求 214
10.2 单元测试 214
10.2.1 使用Go进行单元测试 214
10.2.2 使用Ginkgo和Gomega进行单元测试 216
10.2.3 Delinkcious单元测试 217
10.2.4 模拟的艺术 217
10.2.5 你应该测试一切吗 221
10.3 集成测试 222
10.3.1 初始化测试数据库 222
10.3.2 运行服务 223
10.3.3 运行实际测试 223
10.3.4 实现数据库测试辅助函数 225
10.3.5 实现服务测试辅助函数 227
10.4 使用Kubernetes进行本地测试 229
10.4.1 编写冒烟测试 229
10.4.2 Telepresence 232
10.5 隔离测试 235
10.5.1 隔离集群 236
10.5.2 隔离命名空间 236
10.5.3 跨集群/命名空间 237
10.6 端到端测试 237
10.6.1 验收测试 237
10.6.2 回归测试 238
10.6.3 性能测试 238
10.7 管理测试数据 239
10.7.1 合成数据 239
10.7.2 人工测试数据 239
10.7.3 生产环境快照 239
10.8 小结 240
10.9 扩展阅读 240
第11章 微服务部署 241
11.1 技术需求 241
11.2 Kubernetes部署 242
11.3 多环境部署 243
11.4 理解部署策略 246
11.4.1 重新部署 247
11.4.2 滚动更新 247
11.4.3 蓝绿部署 248
11.4.4 金丝雀部署 255
11.5 回滚部署 260
11.5.1 回滚标准部署 260
11.5.2 回滚蓝绿部署 261
11.5.3 回滚金丝雀部署 262
11.5.4 回滚模式、API或负载的更改 262
11.6 管理版本和依赖 263
11.6.1 管理公有API接口 263
11.6.2 管理跨服务依赖 264
11.6.3 管理第三方依赖 264
11.6.4 管理基础设施和工具链 265
11.7 本地开发部署 265
11.7.1 Ko 266
11.7.2 Ksync 269
11.7.3 Draft 271
11.7.4 Skaffold 272
11.7.5 Tilt 273
11.8 小结 279
11.9 扩展阅读 279
第12章 监控、日志和指标 280
12.1 技术需求 281
12.2 Kubernetes的自愈能力 281
12.2.1 容器故障 282
12.2.2 节点故障 282
12.2.3 系统故障 283
12.3 Kubernetes集群自动伸缩 284
12.3.1 Pod水平自动伸缩 284
12.3.2 集群自动伸缩 286
12.3.3 Pod垂直自动伸缩 287
12.4 使用Kubernetes供应资源 289
12.4.1 应该提供哪些资源 289
12.4.2 定义容器限制 289
12.4.3 指定资源配额 290
12.4.4 手动供应 291
12.4.5 利用自动伸缩 292
12.4.6 自定义自动供应 292
12.5 正确地优化性能 292
12.5.1 性能和用户体验 292
12.5.2 性能和高可用性 293
12.5.3 性能和成本 293
12.5.4 性能和安全性 293
12.6 日志 294
12.6.1 日志应该记录什么 294
12.6.2 日志与错误报告 294
12.6.3 Go日志接口 294
12.6.4 使用Go-kit日志 295
12.6.5 使用Kubernetes集中管理日志 298
12.7 在Kubernetes上收集指标 299
12.7.1 Kubernetes指标API 300
12.7.2 Kubernetes指标服务器 301
12.7.3 使用Prometheus 302
12.8 警报 308
12.8.1 拥抱组件故障 309
12.8.2 接受系统故障 309
12.8.3 考虑人为因素 309
12.8.4 使用Prometheus警报管理器 310
12.9 分布式跟踪 312
12.9.1 安装Jaeger 312
12.9.2 将跟踪集成到服务中 313
12.10 小结 315
12.11 扩展阅读 315
第13章 服务网格与Istio 317
13.1 技术需求 317
13.2 服务网格 318
13.2.1 单体架构与微服务架构 319
13.2.2 使用共享库管理微服务的横切关注点 319
13.2.3 使用服务网格管理微服务的横切关注点 320
13.2.4 理解Kubernetes与服务网格之间的关系 320
13.3 Istio 321
13.3.1 了解Istio架构 321
13.3.2 使用Istio管理流量 324
13.3.3 使用Istio保护集群 328
13.3.4 使用Istio实施策略 331
13.3.5 使用Istio收集指标 331
13.3.6 什么时候应该避免使用Istio 332
13.4 基于Istio构建Delinkcious 333
13.4.1 简化服务间的认证 333
13.4.2 优化金丝雀部署 335
13.4.3 自动化的日志管理和错误报告 336
13.4.4 兼容NATS 338
13.4.5 查看Istio足迹 338
13.5 Istio的替代方案 341
13.5.1 Linkerd 2.0 341
13.5.2 Envoy 341
13.5.3 HashiCorp Consul 341
13.5.4 AWS App Mesh 342
13.5.5 其他 342
13.5.6 不使用服务网格 342
13.6 小结 342
13.7 扩展阅读 343
第14章 微服务和Kubernetes的未来 344
14.1 微服务的未来 345
14.1.1 微服务与无服务器函数 345
14.1.2 微服务、容器和编排 345
14.1.3 gRPC和gRPC-Web 346
14.1.4 GraphQL 346
14.1.5 HTTP/3 346
14.2 Kubernetes的未来 347
14.2.1 Kubernetes的可扩展性 348
14.2.2 服务网格集成 349
14.2.3 Kubernetes上的无服务器计算 350
14.2.4 Kubernetes和VM 351
14.2.5 集群自动伸缩 352
14.2.6 使用Operator 353
14.2.7 集群联邦 354
14.3 小结 355
14.4 扩展阅读 355

推荐

车牌查询
桂ICP备20004708号-3