Kubernetes 進階實戰, 2/e

馬永亮

  • 出版商: 機械工業
  • 出版日期: 2021-02-02
  • 定價: $894
  • 售價: 8.5$760
  • 語言: 簡體中文
  • 頁數: 664
  • 裝訂: 平裝
  • ISBN: 7111671864
  • ISBN-13: 9787111671862
  • 相關分類: Kubernetes
  • 立即出貨 (庫存=1)

買這商品的人也買了...

商品描述

全書分為5個部分。
部分介紹Kubernetes系統基礎架構及核心概述,並提供一個Kubernetes快速部署和應用的入門指南。
第二部分剖析分Kubernetes系統的應用編排核心組件,對Pod、Controller、Service和Ingress、存儲捲和應用配置等進行深入介紹。
第三部分介紹安全相關的話題,主要涉及認證、授權、准入控制、網絡模型和網絡策略等話題。
第四部分介紹Kubernetes系統高級話題及系統擴展,包括調度策略、CRD和Operator、資源指標與系統監控及應用管理器等。
第五部分介紹基於Kubernetes的服務治理與服務網絡,涉及數據平面組件Envoy、Istio架構、部署和應用案例等話題。

目錄大綱

前言
部分系統基礎
第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