本書與kubernetes架構(gòu)細節(jié)為引子,深入挖掘kubernetes生產(chǎn)化時間過程中所遇到的挑戰(zhàn)和方案細節(jié),重點包括:1. 規(guī)劃和構(gòu)建企業(yè)級的kubernetes高可用集群2. 如何解決kubernetes落地過程中與企業(yè)生態(tài)系統(tǒng)的整合,構(gòu)建多租戶解決方案3. 基于kubernetes的邊緣計算4. 全方位的性能調(diào)優(yōu),節(jié)點,網(wǎng)絡(luò),kubernetes組件5. 如何保證用戶應(yīng)用的高可用,如何通過監(jiān)控,告警,自動策略等保證高可用。在這些話題的基礎(chǔ)上,本書的核心目的是,通過以上角度,全方位分享eBay在4年多kubernetes生產(chǎn)化時間之路中的經(jīng)驗,目標是使本書稱為kubernetes生產(chǎn)化的案例參考手冊。
孟凡杰,eBay資深架構(gòu)師。Kubernets社區(qū)貢獻者。CNUTCon全球運維大會明星講師。完成了Kubernets社區(qū)集群聯(lián)邦的開發(fā)和重構(gòu)等。先后就職于IBM、惠普EMC、eBay等公司,專注于系統(tǒng)設(shè)計和軟件開發(fā)。目前在eBay負責網(wǎng)絡(luò)和多集群的架構(gòu)和開發(fā),推動kubernetes在互聯(lián)網(wǎng)企業(yè)的落地和生產(chǎn)化,主導(dǎo)集群聯(lián)邦的落地,并在無業(yè)務(wù)中斷的前提下,正在主導(dǎo)ebay十多萬虛擬機轉(zhuǎn)向容器技術(shù)棧。對微服務(wù)和服務(wù)治理有深入理解,積極推動Istio在eBay的落地,實現(xiàn)全平臺Service mesh。
目 錄
第1章 架構(gòu)基礎(chǔ) 1
1.1 云計算的變革 3
1.1.1 物理機時代 3
1.1.2 虛擬化時代 4
1.1.3 容器化時代 6
1.2 Kubernetes模型設(shè)計 11
1.2.1 對象的通用設(shè)計原則 11
1.2.2 模型設(shè)計 12
1.2.3 核心對象概覽 16
1.2.4 控制器模式 20
1.2.5 控制器的協(xié)同工作原理 23
1.3 Kubernetes核心架構(gòu) 25
1.3.1 核心控制平面組件 26
1.3.2 工作節(jié)點控制平面組件 33
1.3.3 Pod詳解 43
第2章 計算節(jié)點管理 52
2.1 操作系統(tǒng) 55
2.2 文件系統(tǒng)規(guī)劃 57
2.3 容器核心技術(shù) 58
2.3.1 Namespace 59
2.3.2 Cgroups 64
2.3.3 容器運行時 71
2.3.4 容器存儲驅(qū)動 77
2.4 節(jié)點資源管理 82
2.4.1 狀態(tài)上報 82
2.4.2 資源預(yù)留 83
2.4.3 驅(qū)逐管理 84
2.4.4 容器和系統(tǒng)資源配置 87
2.5 存儲方案 99
2.5.1 存儲卷插件管理 99
2.5.2 存儲的分類 102
2.6 節(jié)點調(diào)優(yōu) 114
2.6.1 NUMA架構(gòu) 114
2.6.2 CPU性能 115
2.6.3 內(nèi)存 117
2.6.4 磁盤 120
2.6.5 網(wǎng)絡(luò)性能 121
第3章 構(gòu)建高可用集群 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 面向應(yīng)用的高可用特性 173
3.5 模型驅(qū)動的集群搭建與管理 176
第4章 構(gòu)建企業(yè)級鏡像倉庫 184
4.1 鏡像倉庫綜述 185
4.1.1 鏡像倉庫 185
4.1.2 鏡像管理 187
4.2 企業(yè)級鏡像倉庫 189
4.2.1 架構(gòu)總覽 191
4.2.2 數(shù)據(jù)庫 193
4.2.3 塊存儲 194
4.2.4 鏡像倉庫實例部署 195
4.3 鏡像倉庫緩存 196
4.3.1 鏡像分發(fā)的挑戰(zhàn) 196
4.3.2 鏡像緩存服務(wù)拓撲 198
4.3.3 鏡像緩存流量管理 199
4.3.4 高可用鏡像緩存服務(wù) 199
4.4 鏡像安全 200
4.4.1 鏡像掃描 201
4.4.2 鏡像策略準入控制 206
4.4.3 鏡像安全監(jiān)控 210
第5章 多租戶生產(chǎn)集群 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 授權(quán) 229
5.3.1 Kubernetes授權(quán) 230
5.3.2 租戶授權(quán) 235
5.3.3 特殊權(quán)限管理 236
5.3.4 特殊權(quán)限應(yīng)用 238
5.4 隔離 243
5.4.1 節(jié)點隔離 244
5.4.2 容器隔離 247
5.4.3 網(wǎng)絡(luò)策略隔離 249
5.5 配額 252
5.5.1 Kubernetes配額 252
5.5.2 高階配額 255
5.5.3 租戶配額 262
5.5.4 租戶配額實踐 265
第6章 網(wǎng)絡(luò)接入方案 267
6.1 數(shù)據(jù)中心基礎(chǔ)架構(gòu) 268
6.2 域名服務(wù) 270
6.3 Linux網(wǎng)絡(luò)基礎(chǔ) 273
6.3.1 理解Linux網(wǎng)絡(luò)協(xié)議棧工作機制 273
6.3.2 iptables 275
6.3.3 ipset 277
6.3.4 IPVS 278
6.4 負載均衡 280
6.4.1 負載均衡的實現(xiàn)機制 281
6.4.2 負載均衡的技術(shù)實現(xiàn) 283
6.4.3 負載均衡的部署模式 288
6.4.4 負載均衡策略 289
6.4.5 健康檢查 291
6.5 Kubernetes中的服務(wù)發(fā)布 291
6.5.1 創(chuàng)建服務(wù) 293
6.5.2 服務(wù)的類型 296
6.5.3 基于kube-proxy實現(xiàn)的流量轉(zhuǎn)發(fā) 300
6.5.4 Service高級特性 308
6.6 DNS 312
第7章 API網(wǎng)關(guān)和服務(wù)網(wǎng)格 315
7.1 API網(wǎng)關(guān) 316
7.2 服務(wù)網(wǎng)格 320
7.3 深入了解Envoy 322
7.3.1 Envoy發(fā)現(xiàn)機制 325
7.3.2 Envoy架構(gòu) 330
7.4 Ingress 334
7.4.1 功能概述 334
7.4.2 Ingress的挑戰(zhàn) 336
7.5 Contour 337
7.5.1 架構(gòu) 338
7.5.2 高級功能 341
7.6 Istio 350
7.6.1 架構(gòu) 350
7.6.2 Sidecar 353
7.6.3 Ingress網(wǎng)關(guān) 360
7.6.4 金絲雀發(fā)布和流量灰度 363
7.6.5 安全保證 365
7.6.6 策略管理和遙測 368
7.6.7 數(shù)據(jù)平面加速 371
7.6.8 優(yōu)勢和挑戰(zhàn) 372
第8章 集群聯(lián)邦 374
8.1 集群聯(lián)邦概覽 377
8.1.1 集群聯(lián)邦設(shè)計 377
8.1.2 集群注冊中心 379
8.1.3 聯(lián)邦共享邏輯 380
8.1.4 聯(lián)邦類型配置 384
8.1.5 同步控制器 385
8.1.6 副本調(diào)度控制器 386
8.1.7 全局DNS服務(wù) 388
8.2 定義聯(lián)邦資源 390
8.2.1 集群資源 390
8.2.2 聯(lián)邦資源 391
8.2.3 定義聯(lián)邦資源 393
8.2.4 聯(lián)邦資源管理 397
8.3 聯(lián)邦應(yīng)用 398
8.3.1 聯(lián)邦應(yīng)用 400
8.3.2 聯(lián)邦應(yīng)用部署 401
8.3.3 聯(lián)邦應(yīng)用運維 402
8.3.4 集群聯(lián)邦的局限性與解決方案 409
第9章 邊緣計算 416
9.1 邊緣數(shù)據(jù)中心 417
9.1.1 智能域名服務(wù)(GSLB) 418
9.1.2 邊緣網(wǎng)絡(luò)接入 420
9.1.3 規(guī)劃邊緣計算應(yīng)用 428
9.2 KubeEdge 430
9.2.1 通信協(xié)議 432
9.2.2 CloudCore 440
9.2.3 EdgeCore 446
9.2.4 設(shè)備映射器 450
9.2.5 未來展望 455
第10章 應(yīng)用落地 456
10.1 應(yīng)用容器化 459
10.1.1 Dockerfile 459
10.1.2 容器化帶來的影響 463
10.2 應(yīng)用接入的最佳實踐 466
10.2.1 資源定義 466
10.2.2 靈活定義Pod 468
10.2.3 應(yīng)用配置 473
10.3 應(yīng)用管理 477
10.3.1 無狀態(tài)應(yīng)用 477
10.3.2 有狀態(tài)應(yīng)用 480
10.3.3 Operator 483
10.4 集群應(yīng)用運維 485
第11章 監(jiān)控和自動修復(fù) 488
11.1 指標監(jiān)控系統(tǒng) 490
11.1.1 監(jiān)控系統(tǒng)的構(gòu)建 491
11.1.2 Prometheus Operator 499
11.2 日志管理系統(tǒng) 501
11.3 關(guān)鍵指標定義 503
11.4 自動修復(fù)系統(tǒng) 505
11.4.1 Node Problem Detector 505
11.4.2 自動修復(fù)控制器 508
11.5 事件監(jiān)控系統(tǒng) 509
11.6 狀態(tài)監(jiān)控系統(tǒng) 511
第12章 DEVOPS 513
12.1 擁抱DevOps 515
12.2 自治跨職能團隊 520
12.3 敏捷開發(fā) 523
12.4 GitOps 529
12.5 質(zhì)量保證 533