书籍详情

Kubernetes即学即用(第二版)

Kubernetes即学即用(第二版)

作者:[美] 布兰登·柏恩思(Brendan Burns) 著,马晶慧 译

出版社:中国电力出版社

出版时间:2021-06-01

ISBN:9787519856762

定价:¥78.00

购买这本书可以去
内容简介
  Kubernetes的时代已然到来。在短短几年内,这款容器编排器从根本上改变了开发人员和运维人员在云中构建、部署,以及维护应用程序的方式。无论你是分布式系统的新手,还是多年来一直在部署云原生应用程序的老手,Kubernetes都可以帮助你在速度、敏捷性、可靠性,以及效率等方面更上一层楼。《Kubernetes即学即用(第二版)》作者长期致力于Kubernetes的概念抽象以及构建实践,他们将通过该书向你展示怎样将Kubernetes完美地融入分布式应用程序的生命周期。你将学习如何使用各种工具以及API来实现可扩展分布式系统的自动化,无论你的系统是在线服务、机器学习应用程序,还是树莓派计算机集群。创建和运行一个简单的集群,了解Kubernetes的基本工作原理。深入了解使用Kubernetes.Pod.服务、Ingress,以及副本集部署应用程序的细节。将存储集成到Kubernetes的容器化微服务中。学习Kubernetes中的专用对象,例如守护进程集、作业、ConfigMap,以及Secret等。掌握在Kubernetes中开发和部署应用程序的实战经验。
作者简介
  Brendan Burns是Kubernetes的合伙创始人,微软Azure的杰出工程师,负责领导开发运维、开源,以及微服务等团队。 Joe Beda是Kubernetes的合伙创始人,VMware的首席工程师。他曾是Heptio的合伙创始人,直到该公司被VMware收购前一直担任CTO之职。他在VMware公司范围内推动了Kubernetes战略的实施。 Kelsey Hightower是Google云平台的首席开发,他曾在科技职业生涯中出任多个职位,主要领导软件的发行工作。
