第1章 Docker入门 1
1.1容器简介与Docker容器引擎 2
1.1.1什么是容器 2
1.1.2 Docker容器 2
1.2 Docker核心原理 5
1.2.1 Docker引擎结构 5
1.2.2 Docker服务流程 6
1.2.3 Docker核心技术 6
1.3 Docker镜像及镜像仓库 16
1.3.1什么是Docker镜像 16
1.3.2构建Docker镜像 16
1.3.3搭建Docker镜像仓库 21
1.4 Docker网络 22
1.4.1 Docker网络架构 22
1.4.2 Docker网络原理 23
第2章 Kubernetes入门 28
2.1 Kubernetes概述 29
2.1.1什么是Kubernetes 29
2.1.2为什么选择Kubernetes 29
2.1.3 Kubernetes基本概念 31
2.2 Kubernetes架构及安装 36
2.2.1 Kubernetes架构 36
2.2.2 Kubernetes核心组件 38
2.2.3二进制安装Kubernetes集群 44
2.2.4 kubespray安装Kubernetes集群 50
2.3 Kubernetes实战案例 52
2.3.1 WordPress应用模型 52
2.3.2部署WordPress 53
2.3.3部署MariaDB 54
2.3.4通过浏览器访问WordPress 57
2.4 Kubernetes网络 57
2.4.1 Kubernetes中的网络场景 57
2.4.2 Kubernetes网络模型 59
2.4.3 Kubernetes开源网络方案 60
2.5 Kubernetes高级特性 64
2.5.1 Federation 65
2.5.2 GPU支持 68
2.6 Kubernetes生态 71
2.6.1 Kubernetes包管理工具Helm 71
2.6.2 Service Mesh 73
2.6.3 Serverless 76
第3章 美丽联合容器云实践 79
3.1“从零到一”:容器云平台的技术演进 80
3.1.1为什么要建设容器云平台 80
3.1.2如何建设容器云平台 80
3.1.3架构演进 84
3.1.4稳定性、效率和成本 89
3.2“自我突破”:关键技术方案和创新点 93
3.2.1版本演进 93
3.2.2关键技术和创新点 94
3.3总结 109
3.3.1体会和心得 109
3.3.2展望未来 110
3.3.3遇到过的问题 114
3.3.4开源工具分享 115
第4章 酷家乐容器化之路 119
4.1架构挑战与应对方案 120
4.2应用容器化 122
4.2.1 CI/CD迁移 122
4.2.2公共基础镜像 122
4.2.3镜像构建及单元测试 123
4.2.4容器部署 124
4.2.5网络模式 124
4.2.6性能相关 124
4.2.7小结 125
4.3编排自动化 125
4.3.1资源隔离与资源限额 125
4.3.2 Kubernetes的认证与授权 128
4.3.3 CMDB改造 131
4.3.4 Kubernetes的包管理工具Helm 132
4.3.5存储方案 132
4.3.6网络方案 132
4.3.7日志与监控 133
4.3.8小结 134
4.4酷家乐的服务网格实践 134
4.4.1服务网格的发展现状 135
4.4.2酷家乐技术团队应用Istio的范围 135
4.4.3 Istio的安装 135
4.4.4通过Istio的信息进行全自动化部署 135
4.4.5通过Istio+Zipkin+Sleuth实现调用链路追踪 137
4.4.6通过Istio的routing rule实现不同的发布策略和版本策略 138
4.4.7通过修改Istio系统设置实现Pod外部访问控制 139
4.4.8 Istio的其他风险 140
4.4.9小结 140
4.5总结 140
第5章 个推基于Docker和Kubernetes的微服务实践 142
5.1微服务 143
5.1.1微服务简介 143
5.1.2微服务实践 145
5.2容器化 149
5.3 Kubemetes实践 151
5.4总结 157
第6章 使用Kubernetes进行交换机端口流量采集 158
6.1 Prometheus简介与使用 159
6.1.1 Prometheus特点 159
6.1.2 Prometheus相关组件 159
6.1.3 Prometheus架构 159
6.1.4 Prometheus适用场景 160
6.1.5 Prometheus的安装及使用 160
6.1.6 Prometheus SNMP Exporter 168
6.1.7 Prometheus告警 169
6.1.8 Grafana 171
6.2流量采集系统 171
第7章 搜道微服务容器化实践 175
7.1为何选择 Docker 176
7.1.1公司架构演变过程 176
7.1.2平台存在的问题 176
7.1.3容器优势 176
7.2 Docker容器云架构方案 177
7.2.1技术选型及实践 177
7.2.2服务注册与服务发现 192
7.2.3 Docker网络与通信解决方案 193
7.3未来展望:自动化和弹性云 194
7.3.1自动化 195
7.3.2弹性云 195
第8章 纵横新创的容器化实践 196
8.1背景介绍 197
8.2 Rancher介绍 198
8.2.1基础设施编排 199
8.2.2应用商店 199
8.2.3容器编排与调度 199
8.2.4企业级权限管理 199
8.3 Docker构件库配置 199
8.3.1 Nexus 3安装 200
8.3.2 Nexus 3配置Docker镜像库 201
8.3.3配置Docker环境 202
8.4构建Maven环境 208
8.4.1配置POM文件 208
8.4.2配置DockerFile文件 209
8.4.3开启Docker的远程接口 209
8.4.4执行Maven编译 210
8.5 Rancher在Jenkins中的配置 211
8.5.1 Jenkins中安装Rancher插件 212
8.5.2在Rancher服务中配置API连接信息 212
8.5.3在Jenkins中配置 213
8.5.4 Jenkins的执行效果 214
8.6问题与总结 216
8.6.1 Rancher的高可用 216
8.6.2收集日志 216
8.6.3监控告警 217
8.6.4调用链监控 217
8.7写在最后 218
第9章 九言科技Kubernetes实践 219
9.1现有维护中的瓶颈 220
9.2容器管理平台的选择 220
9.3环境的搭建与CI/CD 220
9.3.1用kubeadm快速搭建Kubernetes环境 221
9.3.2 Kubernetes环境下的CI/CD整体架构 222
9.4存储引擎的选择 222
9.4.1存储概述 222
9.4.2如何选择驱动引擎 223
9.5 Kubernetes日志收集 226
9.5.1收集日志的需求 226
9.5.2收集日志的解决方案 226
9.6未来探索 229
9.6.1 Service Mesh介绍 229
9.6.2 FaaS与Serverless 230
9.7小结 232
第10章 沃趣科技的容器化RDS之路 233
10.1容器化RDS:计算存储分离架构下的“Split-Brain” 234
10.2容器化RDS:计算存储分离架构下的1/O优化 242
10.2.1计算存储分离架构 243
10.2.2计算存储分离架构的缺点 243
10.2.3 DoubleWrite 243
10.2.4单机架构:关闭DoubleWrite 244
10.2.5计算存储分离架构:关闭DoubleWrite 244
10.3容器化RDS:PersistentLocalVolumes和VolumeScheduling 246
10.3.1本地卷 246
10.3.2原有调度机制的问题 246
10.3.3 PVC绑定 247
10.3.4 Pod调度 247
10.4容器化RDS:借助CSI扩展Kubernetes存储能力 252
10.4.1现有Kubemetes存储插件系统问题 253
10.4.2 Container Storage Interface 254
10.4.3基于CSI和分布式文件系统在MySQL上实现Dynamically Expand Volume 255
10.4.4对CSI的展望 257