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