Kubernetes權威指南:從Docker到Kubernetes實踐全接觸(第6版)(上)

龔正 等

  • 出版商: 電子工業
  • 出版日期: 2024-07-01
  • 定價: $1,014
  • 售價: 8.5$862
  • 語言: 簡體中文
  • 頁數: 748
  • ISBN: 7121479273
  • ISBN-13: 9787121479274
  • 相關分類: DockerKubernetes
  • 尚未上市,歡迎預購

相關主題

商品描述

本書是《Kubernetes權威指南:從Docker到Kubernetes實踐全接觸》(第6版)的上冊,總計9章,涵蓋了Kubernetes v1.29及之前版本的主要特性。第1章首先從一個簡單的示例開始,讓讀者通過動手實踐初步感受Kubernetes的強大;然後講解Kubernetes的概念、術語。考慮到Kubernetes的概念、術語繁多,所以從它們的用途及相互關系入手來進行講解,以期初學者能快速、準確、全面、深刻地理解這部分內容。第2章圍繞Kubernetes的安裝和配置進行講解。如果要在生產級應用中部署Kubernetes,則建議讀者將本章內容全部實踐戰一遍,否則可以選擇其中部分內容進行實踐。其中比較重要的是Kubernetes的命令行部分,對這部分操作得越熟練,後面進行研發或運維就越輕松。第3章全面、深入地講解了Pod的方方面面,其中非常有挑戰性的是Pod調度部分的內容,這也是生產實踐中相當實用的知識和技能。第4章圍繞Pod工作負載進行講解,這些工作負載分別實現了無狀態服務、有狀態服務和批處理任務的不同需求。第5章圍繞Service進行深入講解,涉及服務發現、DNS、IPv6及Ingress等高級特性。第6、7章全面、深入地講解Kubernetes的運行機制和原理,涉及API Server、Controller、Scheduler、kubelet、kube-proxy等幾個核心組件的作用、原理和實現方式等,可以讓讀者加深對Kubernetes的整體認知,使其在遇到問題時能更快地找到解決方案。第8、9章主要講解Kubernetes運維方面的技能和知識,涉及集群多租戶模式下的資源管理方案、Pod的QoS管理、基於NUMA資源親和性的資源分配管理、Pod調度、故障排查等。

目錄大綱

第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應用 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的外網訪問問題 24
1.4.6 有狀態應用集群 28
1.4.7 批處理應用 29
1.4.8 應用的配置問題 31
1.4.9 應用自動化運維相關的重要對象 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 動態存儲管理 36
1.6 瞭解Kubernetes安全 38
1.7 從一個簡單的示例開始 40
1.7.1 環境準備 41
1.7.2 啟動MySQL服務 41
1.7.3 啟動Tomcat應用 44
1.7.4 通過瀏覽器訪問網頁 46

