本书与kubernetes架构细节为引子,深入挖掘kubernetes生产化时间过程中所遇到的挑战和方案细节,重点包括:1. 规划和构建企业级的kubernetes高可用集群2. 如何解决kubernetes落地过程中与企业生态系统的整合,构建多租户解决方案3. 基于kubernetes的边缘计算4. 全方位的性能调优,节点,网络,kubernetes组件5. 如何保证用户应用的高可用,如何通过监控,告警,自动策略等保证高可用。在这些话题的基础上,本书的核心目的是,通过以上角度,全方位分享eBay在4年多kubernetes生产化时间之路中的经验,目标是使本书称为kubernetes生产化的案例参考手册。
孟凡杰,eBay资深架构师。Kubernets社区贡献者。CNUTCon全球运维大会明星讲师。完成了Kubernets社区集群联邦的开发和重构等。先后就职于IBM、惠普EMC、eBay等公司,专注于系统设计和软件开发。目前在eBay负责网络和多集群的架构和开发,推动kubernetes在互联网企业的落地和生产化,主导集群联邦的落地,并在无业务中断的前提下,正在主导ebay十多万虚拟机转向容器技术栈。对微服务和服务治理有深入理解,积极推动Istio在eBay的落地,实现全平台Service mesh。
目 录
第1章 架构基础 1
1.1 云计算的变革 3
1.1.1 物理机时代 3
1.1.2 虚拟化时代 4
1.1.3 容器化时代 6
1.2 Kubernetes模型设计 11
1.2.1 对象的通用设计原则 11
1.2.2 模型设计 12
1.2.3 核心对象概览 16
1.2.4 控制器模式 20
1.2.5 控制器的协同工作原理 23
1.3 Kubernetes核心架构 25
1.3.1 核心控制平面组件 26
1.3.2 工作节点控制平面组件 33
1.3.3 Pod详解 43
第2章 计算节点管理 52
2.1 操作系统 55
2.2 文件系统规划 57
2.3 容器核心技术 58
2.3.1 Namespace 59
2.3.2 Cgroups 64
2.3.3 容器运行时 71
2.3.4 容器存储驱动 77
2.4 节点资源管理 82
2.4.1 状态上报 82
2.4.2 资源预留 83
2.4.3 驱逐管理 84
2.4.4 容器和系统资源配置 87
2.5 存储方案 99
2.5.1 存储卷插件管理 99
2.5.2 存储的分类 102
2.6 节点调优 114
2.6.1 NUMA架构 114
2.6.2 CPU性能 115
2.6.3 内存 117
2.6.4 磁盘 120
2.6.5 网络性能 121
第3章 构建高可用集群 138
3.1 高可用的常用手段 141
3.2 Kubernetes高可用层级 144
3.3 控制平面的高可用保证 148
3.3.1 etcd高可用保证 149
3.3.2 API Server高可用保证 156
3.3.3 控制器高可用保证 164
3.3.4 集群的安全性保证 165
3.4 面向应用的高可用特性 173
3.5 模型驱动的集群搭建与管理 176
第4章 构建企业级镜像仓库 184
4.1 镜像仓库综述 185
4.1.1 镜像仓库 185
4.1.2 镜像管理 187
4.2 企业级镜像仓库 189
4.2.1 架构总览 191
4.2.2 数据库 193
4.2.3 块存储 194
4.2.4 镜像仓库实例部署 195
4.3 镜像仓库缓存 196
4.3.1 镜像分发的挑战 196
4.3.2 镜像缓存服务拓扑 198
4.3.3 镜像缓存流量管理 199
4.3.4 高可用镜像缓存服务 199
4.4 镜像安全 200
4.4.1 镜像扫描 201
4.4.2 镜像策略准入控制 206
4.4.3 镜像安全监控 210
第5章 多租户生产集群 213
5.1 租户 214
5.1.1 多租户支持 214
5.1.2 Kubernetes多租户有限支持 216
5.1.3 Kubernetes租户扩展 218
5.2 认证 222
5.2.1 Kubernetes认证 222
5.2.2 用户认证 225
5.2.3 高负载认证实践 227
5.3 授权 229
5.3.1 Kubernetes授权 230
5.3.2 租户授权 235
5.3.3 特殊权限管理 236
5.3.4 特殊权限应用 238
5.4 隔离 243
5.4.1 节点隔离 244
5.4.2 容器隔离 247
5.4.3 网络策略隔离 249
5.5 配额 252
5.5.1 Kubernetes配额 252
5.5.2 高阶配额 255
5.5.3 租户配额 262
5.5.4 租户配额实践 265
第6章 网络接入方案 267
6.1 数据中心基础架构 268
6.2 域名服务 270
6.3 Linux网络基础 273
6.3.1 理解Linux网络协议栈工作机制 273
6.3.2 iptables 275
6.3.3 ipset 277
6.3.4 IPVS 278
6.4 负载均衡 280
6.4.1 负载均衡的实现机制 281
6.4.2 负载均衡的技术实现 283
6.4.3 负载均衡的部署模式 288
6.4.4 负载均衡策略 289
6.4.5 健康检查 291
6.5 Kubernetes中的服务发布 291
6.5.1 创建服务 293
6.5.2 服务的类型 296
6.5.3 基于kube-proxy实现的流量转发 300
6.5.4 Service高级特性 308
6.6 DNS 312
第7章 API网关和服务网格 315
7.1 API网关 316
7.2 服务网格 320
7.3 深入了解Envoy 322
7.3.1 Envoy发现机制 325
7.3.2 Envoy架构 330
7.4 Ingress 334
7.4.1 功能概述 334
7.4.2 Ingress的挑战 336
7.5 Contour 337
7.5.1 架构 338
7.5.2 高级功能 341
7.6 Istio 350
7.6.1 架构 350
7.6.2 Sidecar 353
7.6.3 Ingress网关 360
7.6.4 金丝雀发布和流量灰度 363
7.6.5 安全保证 365
7.6.6 策略管理和遥测 368
7.6.7 数据平面加速 371
7.6.8 优势和挑战 372
第8章 集群联邦 374
8.1 集群联邦概览 377
8.1.1 集群联邦设计 377
8.1.2 集群注册中心 379
8.1.3 联邦共享逻辑 380
8.1.4 联邦类型配置 384
8.1.5 同步控制器 385
8.1.6 副本调度控制器 386
8.1.7 全局DNS服务 388
8.2 定义联邦资源 390
8.2.1 集群资源 390
8.2.2 联邦资源 391
8.2.3 定义联邦资源 393
8.2.4 联邦资源管理 397
8.3 联邦应用 398
8.3.1 联邦应用 400
8.3.2 联邦应用部署 401
8.3.3 联邦应用运维 402
8.3.4 集群联邦的局限性与解决方案 409
第9章 边缘计算 416
9.1 边缘数据中心 417
9.1.1 智能域名服务(GSLB) 418
9.1.2 边缘网络接入 420
9.1.3 规划边缘计算应用 428
9.2 KubeEdge 430
9.2.1 通信协议 432
9.2.2 CloudCore 440
9.2.3 EdgeCore 446
9.2.4 设备映射器 450
9.2.5 未来展望 455
第10章 应用落地 456
10.1 应用容器化 459
10.1.1 Dockerfile 459
10.1.2 容器化带来的影响 463
10.2 应用接入的最佳实践 466
10.2.1 资源定义 466
10.2.2 灵活定义Pod 468
10.2.3 应用配置 473
10.3 应用管理 477
10.3.1 无状态应用 477
10.3.2 有状态应用 480
10.3.3 Operator 483
10.4 集群应用运维 485
第11章 监控和自动修复 488
11.1 指标监控系统 490
11.1.1 监控系统的构建 491
11.1.2 Prometheus Operator 499
11.2 日志管理系统 501
11.3 关键指标定义 503
11.4 自动修复系统 505
11.4.1 Node Problem Detector 505
11.4.2 自动修复控制器 508
11.5 事件监控系统 509
11.6 状态监控系统 511
第12章 DEVOPS 513
12.1 拥抱DevOps 515
12.2 自治跨职能团队 520
12.3 敏捷开发 523
12.4 GitOps 529
12.5 质量保证 533