Kubernetes 生產化實踐之路
內容描述
本書與kubernetes架構細節為引子,深入挖掘kubernetes生產化時間過程中所遇到的挑戰和方案細節,重點包括:1. 規劃和構建企業級的kubernetes高可用集群2. 如何解決kubernetes落地過程中與企業生態系統的整合,構建多租戶解決方案3. 基於kubernetes的邊緣計算4. 全方位的性能調優,節點,網絡,kubernetes組件5. 如何保證用戶應用的高可用,如何通過監控,告警,自動策略等保證高可用。在這些話題的基礎上,本書的核心目的是,通過以上角度,全方位分享eBay在4年多kubernetes生產化時間之路中的經驗,目標是使本書稱為kubernetes生產化的案例參考手冊。
目錄大綱
第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
作者介紹
孟凡傑
eBay資深架構師,負責Kubernetes在企業落地過程中的架構和開發工作,專注於網絡、多集群、服務治理和服務網格等方向。 Kubernetes社區貢獻者,曾參與社區集群聯邦的開發和服務控制器重構等工作。 CNUTCon全球運維大會、GIAC國際互聯網架構大會明星講師。
蘇菲
高級軟件工程師,Kubernetes專家。
負責管理eBay Kubernetes雲平台容器運行時及其周邊模塊,熟悉kubelet、CGroup、CNI等模塊。
主導eBay持續集成Pipeline的構建、容器運行時從Docker到Containerd的遷移、Minimal OS的管理等。
謝文利
eBay資深軟件工程師,Kubernetes社區貢獻者,經歷了從k8s 1.2開始的眾多版本在大規模雲環境下的升級和落地,輔助多個大型應用往Kubernetes上遷移,深度定制存儲插件調度等Kubernetes模塊,熱衷於解決容器化過程中碰到的各種問題,專注於Linux內核、性能優化、存儲、網絡等方向。
李建強
eBay資深軟件工程師,負責Kubernetes生產化過程中的架構和研發工作。
先後負責構建企業級高可用集群、鏡像安全保證(包括鏡像掃描及Kubernetes集成方案)、集群聯邦的構建與管理、雲原生多租戶的架構設計與落地等工作。