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的強大;然后講解Kubernetes的概念、術(shù)語?紤]到Kubernetes的概念、術(shù)語繁多,所以從它們的用途及相互關(guān)系入手來進行講解,以期初學(xué)者能快速、準(zhǔn)確、全面、深刻地理解這部分內(nèi)容。第2章圍繞Kubernetes的安裝和配置進行講解。如果要在生產(chǎn)級應(yīng)用中部署Kubernetes,則建議讀者將本章內(nèi)容全部實踐戰(zhàn)一遍,否則可以選擇其中部分內(nèi)容進行實踐。其中比較重要的是Kubernetes的命令行部分,對這部分操作得越熟練,后面進行研發(fā)或運維就越輕松。第3章全面、深入地講解了Pod的方方面面,其中非常有挑戰(zhàn)性的是Pod調(diào)度部分的內(nèi)容,這也是生產(chǎn)實踐中相當(dāng)實用的知識和技能。第4章圍繞Pod工作負載進行講解,這些工作負載分別實現(xiàn)了無狀態(tài)服務(wù)、有狀態(tài)服務(wù)和批處理任務(wù)的不同需求。第5章圍繞Service進行深入講解,涉及服務(wù)發(fā)現(xiàn)、DNS、IPv6及Ingress等高級特性。第6、7章全面、深入地講解Kubernetes的運行機制和原理,涉及API Server、Controller、Scheduler、kubelet、kube-proxy等幾個核心組件的作用、原理和實現(xiàn)方式等,可以讓讀者加深對Kubernetes的整體認知,使其在遇到問題時能更快地找到解決方案。第8、9章主要講解Kubernetes運維方面的技能和知識,涉及集群多租戶模式下的資源管理方案、Pod的QoS管理、基于NUMA資源親和性的資源分配管理、Pod調(diào)度、故障排查等。
龔正HPE高級顧問,擁有二十多年IT從業(yè)經(jīng)驗,在云計算、大數(shù)據(jù)、大型企業(yè)級應(yīng)用等領(lǐng)域擁有豐富的咨詢規(guī)劃、架構(gòu)設(shè)計和實施經(jīng)驗,負責(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è)界少有的具備很強編碼能力的資深架構(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)用自動化運維相關(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的默認配置 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 通過二進制文件安裝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 以二進制方式部署的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 容器的探針和健康檢查機制 173
3.9 初始化容器(Init Container) 181
3.9.1 初始化容器概述 181
3.9.2 初始化容器示例 183
3.9.3 使用初始化容器時的注意事項 188
3.9.4 將初始化容器作為長時間運行的邊車容器 188
第4章 Pod工作負載詳解 193
4.1 Pod的工作負載管理機制概述 194
4.2 Deployment:面向無狀態(tài)應(yīng)用的Pod副本集管理 196
4.2.1 Deployment提供的管理功能 197
4.2.2 Deployment的配置信息 199
4.2.3 Deployment的更新機制 200
4.2.4 Deployment的回滾 206
4.2.5 Deployment部署的暫停和恢復(fù) 209
4.2.6 Deployment的生命周期 211
4.3 DaemonSet:在每個Node上僅運行一個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的主要配置和工作機制 221
4.4.2 StatefulSet的Pod水平擴縮容機制 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水平擴縮容機制 247
4.5.1 手動擴縮容機制 247
4.5.2 自動擴縮容機制 249
4.6 Job:批處理任務(wù) 274
4.6.1 Job的主要配置和工作機制 275
4.6.2 Job的并行處理機制和常用模式 279
4.6.3 Pod失效時的處理機制 289
4.6.4 Job的終止與清理機制 299
4.6.5 Job的掛起與恢復(fù) 303
4.7 CronJob:定時任務(wù) 306
4.7.1 CronJob的定時表達式 307
4.7.2 編寫一個CronJob配置文件 308
4.7.3 CronJob工作機制的不足之處 311
第5章 深入掌握Service 312
5.1 Service定義詳解 313
5.2 Service的概念和原理 315
5.2.1 Service和Endpoint概述 315
5.2.2 Service的負載均衡機制 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)機制 340
5.2.10 端點分片 342
5.2.11 拓撲感知路由機制 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主機名設(shè)置 374
5.5.5 Pod的DNS策略 375
5.5.6 Pod中的自定義DNS配置 376
5.5.7 Windows Node的DNS解析機制說明 377
5.6 Ingress 7層路由機制 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核心組件的運行機制 423
6.1 Kubernetes架構(gòu)解析 424
6.1.1 以API Server為中心的架構(gòu) 424
6.1.2 全自動的資源管控能力 426
6.1.3 以開放為基礎(chǔ)的演進思路 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 獨特的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核心組件的運行機制 480
7.1 kubelet運行機制解析 481
7.1.1 資源管理 482
7.1.2 Pod管理 517
7.1.3 性能指標(biāo)API 524
7.1.4 容器運行時管理 527
7.2 kube-proxy運行機制解析 533
7.2.1 第一代Proxy 533
7.2.2 第二代Proxy 535
7.2.3 第三代Proxy 536
7.3 Kubernetes中的垃圾回收機制 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運維管理基礎(chǔ) 544
8.1 基礎(chǔ)集群運維 545
8.1.1 常用運維技巧 545
8.1.2 Node的運維管理 552
8.1.3 PodDisruptionBudget——出現(xiàn)干擾時的Pod保護機制 557
8.1.4 Pod中的多個容器共享進程命名空間 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運維管理進階 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拓撲分布約束(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