注重体验与质量的电子书资源下载网站
分类于: 编程语言 人工智能
简介
Kubernetes权威指南: 从Docker到Kubernetes实践全接触 豆 7.1分
资源最后更新于 2020-09-26 17:41:05
作者:龚正
出版社:电子工业出版社
出版日期:2016-01
ISBN:9787121276392
文件格式: pdf
标签: kubernetes Docker 计算机 分布式集群管理 云计算 容器架构 、kubernetes pass
简介· · · · · ·
Kubernetes是由谷歌开源的Docker容器集群管理系统,为容器化的应用提供了资源调度、部署运行、服务发现、扩容、缩容等一整套功能。《Kubernetes权威指南——从Docker到Kubernetes实践全接触》从一个开发者的角度去理解、分析和解决问题,囊括了Kubernetes入门、核心原理、实战开发、运维、高级案例及源码分析等方面的内容,图文并茂、内容丰富、由浅入深、讲解全面;并围绕着生产环境中可能出现的问题,给出了大量的典型案例,比如安全问题、网络方案的选择、高可用性方案及Trouble Shooting技巧等,有很好的可借鉴性。
无论对于软件工程师、测试工程师、运维工程师、软件架构师、技术经理还是资深IT人士来说,《Kubernetes权威指南——从Docker到Kubernetes实践全接触》都极具参考价值。
目录
第1章Kubernetes入门 1
1.1 Kubernetes是什么 1
1.2 为什么要用Kubernetes 4
1.3 从一个不简单的Hello World例子说起 5
1.3.1 创建redis-master Pod和服务 7
1.3.2 创建redis-slave Pod和服务 10
1.3.3 创建frontend Pod和服务 12
1.3.4 通过浏览器访问网页 15
1.4 Kubernetes基本概念和术语 16
1.4.1 Node(节点) 16
1.4.2 Pod 18
1.4.3 Label(标签) 20
1.4.4 Replication Controller(RC) 24
1.4.5 Service(服务) 26
1.4.6 Volume(存储卷) 30
1.4.7 Namespace(命名空间) 34
1.4.8 Annotation(注解) 35
1.4.9 小结 36
1.5 Kubernetes总体架构 36
1.6 Kubernetes安装与配置 38
1.6.1 安装Kubernetes 38
1.6.2 配置和启动Kubernetes服务 39
1.6.3 Kubernetes的版本升级 46
1.6.4 内网中的Kubernetes相关配置 46
1.6.5 Kubernetes对Docker镜像的要求——启动命令前台执行 48
第2章Kubernetes核心原理 49
2.1 Kubernetes API Server 分析 49
2.1.1 如何访问Kubernetes API 49
2.1.2 通过API Server 访问Node、Pod和Service 52
2.1.3 集群功能模块之间的通信 55
2.2 调度控制原理 56
2.2.1 Replication Controller 57
2.2.2 Node Controller 60
2.2.3 ResourceQuota Controller 62
2.2.4 Namespace Controller 64
2.2.5 ServiceAccount Controller与Token Controller 64
2.2.6 Service Controller与Endpoint Controller 65
2.2.7 Kubernetes Scheduler 71
2.3 Kubelet运行机制分析 75
2.3.1 节点管理 75
2.3.2 Pod管理 76
2.3.3 容器健康检查 77
2.3.4 cAdvisor资源监控 78
2.4 安全机制的原理 80
2.4.1 Authentication认证 80
2.4.2 Authorization授权 83
2.4.3 Admission Control准入控制 84
2.4.4 Secret私密凭据 88
2.4.5 Service Account 92
2.5 网络原理 95
2.5.1 Kubernetes网络模型 95
2.5.2 Docker的网络基础 97
2.5.3 Docker的网络实现 109
2.5.4 Kubernetes的网络实现 117
2.5.5 开源的网络组件 127
2.5.6 Kubernetes网络试验 131
第3章Kubernetes开发指南 145
3.1 REST简述 145
3.2 Kubernetes API详解 147
3.2.1 Kubernetes API概述 147
3.2.2 API版本 152
3.2.3 API详细说明 152
3.2.4 API响应说明 154
3.3 使用Java程序访问Kubernetes API 156
3.3.1 Jersey 156
3.3.2 Fabric8 168
3.3.3 使用说明 169
第4章Kubernetes运维指南 191
4.1 Kubernetes核心服务配置详解 191
4.1.1 基础公共配置参数 191
4.1.2 kube-apiserver 192
4.1.3 kube-controller-manager 195
4.1.4 kube-scheduler 196
4.1.5 Kubelet 197
4.1.6 kube-proxy 199
4.2 关键对象定义文件详解 200
4.2.1 Pod定义文件详解 200
4.2.2 RC定义文件详解 203
4.2.3 Service定义文件详解 204
4.3 常用运维技巧集锦 206
4.3.1 Node的隔离和恢复 206
4.3.2 Node的扩容 207
4.3.3 Pod动态扩容和缩放 208
4.3.4 更新资源对象的Label 208
4.3.5 将Pod调度到指定的Node 209
4.3.6 应用的滚动升级 210
4.3.7 Kubernetes集群高可用方案 213
4.4 资源配额管理 217
4.4.1 指定容器配额 217
4.4.2 全局默认配额 218
4.4.3 多租户配额管理 221
4.5 Kubernetes网络配置方案详解 223
4.5.1 直接路由方案 224
4.5.2 使用flannel叠加网络 226
4.5.3 使用Open vSwitch 228
4.6 Kubernetes集群监控 232
4.6.1 使用kube-ui查看集群运行状态 232
4.6.2 使用cAdvisor查看容器运行状态 236
4.7 Trouble Shooting指导 241
4.7.1 对象的Event事件 242
4.7.2 容器日志 243
4.7.3 Kubernetes系统日志 244
4.7.4 常见问题 246
4.7.5 寻求帮助 249
第5章Kubernetes高级案例进阶 250
5.1 Kubernetes DNS服务配置案例 250
5.1.1 skydns配置文件 251
5.1.2 修改每个Node上的Kubelet启动参数 254
5.1.3 创建skydns Pod和服务 254
5.1.4 通过DNS查找Service 255
5.1.5 DNS服务的工作原理解析 256
5.2 Kubernetes集群性能监控案例 257
5.2.1 配置Kubernetes集群的ServiceAccount和Secret 258
5.2.2 部署Heapster、InfluxDB、Grafana 261
5.2.3 查询InfluxDB数据库中的数据 265
5.2.4 Grafana页面查看和操作 268
5.3 Cassandra集群部署案例 269
5.3.1 自定义SeedProvider 270
5.3.2 通过Service动态查找Pod 271
5.3.3 Cassandra集群新节点的自动添加 274
5.4 集群安全配置案例 275
5.4.1 双向认证配置 275
5.4.2 简单认证配置 279
5.5 不同工作组共享Kubernetes集群的案例 280
5.5.1 创建namespace 281
5.5.2 定义Context(运行环境) 281
5.5.3 设置工作组在特定Context环境中工作 282
第6章Kubernetes源码导读 285
6.1 Kubernetes源码结构和编译步骤 285
6.2 kube-apiserver进程源码分析 289
6.2.1 进程启动过程 289
6.2.2 关键代码分析 291
6.2.3 设计总结 306
6.3 kube-controller-manager进程源码分析 310
6.3.1 进程启动过程 310
6.3.2 关键代码分析 313
6.3.3 设计总结 321
6.4 kube-scheduler进程源码分析 323
6.4.1 进程启动过程 323
6.4.2 关键代码分析 328
6.4.3 设计总结 335
6.5 Kubelet进程源码分析 337
6.5.1 进程启动过程 337
6.5.2 关键代码分析 342
6.5.3 设计总结 365
6.6 kube-proxy进程源码分析 366
6.6.1 进程启动过程 367
6.6.2 关键代码分析 368
6.6.3 设计总结 383
6.7 Kubectl进程源码分析 384
6.7.1 kubectl create命令 385
6.7.2 rolling-upate命令 389
后记 396
1.1 Kubernetes是什么 1
1.2 为什么要用Kubernetes 4
1.3 从一个不简单的Hello World例子说起 5
1.3.1 创建redis-master Pod和服务 7
1.3.2 创建redis-slave Pod和服务 10
1.3.3 创建frontend Pod和服务 12
1.3.4 通过浏览器访问网页 15
1.4 Kubernetes基本概念和术语 16
1.4.1 Node(节点) 16
1.4.2 Pod 18
1.4.3 Label(标签) 20
1.4.4 Replication Controller(RC) 24
1.4.5 Service(服务) 26
1.4.6 Volume(存储卷) 30
1.4.7 Namespace(命名空间) 34
1.4.8 Annotation(注解) 35
1.4.9 小结 36
1.5 Kubernetes总体架构 36
1.6 Kubernetes安装与配置 38
1.6.1 安装Kubernetes 38
1.6.2 配置和启动Kubernetes服务 39
1.6.3 Kubernetes的版本升级 46
1.6.4 内网中的Kubernetes相关配置 46
1.6.5 Kubernetes对Docker镜像的要求——启动命令前台执行 48
第2章Kubernetes核心原理 49
2.1 Kubernetes API Server 分析 49
2.1.1 如何访问Kubernetes API 49
2.1.2 通过API Server 访问Node、Pod和Service 52
2.1.3 集群功能模块之间的通信 55
2.2 调度控制原理 56
2.2.1 Replication Controller 57
2.2.2 Node Controller 60
2.2.3 ResourceQuota Controller 62
2.2.4 Namespace Controller 64
2.2.5 ServiceAccount Controller与Token Controller 64
2.2.6 Service Controller与Endpoint Controller 65
2.2.7 Kubernetes Scheduler 71
2.3 Kubelet运行机制分析 75
2.3.1 节点管理 75
2.3.2 Pod管理 76
2.3.3 容器健康检查 77
2.3.4 cAdvisor资源监控 78
2.4 安全机制的原理 80
2.4.1 Authentication认证 80
2.4.2 Authorization授权 83
2.4.3 Admission Control准入控制 84
2.4.4 Secret私密凭据 88
2.4.5 Service Account 92
2.5 网络原理 95
2.5.1 Kubernetes网络模型 95
2.5.2 Docker的网络基础 97
2.5.3 Docker的网络实现 109
2.5.4 Kubernetes的网络实现 117
2.5.5 开源的网络组件 127
2.5.6 Kubernetes网络试验 131
第3章Kubernetes开发指南 145
3.1 REST简述 145
3.2 Kubernetes API详解 147
3.2.1 Kubernetes API概述 147
3.2.2 API版本 152
3.2.3 API详细说明 152
3.2.4 API响应说明 154
3.3 使用Java程序访问Kubernetes API 156
3.3.1 Jersey 156
3.3.2 Fabric8 168
3.3.3 使用说明 169
第4章Kubernetes运维指南 191
4.1 Kubernetes核心服务配置详解 191
4.1.1 基础公共配置参数 191
4.1.2 kube-apiserver 192
4.1.3 kube-controller-manager 195
4.1.4 kube-scheduler 196
4.1.5 Kubelet 197
4.1.6 kube-proxy 199
4.2 关键对象定义文件详解 200
4.2.1 Pod定义文件详解 200
4.2.2 RC定义文件详解 203
4.2.3 Service定义文件详解 204
4.3 常用运维技巧集锦 206
4.3.1 Node的隔离和恢复 206
4.3.2 Node的扩容 207
4.3.3 Pod动态扩容和缩放 208
4.3.4 更新资源对象的Label 208
4.3.5 将Pod调度到指定的Node 209
4.3.6 应用的滚动升级 210
4.3.7 Kubernetes集群高可用方案 213
4.4 资源配额管理 217
4.4.1 指定容器配额 217
4.4.2 全局默认配额 218
4.4.3 多租户配额管理 221
4.5 Kubernetes网络配置方案详解 223
4.5.1 直接路由方案 224
4.5.2 使用flannel叠加网络 226
4.5.3 使用Open vSwitch 228
4.6 Kubernetes集群监控 232
4.6.1 使用kube-ui查看集群运行状态 232
4.6.2 使用cAdvisor查看容器运行状态 236
4.7 Trouble Shooting指导 241
4.7.1 对象的Event事件 242
4.7.2 容器日志 243
4.7.3 Kubernetes系统日志 244
4.7.4 常见问题 246
4.7.5 寻求帮助 249
第5章Kubernetes高级案例进阶 250
5.1 Kubernetes DNS服务配置案例 250
5.1.1 skydns配置文件 251
5.1.2 修改每个Node上的Kubelet启动参数 254
5.1.3 创建skydns Pod和服务 254
5.1.4 通过DNS查找Service 255
5.1.5 DNS服务的工作原理解析 256
5.2 Kubernetes集群性能监控案例 257
5.2.1 配置Kubernetes集群的ServiceAccount和Secret 258
5.2.2 部署Heapster、InfluxDB、Grafana 261
5.2.3 查询InfluxDB数据库中的数据 265
5.2.4 Grafana页面查看和操作 268
5.3 Cassandra集群部署案例 269
5.3.1 自定义SeedProvider 270
5.3.2 通过Service动态查找Pod 271
5.3.3 Cassandra集群新节点的自动添加 274
5.4 集群安全配置案例 275
5.4.1 双向认证配置 275
5.4.2 简单认证配置 279
5.5 不同工作组共享Kubernetes集群的案例 280
5.5.1 创建namespace 281
5.5.2 定义Context(运行环境) 281
5.5.3 设置工作组在特定Context环境中工作 282
第6章Kubernetes源码导读 285
6.1 Kubernetes源码结构和编译步骤 285
6.2 kube-apiserver进程源码分析 289
6.2.1 进程启动过程 289
6.2.2 关键代码分析 291
6.2.3 设计总结 306
6.3 kube-controller-manager进程源码分析 310
6.3.1 进程启动过程 310
6.3.2 关键代码分析 313
6.3.3 设计总结 321
6.4 kube-scheduler进程源码分析 323
6.4.1 进程启动过程 323
6.4.2 关键代码分析 328
6.4.3 设计总结 335
6.5 Kubelet进程源码分析 337
6.5.1 进程启动过程 337
6.5.2 关键代码分析 342
6.5.3 设计总结 365
6.6 kube-proxy进程源码分析 366
6.6.1 进程启动过程 367
6.6.2 关键代码分析 368
6.6.3 设计总结 383
6.7 Kubectl进程源码分析 384
6.7.1 kubectl create命令 385
6.7.2 rolling-upate命令 389
后记 396