目录
目录
前言 .1
第1 章 概述 .9
1.1 速度 10
1.1.1 不可变性的价值 . 11
1.1.2 声明式配置 13
1.1.3 自我修复系统 13
1.2 扩展服务和团队 14
1.2.1 解耦 15
1.2.2 轻松扩展应用程序和集群 . 15
1.2.3 通过微服务扩展开发团队 . 16
1.2.4 一致性与扩展性的关注点分离 17
1.3 抽象基础设施 19
1.4 效率 20
1.5 小结 21
第2 章 创建和运行容器 22
2.1 容器镜像 24
2.2 使用Docker 构建应用程序镜像 26
2.2.1 Dockerfiles 26
2.2.2 优化镜像的大小 . 28
2.2.3 镜像安全. 30
2.3 多阶段镜像构建 30
2.4 将镜像存储到远程仓库 32
2.5 Docker 容器运行时 . 34
2.5.1 通过Docker 运行容器 . 34
2.5.2 探索kuard 应用程序. 34
2.5.3 限制资源使用 35
2.6 清理 36
2.7 小结 37
第3 章 部署Kubernetes 集群 38
3.1 在公共云上安装Kubernetes 39
3.1.1 Google Kubernetes Engine . 39
3.1.2 使用Azure Kubernetes 服务安装Kubernetes 40
3.1.3 在Amazon Web Services 上安装Kubernetes 41
3.2 使用minikube 在本地安装Kubernetes . 41
3.3 在Docker 中运行Kubernetes 42
3.4 在树莓派上运行Kubernetes 43
3.5 Kubernetes 客户端 43
3.5.1 检查集群状态 43
3.5.2 列出Kubernetes 的工作节点 44
3.6 集群组件 47
3.6.1 Kubernetes 代理 47
3.6.2 Kubernetes DNS . 48
3.6.3 Kubernetes 用户界面 48
3.7 小结 49
第4 章 常用的kubectl 命令 .50
4.1 命名空间 50
4.2 上下文 50
4.3 查看Kubernetes API 对象 51
4.4 创建、更新和销毁Kubernetes 对象 52
4.5 给对象添加标签和注释 54
4.6 调试命令 54
4.7 自动补齐命令 56
4.8 查看集群的其他方法 . 57
4.9 小结 57
第5 章 Pod 58
5.1 Kubernetes 中的Pod 59
5.2 Pod 的应用思路 60
5.3 Pod 清单 61
5.3.1 创建Pod . 62
5.3.2 创建Pod 清单 62
5.4 运行Pod 63
5.4.1 查询Pod 列表 63
5.4.2 Pod 的详细信息 64
5.4.3 删除Pod . 66
5.5 访问Pod 66
5.5.1 使用端口转发 66
5.5.2 通过日志获取更多信息 67
5.5.3 使用exec 在容器中运行命令 68
5.5.4 在容器之间复制文件 68
5.6 健康检查 69
5.6.1 存活探针. 69
5.6.2 就绪探针. 71
5.6.3 健康检查的类型 . 71
5.7 资源管理 71
5.7.1 资源请求:所需的最少资源量 72
5.7.2 通过约束限制资源使用量 . 74
5.8 利用卷持久保存数据 . 75
5.8.1 在Pod 中使用卷 . 75
5.8.2 Pod 中卷的不同使用方式 76
5.8.3 使用远程磁盘持久保存数据 . 77
5.9 综合讨论 78
5.10 小结 . 79
第6 章 标签与注释 .80
6.1 标签 80
6.1.1 应用标签. 82
6.1.2 修改标签. 83
6.1.3 标签选择器 84
6.1.4 API 对象中的标签选择器 86
6.1.5 Kubernetes 架构中的标签 87
6.2 注释 88
6.3 清理 89
6.4 小结 90
第7 章 服务发现 91
7.1 什么是服务发现? 91
7.2 服务对象 92
7.2.1 DNS 服务 93
7.2.2 就绪检查. 95
7.3 向外公开集群服务 97
7.4 云集成 98
7.5 高级集成 99
7.5.1 端点 99
7.5.2 手动发现服务 101
7.5.3 kube-proxy 与集群IP 102
7.5.4 集群IP 环境变量 . 103
7.6 连接到其他环境 104
7.7 清理 . 104
7.8 小结 . 105
第8 章 Ingress 的HTTP 负载均衡 106
8.1 Ingress 的规范与Ingress 控制器 107
8.2 安装Contour 108
8.2.1 配置DNS. 109
8.2.2 配置本地的hosts 文件 109
8.3 使用Ingress . 110
8.3.1 最简单的用法 111
8.3.2 使用主机名 . 112
8.3.3 使用路径 114
8.3.4 清理 115
8.4 Ingress 的高级话题和技巧 115
8.4.1 运行多个Ingress 控制器 . 115
8.4.2 多个Ingress 对象 . 116
8.4.3 Ingress 与命名空间 . 116
8.4.4 改写路径 117
8.4.5 提供TLS . 117
8.5 Ingress 的其他实现 119
8.6 Ingress 的未来 119
8.7 小结 . 120
第9 章 副本集 121
9.1 协调循环 122
9.2 Pod 与副本集的关联 123
9.2.1 采用现有的容器 123
9.2.2 隔离容器 124
9.3 副本集的设计思想 124
9.4 副本集的规范 . 124
9.4.1 Pod 模板 125
9.4.2 标签 125
9.5 创建副本集 126
9.6 检查副本集 126
9.6.1 根据Pod 查找副本集 . 127
9.6.2 查找副本集管理的Pod 集合 . 127
9.7 副本集的伸缩 . 128
9.7.1 副本集的命令式伸缩:kubectl scale . 128
9.7.2 副本集的声明式伸缩:kubectl apply 129
9.7.3 自动伸缩副本集 130
9.8 删除副本集 131
9.9 小结 . 132
第10 章 部署 . 133
10.1 第一个部署 134
10.2 创建部署 . 136
10.3 管理部署 . 138
10.4 更新部署 . 139
10.4.1 扩展部署 139
10.4.2 更新容器镜像 . 140
10.4.3 推出的历史记录 142
10.5 部署策略 . 145
10.5.1 重建策略 145
10.5.2 滚动更新策略 . 145
10.5.3 放慢部署速度以确保服务健康 149
10.6 删除部署 . 151
10.7 监控部署 . 151
10.8 小结 152
第11 章 守护进程集 . 153
11.1 守护进程集调度器 . 154
11.2 创建守护进程集 155
11.3 将守护进程集限制到特定节点 157
11.3.1 向节点添加标签 . 157
11.3.2 节点选择器 158
11.4 更新守护进程集 159
11.5 删除守护进程集 161
11.6 小结 161
第12 章 作业 . 162
12.1 作业对象 . 162
12.2 作业模式 . 163
12.2.1 一次性作业 163
12.2.2 并行性 168
12.2.3 工作队列 170
12.3 定时作业 . 175
12.4 小结 176
第13 章 ConfigMap 与Secret 177
13.1 ConfigMap . 177
13.1.1 创建ConfigMap . 178
13.1.2 使用ConfigMap . 179
13.2 Secret 182
13.2.1 创建Secret 183
13.2.2 消费Secret 184
13.2.3 私有Docker 仓库 186
13.3 命名约束 . 187
13.4 管理ConfigMap 和Secret 188
13.4.1 显示列表 188
13.4.2 创建 . 189
13.4.3 更新 . 190
13.5 小结 192
第14 章 基于角色的访问控制 193
14.1 基于角色的访问控制 194
14.1.1 Kubernetes 中的身份 194
14.1.2 角色和角色绑定 195
14.1.3 Kubernetes 中的角色和角色绑定 196
14.2 RBAC 的管理技巧 . 199
14.2.1 使用can-i 测试授权 . 199
14.2.2 通过源代码控制管理RBAC 199
14.3 高级主题 . 200
14.3.1 聚合ClusterRoles . 200
14.3.2 使用组进行绑定 201
14.4 小结 203
第15 章 存储解决方案与Kubernetes 的集成 204
15.1 导入外部服务 205
15.1.1 没有选择器的服务 207
15.1.2 外部服务的局限性:健康检查 209
15.2 运行可靠的单例 209
15.2.1 运行MySQL 单例服务 209
15.2.2 动态卷供应 214
15.3 利用状态集实现Kubernetes 原生存储 215
15.3.1 状态集的属性 . 215
15.3.2 利用状态集手动复制MongoDB 216
15.3.3 自动化MongoDB 集群的创建 219
15.3.4 持久卷与状态集 222
15.3.5 最后一步:存活探针 223
15.4 小结 224
第16 章 扩展Kubernetes . 225
16.1 扩展Kubernetes 意味着什么 226
16.2 可扩展点 . 226
16.3 定制资源的模式 236
16.3.1 仅有数据 236
16.3.2 编译器 237
16.3.3 操作器 237
16.3.4 如何入门 238
16.4 小结 238
第17 章 部署实际应用程序 239
17.1 Jupyter . 239
17.2 Parse . 241
17.2.1 前提条件 242
17.2.2 构建Parse 服务器 . 242
17.2.3 部署parse-server 242
17.2.4 测试Parse . 244
17.3 Ghost. 244
17.4 Redis . 248
17.4.1 配置Redis 249
17.4.2 创建Redis 服务 . 251
17.4.3 部署Redis 251
17.4.4 使用Redis 集群 . 253
17.5 小结 254
第18 章 组织应用程序 256
18.1 我们的指导原则 256
18.1.1 以文件为准 257
18.1.2 代码审查的作用 257
18.1.3 特性门控 258
18.2 在源代码管理中管理应用程序 259
18.2.1 文件系统的布局 259
18.2.2 管理周期性的版本 260
18.3 为开发、测试与部署组织应用程序的结构 262
18.3.1 目标 . 262
18.3.2 发布的进展 263
18.4 使用模板为应用程序添加参数 264
18.4.1 使用Helm 和模板实现参数化 265
18.4.2 在文件系统布局中使用参数 266
18.5 部署全球性的应用程序 266
18.5.1 全球部署架构 . 267
18.5.2 实现全球部署 . 268
18.5.3 面向全球部署的仪表板和监视 270
18.6 小结 270
附录 利用树莓派搭建Kubernetes 集群 271
作者介绍 281
封面介绍 281
猜您喜欢

读书导航