Kubernetes進(jìn)階實(shí)戰(zhàn)(第2版)
定 價(jià):149 元
叢書名:云計(jì)算與虛擬化技術(shù)叢書
- 作者:馬永亮
- 出版時(shí)間:2021/3/1
- ISBN:9787111671862
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP316.85
- 頁碼:664
- 紙張:
- 版次:
- 開本:16開
全書分為5個(gè)部分。第壹部分介紹Kubernetes系統(tǒng)基礎(chǔ)架構(gòu)及核心概述,并提供一個(gè)Kubernetes快速部署和應(yīng)用的入門指南。第二部分剖析分Kubernetes系統(tǒng)的應(yīng)用編排核心組件,對(duì)Pod、Controller、Service和Ingress、存儲(chǔ)卷和應(yīng)用配置等進(jìn)行深入介紹。第三部分介紹安全相關(guān)的話題,主要涉及認(rèn)證、授權(quán)、準(zhǔn)入控制、網(wǎng)絡(luò)模型和網(wǎng)絡(luò)策略等話題。第四部分介紹Kubernetes系統(tǒng)高級(jí)話題及系統(tǒng)擴(kuò)展,包括調(diào)度策略、CRD和Operator、資源指標(biāo)與系統(tǒng)監(jiān)控及應(yīng)用管理器等。第五部分介紹基于Kubernetes的服務(wù)治理與服務(wù)網(wǎng)絡(luò),涉及數(shù)據(jù)平面組件Envoy、Istio架構(gòu)、部署和應(yīng)用案例等話題。
前言
第一部分 系統(tǒng)基礎(chǔ)
第1章 Kubernetes系統(tǒng)基礎(chǔ)2
1.1 容器與容器編排系統(tǒng)3
1.1.1 Docker容器技術(shù)3
1.1.2 OCI與容器運(yùn)行時(shí)5
1.1.3 為什么需要容器編排系統(tǒng)7
1.2 Kubernetes基礎(chǔ)8
1.2.1 Kubernetes集群概述9
1.2.2 Kubernetes集群架構(gòu)11
1.3 應(yīng)用的運(yùn)行與互聯(lián)互通14
1.3.1 Pod與Service15
1.3.2 Pod控制器16
1.3.3 Kubernetes網(wǎng)絡(luò)基礎(chǔ)18
1.3.4 部署并訪問應(yīng)用20
1.4 簡析Kubernetes生態(tài)系統(tǒng)21
1.5 本章小結(jié)23
第2章 Kubernetes快速入門24
2.1 利用kubeadm部署Kubernetes集群24
2.1.1 kubeadm部署工具25
2.1.2 集群組件運(yùn)行模式26
2.1.3 kubeadm init工作流程28
2.1.4 kubeadm join工作流程31
2.1.5 kubeadm配置文件33
2.2 部署分布式Kubernetes集群34
2.2.1 準(zhǔn)備基礎(chǔ)環(huán)境34
2.2.2 單控制平面集群38
2.3 kubectl命令與資源管理43
2.3.1 資源管理的操作44
2.3.2 kubectl的命令格式45
2.3.3 kubectl命令常用操作示例47
2.3.4 kubectl插件50
2.4 命令式應(yīng)用編排52
2.4.1 應(yīng)用編排53
2.4.2 部署Service對(duì)象56
2.4.3 擴(kuò)容與縮容58
2.4.4 修改與刪除對(duì)象60
2.5 本章小結(jié)61
第二部分 核心資源
第3章 Kubernetes資源管理64
3.1 資源對(duì)象與API群組64
3.1.1 Kubernetes的資源對(duì)象65
3.1.2 資源及其在API中的組織形式68
3.1.3 訪問Kubernetes RESTful API70
3.2 對(duì)象類資源配置規(guī)范72
3.2.1 定義資源對(duì)象73
3.2.2 對(duì)象元數(shù)據(jù)74
3.2.3 資源的期望狀態(tài)75
3.2.4 獲取資源配置清單格式文檔75
3.2.5 資源對(duì)象管理方式77
3.3 名稱空間79
3.3.1 名稱空間的作用80
3.3.2 管理Namespace資源81
3.4 節(jié)點(diǎn)資源86
3.4.1 節(jié)點(diǎn)心跳與節(jié)點(diǎn)租約86
3.4.2 節(jié)點(diǎn)狀態(tài)87
3.4.3 手動(dòng)管理Node資源與節(jié)點(diǎn)89
3.5 標(biāo)簽與標(biāo)簽選擇器91
3.5.1 資源標(biāo)簽91
3.5.2 標(biāo)簽選擇器93
3.6 資源注解94
3.7 本章小結(jié)96
第4章 應(yīng)用部署、運(yùn)行與管理97
4.1 應(yīng)用容器與Pod資源97
4.1.1 Pod資源基礎(chǔ)97
4.1.2 容器設(shè)計(jì)模式99
4.1.3 Pod的生命周期104
4.2 在Pod中運(yùn)行應(yīng)用105
4.2.1 使用單容器Pod資源106
4.2.2 獲取Pod與容器狀態(tài)詳情107
4.2.3 自定義容器應(yīng)用與參數(shù)110
4.2.4 容器環(huán)境變量111
4.2.5 Pod的創(chuàng)建與刪除過程112
4.3 暴露容器服務(wù)115
4.3.1 其他容器端口映射115
4.3.2 配置Pod使用節(jié)點(diǎn)網(wǎng)絡(luò)117
4.4 容器安全上下文118
4.4.1 配置格式速覽119
4.4.2 管理容器進(jìn)程的運(yùn)行身份120
4.4.3 管理容器的內(nèi)核功能121
4.4.4 特權(quán)模式容器123
4.4.5 在Pod上使用sysctl124
4.5 容器應(yīng)用的管理接口125
4.5.1 健康狀態(tài)監(jiān)測接口126
4.5.2 容器存活狀態(tài)檢測127
4.5.3 Pod的重啟策略133
4.5.4 容器就緒狀態(tài)檢測133
4.5.5 容器生命周期135
4.6 多容器Pod138
4.6.1 初始化容器138
4.6.2 Sidecar容器140
4.7 資源需求與資源限制142
4.7.1 資源需求與限制142
4.7.2 容器資源需求143
4.7.3 容器資源限制145
4.7.4 容器可見資源146
4.7.5 Pod服務(wù)質(zhì)量類別147
4.8 綜合應(yīng)用案例149
4.9 本章小結(jié)150
第5章 存儲(chǔ)卷與數(shù)據(jù)持久化152
5.1 存儲(chǔ)卷基礎(chǔ)152
5.1.1 存儲(chǔ)卷概述152
5.1.2 配置Pod存儲(chǔ)卷154
5.2 臨時(shí)存儲(chǔ)卷156
5.2.1 emptyDir存儲(chǔ)卷156
5.2.2 gitRepo存儲(chǔ)卷158
5.3 hostPath存儲(chǔ)卷159
5.4 網(wǎng)絡(luò)存儲(chǔ)卷161
5.4.1 NFS存儲(chǔ)卷162
5.4.2 RBD存儲(chǔ)卷164
5.4.3 CephFS存儲(chǔ)卷167
5.4.4 GlusterFS存儲(chǔ)卷169
5.5 持久存儲(chǔ)卷171
5.5.1 PV與PVC基礎(chǔ)172
5.5.2 PV的生命周期173
5.5.3 靜態(tài)PV資源175
5.5.4 PVC資源178
5.5.5 在Pod中使用PVC181
5.5.6 存儲(chǔ)類181
5.6 容器存儲(chǔ)接口CSI187
5.6.1 CSI基礎(chǔ)187
5.6.2 Longhorn存儲(chǔ)系統(tǒng)189
5.7 本章小結(jié)194
第6章 應(yīng)用配置195
6.1 容器化應(yīng)用配置195
6.1.1 容器化應(yīng)用配置的常見方式195
6.1.2 容器環(huán)境變量197
6.2 應(yīng)用程序配置管理與ConfigMap資源199
6.2.1 創(chuàng)建ConfigMap對(duì)象200
6.2.2 通過環(huán)境變量引用ConfigMap鍵值203
6.2.3 ConfigMap存儲(chǔ)卷206
6.2.4 容器應(yīng)用重載新配置211
6.3 Secret資源:向容器注入配置信息213
6.3.1 創(chuàng)建Secret資源213
6.3.2 使用Secret資源219
6.4 應(yīng)用Downward API存儲(chǔ)卷配置信息223
6.4.1 環(huán)境變量式元數(shù)據(jù)注入223
6.4.2 存儲(chǔ)卷式元數(shù)據(jù)注入226
6.5 本章小結(jié)228
第7章 Service與服務(wù)發(fā)現(xiàn)229
7.1 Service資源及其實(shí)現(xiàn)模型229
7.1.1 Service資源概述229
7.1.2 kube-proxy代理模型230
7.1.3 Service資源類型233
7.2 應(yīng)用Service資源235
7.2.1 應(yīng)用ClusterIP Service資源236
7.2.2 應(yīng)用NodePort Service資源238
7.2.3 應(yīng)用LoadBalancer Service資源240
7.2.4 外部IP241
7.3 Service與Endpoint資源242
7.3.1 Endpoint與容器探針243
7.3.2 自定義Endpoint資源245
7.4 深入理解Service資源247
7.4.1 iptables代理模型247
7.4.2 ipvs代理模型255
7.5 Kubernetes服務(wù)發(fā)現(xiàn)258
7.5.1 服務(wù)發(fā)現(xiàn)概述258
7.5.2 基于環(huán)境變量的服務(wù)發(fā)現(xiàn)259
7.5.3 基于DNS的服務(wù)發(fā)現(xiàn)260
7.5.4 Pod的DNS解析策略與配置263
7.5.5 配置CoreDNS264
7.6 Headless Service資源解析266
7.6.1 ExternalName Service266
7.6.2 Headless Service267
7.7 本章小結(jié)270
第8章 應(yīng)用編排與管理271
8.1 Kubernetes控制器基礎(chǔ)271
8.1.1 控制器與Pod資源272
8.1.2 Pod模板資源275
8.2 ReplicaSet控制器276
8.2.1 功能分析276
8.2.2 ReplicaSet基礎(chǔ)應(yīng)用277
8.2.3 應(yīng)用更新與回滾280
8.2.4 應(yīng)用擴(kuò)容與縮容285
8.2.5 高級(jí)更新策略286
8.3 Deployment控制器291
8.3.1 Deployment基礎(chǔ)應(yīng)用291
8.3.2 Deployment更新策略294
8.3.3 應(yīng)用更新與回滾296
8.3.4 金絲雀發(fā)布298
8.4 StatefulSet控制器300
8.4.1 功能分析300
8.4.2 StatefulSet基礎(chǔ)應(yīng)用302
8.4.3 擴(kuò)縮容與滾動(dòng)更新306
8.4.4 StatefulSet的局限性309
8.5 DaemonSet控制器310
8.5.1 DaemonSet資源基礎(chǔ)應(yīng)用311
8.5.2 DaemonSet更新策略313
8.6 Job控制器314
8.6.1 Job資源基礎(chǔ)應(yīng)用315
8.6.2 并行式Job與擴(kuò)容機(jī)制318
8.7 CronJob控制器319
8.8 Pod中斷預(yù)算321
8.9 本章小結(jié)324
第三部分 安全
第9章 認(rèn)證、授權(quán)與準(zhǔn)入控制326
9.1 Kubernetes訪問控制326
9.1.1 用戶賬戶與用戶組327
9.1.2 認(rèn)證、授權(quán)與準(zhǔn)入控制基礎(chǔ)328
9.1.3 測試使用API Server的訪問控制機(jī)制332
9.2 ServiceAccount及認(rèn)證336
9.2.1 ServiceAccount自動(dòng)化336
9.2.2 ServiceAccount基礎(chǔ)應(yīng)用338
9.2.3 Pod資源上的服務(wù)賬戶340
9.3 X509數(shù)字證書認(rèn)證342
9.3.1 Kubernetes的X509數(shù)字證書認(rèn)證體系343
9.3.2 TLS Bootstrapping機(jī)制347
9.4 kubeconfig配置文件348
9.4.1 kubeconfig文件格式348
9.4.2 自定義kubeconfig文件350
9.4.3 X509數(shù)字證書身份憑據(jù)353
9.4.4 多kubeconfig文件與合并354
9.5 基于角色的訪問控制:RBAC355
9.5.1 RBAC授權(quán)模型356
9.5.2 Role與ClusterRole358
9.5.3 RoleBinding與ClusterRole-Binding361
9.5.4 聚合型ClusterRole364
9.5.5 面向用戶的內(nèi)置ClusterRole366
9.6 認(rèn)證與權(quán)限應(yīng)用案例:Dashboard368
9.6.1 部署Dashboard368
9.6.2 認(rèn)證與授權(quán)370
9.7 準(zhǔn)入控制器372
9.7.1 準(zhǔn)入控制器概述372
9.7.2 LimitRange373
9.7.3 ResourceQuota377
9.7.4 PodSecurityPolicy379
9.8 本章小結(jié)386
第10章 網(wǎng)絡(luò)模型與網(wǎng)絡(luò)策略387
10.1 容器網(wǎng)絡(luò)模型387
10.1.1 容器網(wǎng)絡(luò)通信模式387
10.1.2 CNI網(wǎng)絡(luò)插件基礎(chǔ)391
10.1.3 Overlay網(wǎng)絡(luò)模型394
10.1.4 Underlay網(wǎng)絡(luò)模型396
10.1.5 配置CNI插件400
10.1.6 CNI插件與選型404
10.2 Flannel網(wǎng)絡(luò)插件406
10.2.1 Flannel配置基礎(chǔ)406
10.2.2 VXLAN后端408
10.2.3 直接路由412
10.2.4 host-gw后端414
10.3 Calico網(wǎng)絡(luò)插件416
10.3.1 Calico架構(gòu)417
10.3.2 Calico配置基礎(chǔ)419
10.3.3 IPIP隧道網(wǎng)絡(luò)421
10.3.4 客戶端工具calicoctl424
10.3.5 BGP網(wǎng)絡(luò)與BGP Reflector426
10.4 網(wǎng)絡(luò)策略430
10.4.1 網(wǎng)絡(luò)策略與配置基礎(chǔ)431
10.4.2 管控入站流量433
10.4.3 管控出站流量436
10.4.4 隔離名稱空間438
10.4.5 Calico的網(wǎng)絡(luò)策略439
10.5 本章小結(jié)441
第四部分 進(jìn)階
第11章 Pod資源調(diào)度444
11.1 Kubernetes調(diào)度器444
11.1.1 調(diào)度器基礎(chǔ)445
11.1.2 經(jīng)典調(diào)度策略449
11.1.3 調(diào)度器插件454
11.1.4 配置調(diào)度器456
11.2 節(jié)點(diǎn)親和調(diào)度461
11.2.1 Pod節(jié)點(diǎn)選擇器462
11.2.2 強(qiáng)制節(jié)點(diǎn)親和463
11.2.3 首選節(jié)點(diǎn)親和465
11.3 Pod親和調(diào)度467
11.3.1 位置拓?fù)?68
11.3.2 Pod間的強(qiáng)制親和469
11.3.3 Pod間的首選親和471
11.3.4 Pod間的反親和關(guān)系473
11.4 節(jié)點(diǎn)污點(diǎn)與Pod容忍度475
11.4.1 污點(diǎn)與容忍度基礎(chǔ)概念475
11.4.2 定義污點(diǎn)477
11.4.3 定義容忍度478
11.4.4 問題節(jié)點(diǎn)標(biāo)識(shí)479
11.5 拓?fù)浞植际秸{(diào)度480
11.6 Pod優(yōu)先級(jí)與搶占481
11.7 本章小結(jié)483
第12章 Kubernetes系統(tǒng)擴(kuò)展484
12.1 CRD484
12.1.1 CRD 基礎(chǔ)應(yīng)用485
12.1.2 打印字段與資源類別488
12.1.3 CRD子資源489
12.1.4 CRD v1beta1版本491
12.2 自定義API Server492
12.2.1 自定義API Server運(yùn)行機(jī)制493
12.2.2 APIService資源與應(yīng)用494
12.3 控制器與Operator496
12.3.1 自定義控制器的工作機(jī)制496
12.3.2 Operator與簡單應(yīng)用示例500
12.4 Kubernetes集群高可用503
12.4.1 etcd高可用與控制平面拓?fù)?03
12.4.2 Controller Manager與Scheduler高可用505
12.4.3 部署高可用控制平面506
12.5 本章小結(jié)508
第13章 Ingress與服務(wù)發(fā)布509
13.1 Ingress資源509
13.1.1 Ingress與Ingress控制器流量轉(zhuǎn)發(fā)509
13.1.2 Ingress資源規(guī)范511
13.1.3 Ingress資源類型515
13.2 Ingress控制器部署與應(yīng)用517
13.2.1 Ingress Nginx部署與測試518
13.2.2 配置Ingress Nginx522
13.2.3 Ingress資源案例:發(fā)布Dashboard524
13.3 Contour控制器525
13.3.1 Envoy數(shù)據(jù)平面525
13.3.2 部署Contour529
13.3.3 HTTPProxy基礎(chǔ)532
13.3.4 HTTPProxy高級(jí)路由533
13.3.5 HTTPProxy服務(wù)韌性539
13.3.6 TCP代理542
13.4 本章小結(jié)544
第五部分 必備生態(tài)組件
第14章 應(yīng)用管理546
14.1 Kustomize聲明式應(yīng)用管理546
14.1.1 聲明式應(yīng)用管理基本用法547
14.1.2 應(yīng)用配置分解549
14.1.3 配置生成器551
14.1.4 資源補(bǔ)丁553
14.2 Helm基礎(chǔ)應(yīng)用556
14.2.1 Helm基礎(chǔ)556
14.2.2 Helm 3 快速入門558
14.3 Helm Chart562
14.3.1 Chart包結(jié)構(gòu)與描述文件562
14.3.2 Chart中的依賴關(guān)系564
14.3.3 模板與值565
14.3.4 其他需要說明的話題567
14.3.5 自定義Chart簡單示例568
14.4 Helm實(shí)踐:部署Harbor注冊(cè)中心575
14.4.1 部署方案與配置方式577
14.4.2 Harbor部署與測試582
14.5 本章小結(jié)585
第15章 資源指標(biāo)與集群監(jiān)控586
15.1 資源監(jiān)控與資源指標(biāo)586
15.1.1 資源監(jiān)控與Heapster587
15.1.2 新一代監(jiān)控體系與指標(biāo)系統(tǒng)589
15.2 資源指標(biāo)與應(yīng)用591
15.2.1 部署Metrics Server591
15.2.2 顯示資源使用信息595
15.3 自定義指標(biāo)與Prometheus596
15.3.1 Prometheus基礎(chǔ)597
15.3.2 Prometheus核心概念601
15.3.3 Prometheus查詢語言604
15.3.4 監(jiān)控Kubernetes606
15.3.5 自定義指標(biāo)適配器616
15.4 自動(dòng)彈性縮放621
15.4.1 HPA控制器概述622
15.4.2 HPA v1控制器622
15.4.3 HPA v2控制器624
15.5 本章小結(jié)629
第16章 集群日志系統(tǒng)630
16.1 集群日志系統(tǒng)基礎(chǔ)630
16.1.1 日志系統(tǒng)概述631
16.1.2 Elasticsearch基礎(chǔ)633
16.2 EFK日志管理系統(tǒng)636
16.2.1 Elasticsearch集群637
16.2.2 日志采集器Fluent Bit642
16.2.3 可視化組件Kibana647
16.3 本章小結(jié)650