第1 部分 基础概念
第1 章 容器集群综述 . 2
1.1 虚拟化与容器 2
1.1.1 计算资源虚拟化2
1.1.2 容器技术的本质4
1.1.3 基于容器的软件交付13
1.2 容器集群与分布式服务 16
1.2.1 微服务架构16
1.2.2 容器集群生态圈18
1.3 容器即服务26
1.3.1 从基础设施到平台 26
1.3.2 数据中心操作系统 29
1.4 本章小结31
第2 部分 解决方案
第2 章 SwarmKit 集群解决方案 35
2.1 开源容器集群方案 35
2.1.1 容器社区的“四朵金花” 35
2.1.2 经典Swarm、SwarmKit 和Swarm Mode36
2.2 使用SwarmKit.37
2.2.1 SwarmKit 综述 .37
2.2.2 创建SwarmKit 集群 .40
2.2.3 在SwarmKit 集群上运行服务 .43
2.2.4 SwarmKit 集群的其他功能45
2.3 Docker Swarm Mode45
2.3.1 Swarm Mode 综述45
2.3.2 集群的创建与销毁 46
2.3.3 节点管理 48
2.3.4 服务管理 51
2.3.5 服务编排 56
2.3.6 应用栈的管理 63
2.3.7 外置配置和密文管理66
2.4 Swarm Mode 的图形界面69
2.4.1 Swarm Mode UI 现状69
2.4.2 Portainer 71
2.5 本章小结74
第3 章 Kubernetes 集群解决方案 75
3.1 Kubernetes 集群概述75
3.1.1 Kubernetes 项目的起源75
3.1.2 Kubernetes 的结构76
3.1.3 基本概念 78
3.2 部署Kubernetes 集群.82
3.2.1 使用Minikube82
3.2.2 使用kubeadm83
3.2.3 理解Kubernetes 集群的部署过程 87
3.2.4 验证集群可用性96
3.3 使用Kubernetes 98
3.3.1 通过Kubernetes 部署服务98
3.3.2 服务的在线更新和回滚 103
3.3.3 单次任务、定时任务和全局服务 109
3.3.4 持久化存储.113
3.3.5 配置存储 .116
3.3.6 管理有状态的服务 .122
3.3.7 健康检查 .126
3.3.8 提供对外服务 .127
3.3.9 多租户隔离和配额 .131
3.3.10 集群的节点管理 135
3.4 Kubernetes 包管理工具Helm137
3.4.1 Helm 简介137
3.4.2 使用Helm 管理服务137
3.4.3 自定义Chart142
3.4.4 Chart 仓库146
3.5 本章小结 147
第4 章 Mesos 集群解决方案 148
4.1 Mesos 和DC/OS 概述 148
4.1.1 Mesos 项目的起源 148
4.1.2 Mesos 的结构 149
4.1.3 Mesos 的内部构成 151
4.1.4 DC/OS 数据中心操作系统152
4.2 部署Mesos 集群153
4.2.1 部署ZooKeeper153
4.2.2 部署Mesos .157
4.2.3 启动Master 节点158
4.2.4 添加Agent 节点.161
4.2.5 Mesos 服务的启动参数 164
4.3 使用Marathon 管理服务.170
4.3.1 部署Marathon170
4.3.2 添加一个应用 172
4.3.3 使用DC/OS 命令行工具177
4.3.4 使用Docker 容器 177
4.3.5 使用Unified Container179
4.3.6 持久化卷存储 182
4.3.7 Marathon-LB 负载均衡 184
4.3.8 Mesos-DNS 域名服务188
4.3.9 服务依赖和编组191
4.3.10 应用升级194
4.3.11 调度约束199
4.3.12 健康检查201
4.4 使用Chronos203
4.4.1 部署Chronos203
4.4.2 定时表达式.204
4.4.3 创建定时任务 .205
4.4.4 定时任务的依赖.208
4.5 更多的Mesos 服务框架209
4.5.1 Mesos 服务框架的本质 209
4.5.2 编写自己的Mesos 服务框架 211
4.5.3 其他常见服务框架 216
4.6 DC/OS218
4.6.1 DC/OS 简介218
4.6.2 部署DC/OS 219
4.6.3 DC/OS 的操作 228
4.6.4 DC/OS 命令行工具 230
4.6.5 DC/OS 的应用仓库 231
4.7 本章小结 234
第5 章 Rancher 集群解决方案235
5.1 Rancher 集群概述 235
5.1.1 Rancher 项目的起源235
5.1.2 Rancher 的结构236
5.1.3 相关概念 .237
5.2 构建Rancher 集群 239
5.2.1 部署Server 节点.239
5.2.2 Server 节点的高可用部署方式240
5.2.3 添加Agent 节点.241
5.3 Rancher 的服务管理.243
5.3.1 使用Rancher Web UI 创建服务243
5.3.2 从容器245
5.3.3 特殊类型的服务.247
5.3.4 使用应用商店 251
5.3.5 服务编排 252
5.3.6 服务的升级和回滚 254
5.4 Rancher 使用进阶 256
5.4.1 Rancher 的标签256
5.4.2 调度选项 257
5.4.3 服务健康检查 258
5.4.4 Rancher 的元数据服务 260
5.4.5 Rancher 的DNS 服务262
5.4.6 使用私有镜像仓库 263
5.4.7 Rancher 的Secret 服务 264
5.4.8 在应用商店添加自定义应用 265
5.5 Rancher 的命令行工具 268
5.5.1 配置Rancher 命令行工具268
5.5.2 命令工具的基本使用.270
5.5.3 通过命令行进行服务编排.273
5.5.4 通过命令行进行服务升级273
5.6 使用Rancher 安装Kubernetes 274
5.6.1 Rancher 的环境管理274
5.6.2 在Rancher 中添加Kubernetes 环境276
5.6.3 在Rancher 中使用Kubernetes 279
5.7 本章小结 282
第3 部分 技术周边
第6 章 容器集群的网络和存储284
6.1 容器网络 284
6.1.1 容器网络标准 284
6.1.2 本地网络 288
6.1.3 跨节点网络293
6.1.4 使用Docker 内置的Overlay 类型网络 300
6.1.5 构建基于Flannel 的覆盖网络301
6.1.6 构建基于Calico 的BGP 路由网络306
6.2 容器存储 310
6.2.1 容器实例和镜像的存储 310
6.2.2 容器卷的存储 312
6.2.3 容器卷存储标准316
6.2.4 基于NFS 的卷存储 317
6.2.5 基于Ceph 的卷存储320
6.2.6 使用公有云存储330
6.3 本章小结 332
第7 章 容器服务的基础设施 333
7.1 集群性能监控 333
7.1.1 常见的开源性能监控方案333
7.1.2 基于TICK Stack 的性能监控 335
7.1.3 TICK Stack 的部署和使用 336
7.1.4 基于Prometheus 的性能监控 341
7.1.5 Prometheus 的部署 343
7.1.6 Prometheus 的使用 353
7.2 集群日志管理 361
7.2.1 常见的开源日志管理方案361
7.2.2 基于Elastic Stack 的日志管理363
7.2.3 基于Fluentd 的日志管理372
7.3 服务发现 377
7.3.1 常见的服务发现方案377
7.3.2 Etcd 379
7.3.3 Consul 390
7.4 镜像仓库 398
7.4.1 容器镜像仓库概述 398
7.4.2 Registry 399
7.4.3 Harbor 405
7.5 本章小结 412
第8 章 容器技术新风向 413
8.1 安全的集群操作系统:Container Linux 413
8.1.1 Container Linux 概述413
8.1.2 Container Linux 的部署 416
8.1.3 Container Linux 的使用 418
8.2 基于容器的操作系统:RancherOS 419
8.2.1 RancherOS 概述.419
8.2.2 部署RancherOS 421
8.2.3 RancherOS 的使用 422
8.2.4 使用ros 工具管理系统 424
8.3 容器式的虚拟机:Hyper 429
8.3.1 Hyper 概述429
8.3.2 部署Hyper430
8.3.3 Hyper 的使用 431
8.4 虚拟机式的容器:LXD434
8.4.1 LXD 概述 434
8.4.2 LXD 的安装和使用 435
8.4.3 服务热迁移.440
8.5 容器与虚拟机的统一:Rkt 442
8.5.1 Rkt 概述 442
8.5.2 Rkt 的安装和使用 444
8.6 企业级定制容器:Pouch 450
8.6.1 Pouch 概述450
8.6.2 Pouch 的开源生态 453
8.6.3 体验Pouch455
8.7 微内核操作系统:Unikernel .458
8.7.1 Unikernel 概述 458
8.7.2 Unikernel 的发展460
8.7.3 体验Unikernel 462
8.8 本章小结 465