第2章 Kubernetes安裝和配置指南 48
2.1 系統要求 49
2.2 通過kubeadm快速安裝Kubernetes集群 50
2.2.1 安裝kubeadm、kubelet和kubectl 50
2.2.2 修改kubeadm的默認配置 51
2.2.3 下載Kubernetes相關鏡像 53
2.2.4 通過kubeadm init命令安裝Master 53
2.2.5 將新的Node加入集群 58
2.2.6 安裝CNI網絡插件 60
2.2.7 驗證Kubernetes集群是否正常工作 62
2.3 通過二進制文件安裝Kubernetes集群 63
2.3.1 Master的高可用部署架構 63
2.3.2 創建CA根證書 64
2.3.3 部署安全的etcd高可用集群 65
2.3.4 部署安全的Kubernetes Master高可用集群 70
2.3.5 部署各個Node的服務 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 面向容器級別的設計思路 96
2.6 kubectl用法詳解 97
2.6.1 kubectl用法概述 97
2.6.2 kubectl子命令詳解 98
2.6.3 kubectl可操作的資源對象詳解 101
2.6.4 kubectl的公共參數說明 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 靜態Pod 124
3.4 Pod容器共享Volume 126
3.5 Pod的配置管理 128
3.5.1 ConfigMap概述 128
3.5.2 創建ConfigMap 129
3.5.3 在Pod中使用ConfigMap 144
3.5.4 ConfigMap的可選設置 151
3.5.5 使用ConfigMap時的限制條件 153
3.6 在容器內獲取Pod信息(Downward API) 153
3.6.1 環境變量方式 154
3.6.2 Volume掛載方式 158
3.6.3 Downward API支持設置的Pod和Container信息 162
3.7 Pod的生命周期管理 164
3.7.1 Pod的階段(Phase) 164
3.7.2 Pod的狀況(Condition) 165
3.7.3 容器的狀態(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:面向無狀態應用的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部署的暫停和恢復 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:面向有狀態應用的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:批處理任務 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的掛起與恢復 303
4.7 CronJob:定時任務 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的多埠設置 325
5.2.4 將外部服務定義為Service 326
5.2.5 Service的類型 327
5.2.6 Headless Service 335
5.2.7 為服務設置外部IP地址 338
5.2.8 Service支持的網絡協議 338
5.2.9 Kubernetes的服務發現機制 340
5.2.10 端點分片 342
5.2.11 拓撲感知路由機制 347
5.3 DNS服務搭建和配置指南 350
5.3.1 修改每個Node上kubelet的DNS啟動參數 352
5.3.2 部署CoreDNS服務 352
5.3.3 服務名的DNS解析 356
5.3.4 CoreDNS的配置說明 358
5.4 Node本地DNS緩存服務搭建和配置指南 360
5.5 Service和Pod的DNS域名相關特性 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主機名設置 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安全設置 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架構解析 424
6.1.1 以API Server為中心的架構 424
6.1.2 全自動的資源管控能力 426
6.1.3 以開放為基礎的演進思路 431
6.1.4 擁抱新技術 433
6.1.5 安全至上 434
6.2 API Server原理解析 437
6.2.1 API Server概述 438
6.2.2 API Server架構解析 444
6.2.3 獨特的Kubernetes Proxy API 448
6.2.4 集群功能模塊之間的通信 450
6.2.5 API Server網絡隔離的設計 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的調度流程 466
6.4.2 Scheduler Framework 468
6.4.3 Scheduling Profiles 472
6.4.4 深入分析搶占式調度 473

第7章 Node核心組件的運行機制 480
7.1 kubelet運行機制解析 481
7.1.1 資源管理 482
7.1.2 Pod管理 517
7.1.3 性能指標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運維管理基礎 544
8.1 基礎集群運維 545
8.1.1 常用運維技巧 545
8.1.2 Node的運維管理 552
8.1.3 PodDisruptionBudget——出現乾擾時的Pod保護機制 557
8.1.4 Pod中的多個容器共享進程命名空間 563
8.1.5 使用CEL校驗數據 566
8.2 kustomize的基礎操作 570
8.2.1 kustomize概述 570
8.2.2 kustomize的常見例子 571
8.2.3 kustomization的高級用法 574
8.3 Helm的基礎操作 578
8.3.1 Helm——應用包管理 578
8.3.2 Helm——Chart倉庫 581
8.3.3 Helm——部署應用 584
8.3.4 Helm——應用更新和回滾 588
8.3.5 Helm——卸載應用 591
8.4 集群監控 592
8.4.1 Kubernetes核心組件的性能監控 592
8.4.2 Metrics Server實踐 595
8.4.3 Prometheus性能監控平臺實踐 598
8.4.4 Kubernetes日誌管理實踐 604
8.4.5 使用Dashboard監控集群資源狀態和性能 634

第9章 Kubernetes運維管理進階 641
9.1 多租戶計算資源管理實踐 642
9.1.1 集群計算資源的規劃 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的調度管理實踐指南 677
9.3.1 基於Node Label的調度策略 677
9.3.2 Node親和性調度策略 679
9.3.3 Pod間的親和性與反親和性調度策略 683
9.3.4 指定Node名稱的定向調度策略 690
9.3.5 Taint和Toleration(污點和容忍度)的調度策略 691
9.3.6 Pod Priority Preemption:Pod優先級和搶占調度策略 696
9.3.7 多調度器管理 700
9.3.8 Pod拓撲分佈約束(Topology Spread Constraints)調度策略 704
9.4 故障排查指南 713
9.4.1 集群基礎故障排查指南 713
9.4.2 應用故障排查指南 720
9.4.3 常見問題指南 725
9.4.4 尋求幫助 730