Kubernetes權(quán)威指南:從Docker到Kubernetes實踐全接觸(第6版)(上)
定 價:169 元
叢書名:博文視點云原生精品叢書
- 作者:龔正 等
- 出版時間:2024/7/1
- ISBN:9787121479274
- 出 版 社:電子工業(yè)出版社
- 中圖法分類:TP316.85-62
- 頁碼:748
- 紙張:
- 版次:01
- 開本:16開
本書是《Kubernetes權(quán)威指南:從Docker到Kubernetes實踐全接觸》(第6版)的上冊,總計9章,涵蓋了Kubernetes v1.29及之前版本的主要特性。第1章首先從一個簡單的示例開始,讓讀者通過動手實踐初步感受Kubernetes的強(qiáng)大;然后講解Kubernetes的概念、術(shù)語?紤]到Kubernetes的概念、術(shù)語繁多,所以從它們的用途及相互關(guān)系入手來進(jìn)行講解,以期初學(xué)者能快速、準(zhǔn)確、全面、深刻地理解這部分內(nèi)容。第2章圍繞Kubernetes的安裝和配置進(jìn)行講解。如果要在生產(chǎn)級應(yīng)用中部署Kubernetes,則建議讀者將本章內(nèi)容全部實踐戰(zhàn)一遍,否則可以選擇其中部分內(nèi)容進(jìn)行實踐。其中比較重要的是Kubernetes的命令行部分,對這部分操作得越熟練,后面進(jìn)行研發(fā)或運(yùn)維就越輕松。第3章全面、深入地講解了Pod的方方面面,其中非常有挑戰(zhàn)性的是Pod調(diào)度部分的內(nèi)容,這也是生產(chǎn)實踐中相當(dāng)實用的知識和技能。第4章圍繞Pod工作負(fù)載進(jìn)行講解,這些工作負(fù)載分別實現(xiàn)了無狀態(tài)服務(wù)、有狀態(tài)服務(wù)和批處理任務(wù)的不同需求。第5章圍繞Service進(jìn)行深入講解,涉及服務(wù)發(fā)現(xiàn)、DNS、IPv6及Ingress等高級特性。第6、7章全面、深入地講解Kubernetes的運(yùn)行機(jī)制和原理,涉及API Server、Controller、Scheduler、kubelet、kube-proxy等幾個核心組件的作用、原理和實現(xiàn)方式等,可以讓讀者加深對Kubernetes的整體認(rèn)知,使其在遇到問題時能更快地找到解決方案。第8、9章主要講解Kubernetes運(yùn)維方面的技能和知識,涉及集群多租戶模式下的資源管理方案、Pod的QoS管理、基于NUMA資源親和性的資源分配管理、Pod調(diào)度、故障排查等。
龔正HPE高級顧問,擁有二十多年IT從業(yè)經(jīng)驗,在云計算、大數(shù)據(jù)、大型企業(yè)級應(yīng)用等領(lǐng)域擁有豐富的咨詢規(guī)劃、架構(gòu)設(shè)計和實施經(jīng)驗,負(fù)責(zé)過多個大型云平臺的規(guī)劃和建設(shè),是電信、金融、互聯(lián)網(wǎng)等領(lǐng)域的資深行業(yè)專家,也是《Kubernetes權(quán)威指南:企業(yè)級容器云實戰(zhàn)》等書作者。吳治輝目前就職于領(lǐng)航磐云,擁有近20年軟件研發(fā)經(jīng)驗,專注于云原生、容器化、企業(yè)數(shù)字化轉(zhuǎn)型、AI賦能企業(yè)應(yīng)用領(lǐng)域的技術(shù)研究和產(chǎn)品研發(fā)。擁有豐富的大型項目架構(gòu)設(shè)計經(jīng)驗,是業(yè)界少有的具備很強(qiáng)編碼能力的資深架構(gòu)師,也是《ZeroC Ice權(quán)威指南》《架構(gòu)解密:從分布式到微服務(wù)》《Kubernetes權(quán)威指南:企業(yè)級容器云實戰(zhàn)》《區(qū)塊鏈輕松上手》等書作者。閆健勇HPE高級項目經(jīng)理、總架構(gòu)師,擁有近20年電信行業(yè)系統(tǒng)建設(shè)經(jīng)驗,主導(dǎo)了多項電信大型系統(tǒng)的架構(gòu)設(shè)計和管理,對于云計算和大數(shù)據(jù)在電信行業(yè)中的應(yīng)用擁有豐富的經(jīng)驗,也是《Kubernetes權(quán)威指南:企業(yè)級容器云實戰(zhàn)》等書作者。
第1章 Kubernetes入門 1
1.1 了解Kubernetes 2
1.2 了解Kubernetes中的資源對象 3
1.3 了解Kubernetes集群 5
1.3.1 Master 5
1.3.2 Node 5
1.4 了解Kubernetes應(yīng)用 11
1.4.1 Service與Pod 11
1.4.2 Label與Label Selector 15
1.4.3 Pod與Deployment 18
1.4.4 Service的ClusterIP地址 21
1.4.5 Service的外網(wǎng)訪問問題 24
1.4.6 有狀態(tài)應(yīng)用集群 28
1.4.7 批處理應(yīng)用 29
1.4.8 應(yīng)用的配置問題 31
1.4.9 應(yīng)用自動化運(yùn)維相關(guān)的重要對象 32
1.5 了解Kubernetes存儲 33
1.5.1 emptyDir 34
1.5.2 hostPath 35
1.5.3 公有云Volume 35
1.5.4 其他類型的Volume 36
1.5.5 動態(tài)存儲管理 36
1.6 了解Kubernetes安全 38
1.7 從一個簡單的示例開始 40
1.7.1 環(huán)境準(zhǔn)備 41
1.7.2 啟動MySQL服務(wù) 41
1.7.3 啟動Tomcat應(yīng)用 44
1.7.4 通過瀏覽器訪問網(wǎng)頁 46
第2章 Kubernetes安裝和配置指南 48
2.1 系統(tǒng)要求 49
2.2 通過kubeadm快速安裝Kubernetes集群 50
2.2.1 安裝kubeadm、kubelet和kubectl 50
2.2.2 修改kubeadm的默認(rèn)配置 51
2.2.3 下載Kubernetes相關(guān)鏡像 53
2.2.4 通過kubeadm init命令安裝Master 53
2.2.5 將新的Node加入集群 58
2.2.6 安裝CNI網(wǎng)絡(luò)插件 60
2.2.7 驗證Kubernetes集群是否正常工作 62
2.3 通過二進(jìn)制文件安裝Kubernetes集群 63
2.3.1 Master的高可用部署架構(gòu) 63
2.3.2 創(chuàng)建CA根證書 64
2.3.3 部署安全的etcd高可用集群 65
2.3.4 部署安全的Kubernetes Master高可用集群 70
2.3.5 部署各個Node的服務(wù) 87
2.4 Kubernetes集群的版本更新 91
2.4.1 以二進(jìn)制方式部署的Kubernetes集群的版本更新 91
2.4.2 以kubeadm方式部署的Kubernetes集群的版本更新 91
2.5 CRI詳解 94
2.5.1 CRI概述 94
2.5.2 CRI的主要組件 94
2.5.3 Pod和容器的生命周期管理 95
2.5.4 面向容器級別的設(shè)計思路 96
2.6 kubectl用法詳解 97
2.6.1 kubectl用法概述 97
2.6.2 kubectl子命令詳解 98
2.6.3 kubectl可操作的資源對象詳解 101
2.6.4 kubectl的公共參數(shù)說明 103
2.6.5 kubectl格式化輸出 105
2.6.6 kubectl的日志輸出級別 106
2.6.7 常見的kubectl操作示例 107
第3章 深入掌握Pod 112
3.1 Pod定義詳解 113
3.2 Pod的基本用法 118
3.3 靜態(tài)Pod 124
3.4 Pod容器共享Volume 126
3.5 Pod的配置管理 128
3.5.1 ConfigMap概述 128
3.5.2 創(chuàng)建ConfigMap 129
3.5.3 在Pod中使用ConfigMap 144
3.5.4 ConfigMap的可選設(shè)置 151
3.5.5 使用ConfigMap時的限制條件 153
3.6 在容器內(nèi)獲取Pod信息(Downward API) 153
3.6.1 環(huán)境變量方式 154
3.6.2 Volume掛載方式 158
3.6.3 Downward API支持設(shè)置的Pod和Container信息 162
3.7 Pod的生命周期管理 164
3.7.1 Pod的階段(Phase) 164
3.7.2 Pod的狀況(Condition) 165
3.7.3 容器的狀態(tài)(State) 170
3.7.4 Pod的重啟策略(RestartPolicy) 170
3.7.5 Pod的終止和垃圾清理 171
3.8 容器的探針和健康檢查機(jī)制 173
3.9 初始化容器(Init Container) 181
3.9.1 初始化容器概述 181
3.9.2 初始化容器示例 183
3.9.3 使用初始化容器時的注意事項 188
3.9.4 將初始化容器作為長時間運(yùn)行的邊車容器 188
第4章 Pod工作負(fù)載詳解 193
4.1 Pod的工作負(fù)載管理機(jī)制概述 194
4.2 Deployment:面向無狀態(tài)應(yīng)用的Pod副本集管理 196
4.2.1 Deployment提供的管理功能 197
4.2.2 Deployment的配置信息 199
4.2.3 Deployment的更新機(jī)制 200
4.2.4 Deployment的回滾 206
4.2.5 Deployment部署的暫停和恢復(fù) 209
4.2.6 Deployment的生命周期 211
4.3 DaemonSet:在每個Node上僅運(yùn)行一個Pod 213
4.3.1 DaemonSet概述 213
4.3.2 DaemonSet的配置信息 215
4.3.3 DaemonSet的更新策略 215
4.3.4 DaemonSet的回滾 218
4.4 StatefulSet:面向有狀態(tài)應(yīng)用的Pod副本集管理 220
4.4.1 StatefulSet的主要配置和工作機(jī)制 221
4.4.2 StatefulSet的Pod水平擴(kuò)縮容機(jī)制 228
4.4.3 StatefulSet的更新策略 229
4.4.4 StatefulSet的Pod管理策略 232
4.4.5 StatefulSet的PVC存儲保留策略 235
4.4.6 使用StatefulSet搭建MongoDB集群 236
4.5 Pod水平擴(kuò)縮容機(jī)制 247
4.5.1 手動擴(kuò)縮容機(jī)制 247
4.5.2 自動擴(kuò)縮容機(jī)制 249
4.6 Job:批處理任務(wù) 274
4.6.1 Job的主要配置和工作機(jī)制 275
4.6.2 Job的并行處理機(jī)制和常用模式 279
4.6.3 Pod失效時的處理機(jī)制 289
4.6.4 Job的終止與清理機(jī)制 299
4.6.5 Job的掛起與恢復(fù) 303
4.7 CronJob:定時任務(wù) 306
4.7.1 CronJob的定時表達(dá)式 307
4.7.2 編寫一個CronJob配置文件 308
4.7.3 CronJob工作機(jī)制的不足之處 311
第5章 深入掌握Service 312
5.1 Service定義詳解 313
5.2 Service的概念和原理 315
5.2.1 Service和Endpoint概述 315
5.2.2 Service的負(fù)載均衡機(jī)制 320
5.2.3 Service的多端口設(shè)置 325
5.2.4 將外部服務(wù)定義為Service 326
5.2.5 Service的類型 327
5.2.6 Headless Service 335
5.2.7 為服務(wù)設(shè)置外部IP地址 338
5.2.8 Service支持的網(wǎng)絡(luò)協(xié)議 338
5.2.9 Kubernetes的服務(wù)發(fā)現(xiàn)機(jī)制 340
5.2.10 端點分片 342
5.2.11 拓?fù)涓兄酚蓹C(jī)制 347
5.3 DNS服務(wù)搭建和配置指南 350
5.3.1 修改每個Node上kubelet的DNS啟動參數(shù) 352
5.3.2 部署CoreDNS服務(wù) 352
5.3.3 服務(wù)名的DNS解析 356
5.3.4 CoreDNS的配置說明 358
5.4 Node本地DNS緩存服務(wù)搭建和配置指南 360
5.5 Service和Pod的DNS域名相關(guān)特性 367
5.5.1 Service的DNS域名 368
5.5.2 Pod的DNS域名 370
5.5.3 Pod自定義hostname和subdomain 371
5.5.4 FQDN格式的Pod主機(jī)名設(shè)置 374
5.5.5 Pod的DNS策略 375
5.5.6 Pod中的自定義DNS配置 376
5.5.7 Windows Node的DNS解析機(jī)制說明 377
5.6 Ingress 7層路由機(jī)制 378
5.6.1 一個完整的例子(Ingress Controller+Ingress策略+客戶端訪問) 379
5.6.2 Ingress資源對象詳解 390
5.6.3 Ingress策略配置詳解 397
5.6.4 Ingress的TLS安全設(shè)置 402
5.6.5 Ingress的繼任者——Gateway API簡介 408
5.7 Kubernetes對IPv4和IPv6雙棧功能的支持 411
5.7.1 Kubernetes集群啟用IPv4和IPv6雙棧功能 411
5.7.2 Pod雙棧IP地址配置 414
5.7.3 Service雙棧IP地址配置 417
第6章 Master核心組件的運(yùn)行機(jī)制 423
6.1 Kubernetes架構(gòu)解析 424
6.1.1 以API Server為中心的架構(gòu) 424
6.1.2 全自動的資源管控能力 426
6.1.3 以開放為基礎(chǔ)的演進(jìn)思路 431
6.1.4 擁抱新技術(shù) 433
6.1.5 安全至上 434
6.2 API Server原理解析 437
6.2.1 API Server概述 438
6.2.2 API Server架構(gòu)解析 444
6.2.3 獨(dú)特的Kubernetes Proxy API 448
6.2.4 集群功能模塊之間的通信 450
6.2.5 API Server網(wǎng)絡(luò)隔離的設(shè)計 452
6.3 Controller Manager原理解析 454
6.3.1 Deployment Controller 457
6.3.2 Node Controller 458
6.3.3 ResourceQuota Controller 461
6.3.4 Namespace Controller 463
6.3.5 Endpoint Controller 464
6.4 Scheduler原理解析 465
6.4.1 Scheduler的調(diào)度流程 466
6.4.2 Scheduler Framework 468
6.4.3 Scheduling Profiles 472
6.4.4 深入分析搶占式調(diào)度 473
第7章 Node核心組件的運(yùn)行機(jī)制 480
7.1 kubelet運(yùn)行機(jī)制解析 481
7.1.1 資源管理 482
7.1.2 Pod管理 517
7.1.3 性能指標(biāo)API 524
7.1.4 容器運(yùn)行時管理 527
7.2 kube-proxy運(yùn)行機(jī)制解析 533
7.2.1 第一代Proxy 533
7.2.2 第二代Proxy 535
7.2.3 第三代Proxy 536
7.3 Kubernetes中的垃圾回收機(jī)制 537
7.3.1 Pod對象的垃圾回收 537
7.3.2 Job對象的垃圾回收 538
7.3.3 無主對象的垃圾回收 539
7.3.4 容器和鏡像的垃圾回收 540
7.3.5 PV對象的垃圾回收 540
7.3.6 Node與Node Lease對象的垃圾回收 542
第8章 Kubernetes運(yùn)維管理基礎(chǔ) 544
8.1 基礎(chǔ)集群運(yùn)維 545
8.1.1 常用運(yùn)維技巧 545
8.1.2 Node的運(yùn)維管理 552
8.1.3 PodDisruptionBudget——出現(xiàn)干擾時的Pod保護(hù)機(jī)制 557
8.1.4 Pod中的多個容器共享進(jìn)程命名空間 563
8.1.5 使用CEL校驗數(shù)據(jù) 566
8.2 kustomize的基礎(chǔ)操作 570
8.2.1 kustomize概述 570
8.2.2 kustomize的常見例子 571
8.2.3 kustomization的高級用法 574
8.3 Helm的基礎(chǔ)操作 578
8.3.1 Helm——應(yīng)用包管理 578
8.3.2 Helm——Chart倉庫 581
8.3.3 Helm——部署應(yīng)用 584
8.3.4 Helm——應(yīng)用更新和回滾 588
8.3.5 Helm——卸載應(yīng)用 591
8.4 集群監(jiān)控 592
8.4.1 Kubernetes核心組件的性能監(jiān)控 592
8.4.2 Metrics Server實踐 595
8.4.3 Prometheus性能監(jiān)控平臺實踐 598
8.4.4 Kubernetes日志管理實踐 604
8.4.5 使用Dashboard監(jiān)控集群資源狀態(tài)和性能 634
第9章 Kubernetes運(yùn)維管理進(jìn)階 641
9.1 多租戶計算資源管理實踐 642
9.1.1 集群計算資源的規(guī)劃 642
9.1.2 多租戶資源管理實踐 650
9.1.3 Pod的QoS管理實踐 665
9.2 基于NUMA親和性的資源分配管理 669
9.2.1 CPU Manger的配置 670
9.2.2 Memory Manager的配置 674
9.2.3 Topology Manager的配置 675
9.3 Pod的調(diào)度管理實踐指南 677
9.3.1 基于Node Label的調(diào)度策略 677
9.3.2 Node親和性調(diào)度策略 679
9.3.3 Pod間的親和性與反親和性調(diào)度策略 683
9.3.4 指定Node名稱的定向調(diào)度策略 690
9.3.5 Taint和Toleration(污點和容忍度)的調(diào)度策略 691
9.3.6 Pod Priority Preemption:Pod優(yōu)先級和搶占調(diào)度策略 696
9.3.7 多調(diào)度器管理 700
9.3.8 Pod拓?fù)浞植技s束(Topology Spread Constraints)調(diào)度策略 704
9.4 故障排查指南 713
9.4.1 集群基礎(chǔ)故障排查指南 713
9.4.2 應(yīng)用故障排查指南 720
9.4.3 常見問題指南 725
9.4.4 尋求幫助 730