Kubernetes即学即用(第2版)
豆瓣
简介
暂无内容。
contents
目录
前言 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