第1 部分 基础概念& g1 Q! Y/ c, Y
第1 章 容器集群综述 2
* I/ |8 O, D; s. X: U1.1 虚拟化与容器 24 A3 o6 D) i5 k8 p6 ]
1.1.1 计算资源虚拟化 2
+ S5 o( A' T2 y2 d v1.1.2 容器技术的本质 4
* A0 p% F8 t* I- m8 U. ~" M1.1.3 基于容器的软件交付 13
+ C2 ?3 @! X# A9 y4 @1.2 容器集群与分布式服务 16
0 y8 o8 @, a7 X: n# u3 J! [1.2.1 微服务架构 16$ y9 `$ H! d2 r6 Q \9 c
1.2.2 容器集群生态圈 18
( A2 d# z) v7 u3 _: X1.3 容器即服务 26
2 ^" R# y: U) x U4 U6 Z1.3.1 从基础设施到平台 26
# l$ r+ J1 h: `+ l/ y, Q0 x1.3.2 数据中心操作系统 29' a- }( `+ Y7 o4 m$ a% ]
1.4 本章小结 31
, a' `. E2 R( e0 a第2 部分 解决方案
) n0 u$ W$ e/ `# t; g" {8 z第2 章 SwarmKit 集群解决方案 35
" c) M$ T: I3 ]2 ?% r+ M2.1 开源容器集群方案 35. _3 e4 z8 }) h2 d) ?) V$ Z
2.1.1 容器社区的“四朵金花” 35
: }& B5 D8 u% {% f* ^/ H( \2.1.2 经典Swarm、SwarmKit 和Swarm Mode 362 t; z1 ?- o$ _9 ~, s
2.2 使用SwarmKit 37
* A8 D; [2 ]* T7 m& Q2.2.1 SwarmKit 综述 37% n3 a* G1 O* N/ i3 \
2.2.2 创建SwarmKit 集群 405 s% a( m+ x' B* q: O
2.2.3 在SwarmKit 集群上运行服务 43
/ A) B& B8 G1 `1 {2.2.4 SwarmKit 集群的其他功能 45
4 [8 \6 s _$ y- }$ K: c2.3 Docker Swarm Mode 45: l* ^' {) z5 A1 F
2.3.1 Swarm Mode 综述 45' T7 n% e9 J: I3 n5 s e/ Q I
2.3.2 集群的创建与销毁 46+ j& r7 n, m6 i) k! d5 M
2.3.3 节点管理 486 j. @: @' @' N9 V( f* i+ {
2.3.4 服务管理 516 v% H6 T" g( K8 O% q; ^' ]
2.3.5 服务编排 56
7 d7 Y* X9 K9 t; b Y1 u2.3.6 应用栈的管理 63; z- |$ s* k2 Q& B* d
2.3.7 外置配置和密文管理 662 R3 K2 m& w9 O$ K1 G R
2.4 Swarm Mode 的图形界面 69
; G! K4 x1 L4 W: e% r8 a7 d9 O2.4.1 Swarm Mode UI 现状 69
; ]5 i, F6 e- l, }) E2.4.2 Portainer 717 @. @8 c0 i$ x- z
2.5 本章小结 74: y* l. p ~9 x5 ~/ s
第3 章 Kubernetes 集群解决方案 754 C. _6 e: T8 Z( {( O2 F& @! {, Z/ I
3.1 Kubernetes 集群概述 750 Y; i* c( w; O# M
3.1.1 Kubernetes 项目的起源 75$ o+ z' N7 f5 F6 B& p
3.1.2 Kubernetes 的结构 76% |; Z+ m! \# [0 Z
3.1.3 基本概念 78
- p. ~& S$ |' L2 ~7 b3.2 部署Kubernetes 集群 82
) l$ {5 y( a1 q3.2.1 使用Minikube 824 I% [2 [0 K, I' b' n9 a) {& D
3.2.2 使用kubeadm 83
+ P" t0 d& w2 n$ d3.2.3 理解Kubernetes 集群的部署过程 87
- ], j8 z- b* i3.2.4 验证集群可用性 96# I/ ^" l2 l3 j$ S% o/ w+ c& f
3.3 使用Kubernetes 98
6 g$ u7 s8 c( c- Z, d6 }9 ^: z3.3.1 通过Kubernetes 部署服务 98
: b" W, n+ k j) B) L3.3.2 服务的在线更新和回滚 103
) K* ?- w& S% h3.3.3 单次任务、定时任务和全局服务 109( \6 M0 E5 ?+ o0 O) U
3.3.4 持久化存储 113
# f+ k' w; _, m4 b8 `! j3.3.5 配置存储 116
9 g2 y; R# U. i9 f1 [4 [3.3.6 管理有状态的服务 122/ Y- w, l3 U2 f: D0 L. h
3.3.7 健康检查 126" H+ b) z; l/ k$ U% W9 j# U
3.3.8 提供对外服务 127
/ |( n6 Q! S% b; S9 _3.3.9 多租户隔离和配额 131 H4 n, G+ n% D% C* R% P4 k0 L
3.3.10 集群的节点管理 135
" ?" U; I( N% I/ i3.4 Kubernetes 包管理工具Helm 137
/ Y; w* @4 H9 X R4 M- m0 s3.4.1 Helm 简介 137. E$ b9 @& C0 L4 ~8 i" }
3.4.2 使用Helm 管理服务 137
' y" T1 b( h5 Z" b# ^$ C7 M: u0 _5 E* E3.4.3 自定义Chart 142
4 Y+ M. c" C( [: b7 m- s' V3.4.4 Chart 仓库 146
; u6 ^( K3 Y- ^- ~+ i H w |9 g3.5 本章小结 147, _4 e8 a+ v$ u: {4 i' \+ Y. n; e6 Z
第4 章 Mesos 集群解决方案 148
" R9 H8 _4 H+ c1 P3 G; u) `5 e4.1 Mesos 和DC/OS 概述 148" F1 j" `+ G, ~1 Z) Z
4.1.1 Mesos 项目的起源 148
# V n3 o) Y5 L/ o8 h% b4.1.2 Mesos 的结构 149" [) m; m9 }3 z4 W' ^2 |
4.1.3 Mesos 的内部构成 1510 y: T& L, t% t1 v: \
4.1.4 DC/OS 数据中心操作系统 152
; G# Z/ e* e3 b5 G* y' @4 M4.2 部署Mesos 集群 153
1 T4 x$ t/ i$ K4 H [- S7 p, [4.2.1 部署ZooKeeper 153
+ c0 }9 T y% e0 |+ [4 B# h4.2.2 部署Mesos 157
. G s, A* ~( m" g4.2.3 启动Master 节点 1587 n& W3 C& \# C" X0 r- P
4.2.4 添加Agent 节点 161
/ |" x" A' C' v8 I' v( q1 a9 o4.2.5 Mesos 服务的启动参数 164
* W8 H4 l2 x/ r" p: f& L* G4.3 使用Marathon 管理服务 170( T/ x0 c) K! F' X7 I" m
4.3.1 部署Marathon 170
/ ]8 [* @: i0 Q& r9 Y3 O3 C8 g0 }4.3.2 添加一个应用 172 , X: s2 k3 E8 h$ R% t& Z3 e
4.3.3 使用DC/OS 命令行工具 177! X, ~8 r" f& L9 n, t9 J
4.3.4 使用Docker 容器 177# s5 q& f X5 o7 T7 |1 ]
4.3.5 使用Unified Container 179
0 }. ?- W0 `: w& [7 e4.3.6 持久化卷存储 182$ Z! ]& ~' G+ j3 g/ [
4.3.7 Marathon-LB 负载均衡 184$ t. F8 x% W+ O" i0 W" k4 K
4.3.8 Mesos-DNS 域名服务 188
2 S& M7 E0 R: n/ s' z" G# K* H4.3.9 服务依赖和编组 1910 O: K8 @2 b- F7 G. M; ?
4.3.10 应用升级 194
+ `9 R1 }. Q) ~8 K2 \4.3.11 调度约束 1994 p& `9 p% C5 W2 t% P6 K, [2 @( I
4.3.12 健康检查 201
7 s( F9 p1 I5 m, k" }3 Y4.4 使用Chronos 203
- h, A% u( u# }4.4.1 部署Chronos 203
' Y' {3 o; d7 L* ]6 L9 |4.4.2 定时表达式 204" Q4 M; L K' A7 d x! x
4.4.3 创建定时任务 205
. D- j: h, J. Y4.4.4 定时任务的依赖 2088 H& n5 I& P) Q* p3 F
4.5 更多的Mesos 服务框架 209
% D' v; u4 C8 R! I }% _$ b8 i4.5.1 Mesos 服务框架的本质 209# U3 M8 O, y! z3 ~
4.5.2 编写自己的Mesos 服务框架 211
/ }) ]8 Q0 Q/ z2 G) ?; G# V4.5.3 其他常见服务框架 216, d2 n5 z- J8 l, m5 W6 O8 M( e
4.6 DC/OS 218
# y2 F9 H; }2 s' W' q4.6.1 DC/OS 简介 218
! ^$ h4 a8 ~( P- S$ |! u$ E3 X4.6.2 部署DC/OS 2196 D2 ^% _& l6 q k g$ t" r4 n
4.6.3 DC/OS 的操作 228
q. L8 {. R: d* c2 P4.6.4 DC/OS 命令行工具 230( P! |3 Y. A: q+ w5 T
4.6.5 DC/OS 的应用仓库 231 Y1 n* v0 v2 H/ V; R
4.7 本章小结 234- {% T/ U" D N% z
第5 章 Rancher 集群解决方案 2352 {6 M5 I% o9 x
5.1 Rancher 集群概述 235& V8 L& U( @' s% l; i! R# y/ J1 ]
5.1.1 Rancher 项目的起源 235
+ y1 o- H: O4 l6 `5.1.2 Rancher 的结构 2361 r( K8 B) e/ I' x$ o; H
5.1.3 相关概念 2372 S+ r- |" Y/ m+ Y- U; n
5.2 构建Rancher 集群 239
; _& L H1 i+ I. s& H! u5.2.1 部署Server 节点 239
# w+ }- n1 r k: [; C; J; @( s1 y5.2.2 Server 节点的高可用部署方式 2408 w g8 B- e* H6 E
5.2.3 添加Agent 节点 241
1 h' t4 B! l9 c' O" D4 n7 L5.3 Rancher 的服务管理 243
c5 M$ {3 D/ `/ n& U1 h+ M i& b5.3.1 使用Rancher Web UI 创建服务 2432 D- r9 k5 G# s6 O4 y, R. [
5.3.2 从容器 245
( A! [8 A0 H" Q. [/ G- p6 [5.3.3 特殊类型的服务 247: G, J! x) b! R1 P
5.3.4 使用应用商店 251
' _+ _/ W3 Q W. K C" b/ C3 r" Y5.3.5 服务编排 252% N4 }6 E' x) d
5.3.6 服务的升级和回滚 254& z( f) J, f1 n' l" @
5.4 Rancher 使用进阶 256+ J' \( t: h! d5 R; ~7 i+ _. `
5.4.1 Rancher 的标签 256
; w) t, W& s/ c+ h, W: p5.4.2 调度选项 257- D* p8 h& z6 G0 s( K* d8 Q
5.4.3 服务健康检查 258
- K) ~1 ~/ ~ G6 B+ L5.4.4 Rancher 的元数据服务 260! N, P: d1 i$ j! B
5.4.5 Rancher 的DNS 服务 262
: E& S0 R4 l' N+ h c c5.4.6 使用私有镜像仓库 263
6 j% L$ i7 b) J9 i; D6 W& x, q6 r5.4.7 Rancher 的Secret 服务 264 s# B5 O8 D/ g* g9 K4 Y$ i: {, G
5.4.8 在应用商店添加自定义应用 265
- P0 g, n3 r! `# t# a8 G5 [5.5 Rancher 的命令行工具 2683 Z& {: C6 x( p( G0 a6 a: Z, Y
5.5.1 配置Rancher 命令行工具 268
: M! X6 i4 l/ Y5.5.2 命令工具的基本使用 270. q9 H: B1 T, j8 y- R
5.5.3 通过命令行进行服务编排 273
% o& b5 G. Y4 d/ c$ m5.5.4 通过命令行进行服务升级 273 p: J$ r5 C# U0 @7 w b6 w; E
5.6 使用Rancher 安装Kubernetes 274: i4 B8 r: i8 S* Z; E' Y
5.6.1 Rancher 的环境管理 274
3 X2 S+ i+ d D' p5.6.2 在Rancher 中添加Kubernetes 环境 2767 ~7 p. C z0 S5 L5 S, N
5.6.3 在Rancher 中使用Kubernetes 279
5 R; j8 n6 O+ t8 b5.7 本章小结 282$ f+ ^ p& P% U0 \/ u
第3 部分 技术周边
: k& U9 I, e! ?2 U) s x4 W第6 章 容器集群的网络和存储 284
* @9 g/ o$ N) D) ^3 P2 G' l$ b6.1 容器网络 284( A9 B4 U2 W8 b+ ^, Z \
6.1.1 容器网络标准 284
2 ]3 r: F$ ?& B: `* {6.1.2 本地网络 288
% h. s' Z, l5 P% O# R/ t6.1.3 跨节点网络 293
7 z. Q1 e H* E5 s% q6 ^6.1.4 使用Docker 内置的Overlay 类型网络 300
* |5 f4 k. x0 C# I6.1.5 构建基于Flannel 的覆盖网络 301
: T+ G4 A9 k& k% q- Z* `$ z6.1.6 构建基于Calico 的BGP 路由网络 306
- ~( k8 ~- _& ?( ~6.2 容器存储 310
0 y. y7 p& R, ]2 s. A6.2.1 容器实例和镜像的存储 310
- i6 k& c4 p; n1 v) ]/ f0 A6.2.2 容器卷的存储 312; R% O' c- Y6 _% e, M% p. E+ O
6.2.3 容器卷存储标准 316# B* s5 |* C3 o+ a0 S( u9 G' `
6.2.4 基于NFS 的卷存储 317
% V/ j6 W) O" R# q6.2.5 基于Ceph 的卷存储 320
. ?/ _% h3 j R& b6.2.6 使用公有云存储 330
( |, P, g) `& D- c' y( W* _6.3 本章小结 3327 q4 @' d/ Z9 [1 K$ |: J6 W, v
第7 章 容器服务的基础设施 333/ y# p" U) J" a
7.1 集群性能监控 333; k5 ]! d, Q; R- f! M& {
7.1.1 常见的开源性能监控方案 333
/ ?' T3 J0 k1 \! f1 _0 W9 H7.1.2 基于TICK Stack 的性能监控 335/ V+ R: t- J4 _% K3 J
7.1.3 TICK Stack 的部署和使用 336. h( `+ \( V" ^
7.1.4 基于Prometheus 的性能监控 3411 W$ B/ r) Z# K; S( ~! Q
7.1.5 Prometheus 的部署 343: c# P8 |, u& n: |, l4 q
7.1.6 Prometheus 的使用 353; N. a1 W: j5 n5 e; E% e6 ^
7.2 集群日志管理 361
( z) j6 g: U/ u& O$ z4 z: j7.2.1 常见的开源日志管理方案 3610 c' F0 h3 s) A' x
7.2.2 基于Elastic Stack 的日志管理 363
* \8 n5 u# A8 h- P7.2.3 基于Fluentd 的日志管理 3722 o( e% w! x' u- p1 }
7.3 服务发现 377
$ Y2 Q6 C0 B* @- `( d0 Z7.3.1 常见的服务发现方案 377
4 U% c% N% Y2 h* _7.3.2 Etcd 379 b$ J7 V& C5 L; D0 l# G
7.3.3 Consul 3903 z7 t) X4 i( i2 @0 o. h L
7.4 镜像仓库 398
& C- U& p" b! A7.4.1 容器镜像仓库概述 398% {% [7 {% S _
7.4.2 Registry 399
1 E2 B. w" M; w% y. L# P7.4.3 Harbor 405# \% |7 V- {- I1 y( v7 s2 U7 r7 F* ^
7.5 本章小结 412
8 U" |+ R+ b$ ^9 c7 A( b% S) n第8 章 容器技术新风向 413
9 ]. q7 V1 h8 |1 J8.1 安全的集群操作系统:Container Linux 413/ Z& \" V8 A. J8 w3 c( A% u
8.1.1 Container Linux 概述 413% _$ f$ K! R, K* p3 I
8.1.2 Container Linux 的部署 416) y3 F. ?& A: z1 C& g( I
8.1.3 Container Linux 的使用 4187 c; T x3 \) ?4 ~
8.2 基于容器的操作系统:RancherOS 4197 p+ v8 g/ t3 P& a1 q
8.2.1 RancherOS 概述 419& ?- u: r- x8 Y( g' S& r
8.2.2 部署RancherOS 421
7 o# `+ V2 ]5 A: }8.2.3 RancherOS 的使用 422+ q( Z$ Z$ L( _- t+ h
8.2.4 使用ros 工具管理系统 424$ {8 B9 }# @8 g4 K. H M# r" K7 x) @' T- D
8.3 容器式的虚拟机:Hyper 429# |4 r1 [6 @# _& b6 W6 H4 }2 l2 d
8.3.1 Hyper 概述 429
; e6 d1 G) Q0 w- B$ S8 F/ _8.3.2 部署Hyper 430
+ N* |: b: c3 }) Y8.3.3 Hyper 的使用 431
7 d6 Q, S, }+ i) _4 [8.4 虚拟机式的容器:LXD 434
A8 d* t% q+ a8.4.1 LXD 概述 434
$ O# O; n2 a7 j: v6 h4 ]6 D0 }8.4.2 LXD 的安装和使用 435. y8 r$ \4 i6 j
8.4.3 服务热迁移 440
; b. H/ \( }' ^9 C6 s! K% j8.5 容器与虚拟机的统一:Rkt 442
* F0 R& K( ^4 v P8 a8.5.1 Rkt 概述 442 java8.com, E. v" @4 k- U$ m
8.5.2 Rkt 的安装和使用 4444 c; ?4 j" g8 t+ B! g$ v5 ?
8.6 企业级定制容器:Pouch450
" s. r _' ?+ Y1 \7 U; ^; Y ^3 w8.6.1 Pouch 概述 450# A+ E4 w& K' ^' B$ w
8.6.2 Pouch 的开源生态 453
. V6 W) K% h: N8 e8.6.3 体验Pouch 455
) x: \- i, b$ l8.7 微内核操作系统:Unikernel 458 d8 M8 K8 l% \6 q% {. ^
8.7.1 Unikernel 概述 4588 g* G/ ]" ~: A5 W
8.7.2 Unikernel 的发展 460
/ a$ [: S2 y+ Z* J: |8.7.3 体验Unikernel 4622 Y$ l" ?3 d4 f, n! w* N
8.8 本章小结 465
; l0 K0 s8 B/ e8 w
- [* J7 O0 p+ o$ Q$ }0 f' _8 E4 T
) l' V# i5 L: B; o7 ] @