第1部分 基础概念 2
第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部分 解决方案 35
第2章 SwarmKit集群解决方案 35
2.1 开源容器集群方案 35
2.1.1 容器社区的“四朵金花” 35
2.1.2 经典Swarm、SwarmKit和Swarm Mode 36
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 Mode 45
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 使用Minikube 82
3.2.2 使用kubeadm 83
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包管理工具Helm 137
3.4.1 Helm简介 137
3.4.2 使用Helm管理服务 137
3.4.3 自定义Chart 142
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 部署ZooKeeper 153
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 部署Marathon 170
4.3.2 添加一个应用 172
4.3.3 使用DC/OS命令行工具 177
4.3.4 使用Docker容器 177
4.3.5 使用Unified Container 179
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 使用Chronos 203
4.4.1 部署Chronos 203
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/OS 218
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部分 技术周边 284
第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 部署Hyper 430
8.3.3 Hyper的使用 431
8.4 虚拟机式的容器:LXD 434
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 体验Pouch 455
8.7 微内核操作系统:Unikernel 458
8.7.1 Unikernel概述 458
8.7.2 Unikernel的发展 460
8.7.3 体验Unikernel 462
8.8 本章小结 465