KUBERNETES權威指南·從DOCKER到KUBERNETES實踐全接觸(第4版)

KUBERNETES權威指南·從DOCKER到KUBERNETES實踐全接觸(第4版)

《KUBERNETES權威指南·從DOCKER到KUBERNETES實踐全接觸(第4版)》是2019年電子工業出版社出版的圖書,作者是魏家鵬、潘宏歌。

基本介紹

  • 中文名:KUBERNETES權威指南·從DOCKER到KUBERNETES實踐全接觸(第4版)
  • 作者:魏家鵬、潘宏歌
  • 出版時間:2019年
  • 出版社:電子工業出版社
  • 頁數:824 頁
  • ISBN: 9787121362354
  • 定價:168 元 
  • 開本:16 開
內容簡介,目錄,

內容簡介

Kubernetes是由谷歌開源的Docker容器集群管理系統,為容器化的套用提供了資源調度、部署運行、服務發現、擴容及縮容等一整套功能。本書從架構師、開發人員和運維人員的角度,闡述了Kubernetes的基本概念、實踐指南、核心原理、開發指導、運維指南、新特性演進等內容,圖文並茂、內容豐富、由淺入深、講解全面;並圍繞在生產環境中可能出現的問題,給出了大量的典型案例,比如安全配置方案、網路方案、共享存儲方案、高可用方案及Trouble Shooting技巧等,有很強的實戰指導意義。本書內容隨著Kubernetes的版本更新不斷完善,目前涵蓋了Kubernetes從1.0到1.14版本的主要特性,努力為Kubernetes用戶提供全方位的Kubernetes技術指南。本書源碼已上傳至GitHub的kubeguide/K8sDefinitiveGuide-V4-Sourcecode目錄,可自行下載本書源碼進行練習。無論是對於軟體工程師、測試工程師、運維工程師、軟體架構師、技術經理,還是對於資深IT人士,本書都極具參考價值。

目錄

第1章 Kubernetes入門
1.1 Kubernetes是什麼 2
1.2 為什麼要用Kubernetes 5
1.3 從一個簡單的例子開始 6
1.3.1 環境準備 7
1.3.2 啟動MySQL服務 7
1.3.3 啟動Tomcat套用 10
1.3.4 通過瀏覽器訪問網頁 12
1.4 Kubernetes的基本概念和術語 13
1.4.1 Master 16
1.4.2 Node 16
1.4.3 Pod 19
1.4.4 Label 24
1.4.5 Replication Controller 28
1.4.6 Deployment 31
1.4.7 Horizontal Pod Autoscaler 34
1.4.8 StatefulSet 36
1.4.9 Service 37
1.4.10 Job 45
1.4.11 Volume 45
1.4.12 Persistent Volume 49
1.4.13 Namespace 51
1.4.14 Annotation 52
1.4.15 ConfigMap 53
1.4.16 小結 54
第2章 Kubernetes安裝配置指南
2.1 系統要求 56
2.2 使用kubeadm工具快速安裝Kubernetes集群 57
2.2.1 安裝kubeadm和相關工具 57
2.2.2 kubeadm config 58
2.2.3 下載Kubernetes的相關鏡像 59
2.2.4 運行kubeadm init命令安裝Master 59
2.2.5 安裝Node,加入集群 61
2.2.6 安裝網路外掛程式 62
2.2.7 驗證Kubernetes集群是否安裝完成 63
2.3 以二進制檔案方式安裝Kubernetes集群 64
2.3.1 Master上的etcd、kube-apiserver、kube-controller-manager、kube-scheduler服務 66
2.3.2 Node上的kubelet、kube-proxy服務 71
2.4 Kubernetes集群的安全設定 73
2.4.1 基於CA簽名的雙向數字證書認證方式 73
2.4.2 基於HTTP Base或Token的簡單認證方式 78
2.5 Kubernetes集群的網路配置 80
2.6 區域網路中的Kubernetes相關配置 80
2.6.1 Docker Private Registry(私有Docker鏡像庫) 80
2.6.2 kubelet配置 81
2.7 Kubernetes的版本升級 81
2.7.1 二進制升級 81
2.7.2 使用kubeadm進行集群升級 82
2.8 Kubernetes核心服務配置詳解 84
2.8.1 公共配置參數 84
2.8.2 kube-apiserver啟動參數 85
2.8.3 kube-controller-manager啟動參數 97
2.8.4 kube-scheduler啟動參數 107
2.8.5 kubelet啟動參數 113
2.8.6 kube-proxy啟動參數 128
2.9 CRI(容器運行時接口)詳解 132
2.9.1 CRI概述 132
2.9.2 CRI的主要組件 133
2.9.3 Pod和容器的生命周期管理 133
2.9.4 面向容器級別的設計思路 135
2.9.5 嘗試使用新的Docker-CRI來創建容器 136
2.9.6 CRI的進展 137
2.10 kubectl命令行工具用法詳解 137
2.10.1 kubectl用法概述 137
2.10.2 kubectl子命令詳解 139
2.10.3 kubectl參數列表 142
2.10.4 kubectl輸出格式 143
2.10.5 kubectl操作示例 145
第3章 深入掌握Pod
3.1 Pod定義詳解 150
3.2 Pod的基本用法 156
3.3 靜態Pod 161
3.4 Pod容器共享Volume 162
3.5 Pod的配置管理 165
3.5.1 ConfigMap概述 165
3.5.2 創建ConfigMap資源對象 165
3.5.3 在Pod中使用ConfigMap 173
3.5.4 使用ConfigMap的限制條件 179
3.6 在容器內獲取Pod信息(Downward API) 180
3.6.1 環境變數方式:將Pod信息注入為環境變數 180
3.6.2 環境變數方式:將容器資源信息注入為環境變數 182
3.6.3 Volume掛載方式 184
3.7 Pod生命周期和重啟策略 186
3.8 Pod健康檢查和服務可用性檢查 187
3.9 玩轉Pod調度 190
3.9.1 Deployment或RC:全自動調度 193
3.9.2 NodeSelector:定向調度 194
3.9.3 NodeAffinity:Node親和性調度 197
3.9.4 PodAffinity:Pod親和與互斥調度策略 198
3.9.5 Taints和Tolerations(污點和容忍) 202
3.9.6 Pod Priority Preemption:Pod優先權調度 206
3.9.7 DaemonSet:在每個Node上都調度一個Pod 209
3.9.8 Job:批處理調度 211
3.9.9 Cronjob:定時任務 215
3.9.10 自定義調度器 219
3.10 Init Container(初始化容器) 220
3.11 Pod的升級和回滾 224
3.11.1 Deployment的升級 225
3.11.2 Deployment的回滾 231
3.11.3 暫停和恢復Deployment的部署操作,以完成複雜的修改 234
3.11.4 使用kubectl rolling-update命令完成RC的滾動升級 236
3.11.5 其他管理對象的更新策略 239
3.12 Pod的擴縮容 240
3.12.1 手動擴縮容機制 240
3.12.2 自動擴縮容機制 241
3.13 使用StatefulSet搭建MongoDB集群 264
3.13.1 前提條件 264
3.13.2 創建StatefulSet 265
3.13.3 查看MongoDB集群的狀態 269
3.13.4 StatefulSet的常見套用場景 271
第4章 深入掌握Service
4.1 Service定義詳解 277
4.2 Service的基本用法 279
4.2.1 多連線埠Service 282
4.2.2 外部服務Service 283
4.3 Headless Service 284
4.3.1 自定義SeedProvider 285
4.3.2 通過Service動態查找Pod 286
4.3.3 Cassandra集群中新節點的自動添加 289
4.4 從集群外部訪問Pod或Service 291
4.4.1 將容器套用的連線埠號映射到物理機 291
4.4.2 將Service的連線埠號映射到物理機 292
4.5 DNS服務搭建和配置指南 294
4.5.1 在創建DNS服務之前修改每個Node上kubelet的啟動參數 296
4.5.2 創建CoreDNS套用 297
4.5.3 服務名的DNS解析 301
4.5.4 CoreDNS的配置說明 302
4.5.5 Pod級別的DNS配置說明 304
4.6 Ingress:HTTP 7層路由機制 306
4.6.1 創建Ingress Controller和默認的backend服務 307
4.6.2 定義Ingress策略 311
4.6.3 客戶端訪問http://mywebsite.com/demo 313
4.6.4 Ingress的策略配置技巧 316
4.6.5 Ingress的TLS安全設定 320
第5章 核心組件運行機制
5.1 Kubernetes API Server原理解析 327
5.1.1 Kubernetes API Server概述 327
5.1.2 API Server架構解析 330
5.1.3 獨特的Kubernetes Proxy API接口 334
5.1.4 集群功能模組之間的通信 336
5.2 Controller Manager原理解析 337
5.2.1 Replication Controller 338
5.2.2 Node Controller 339
5.2.3 ResourceQuota Controller 341
5.2.4 Namespace Controller 343
5.2.5 Service Controller與Endpoints Controller 343
5.3 Scheduler原理解析 344
5.4 kubelet運行機制解析 348
5.4.1 節點管理 349
5.4.2 Pod管理 349
5.4.3 容器健康檢查 351
5.4.4 cAdvisor資源監控 352
5.5 kube-proxy運行機制解析 354
第6章 深入分析集群安全機制
6.1 API Server認證管理 359
6.2 API Server授權管理 361
6.2.1 ABAC授權模式詳解 362
6.2.2 Webhook授權模式詳解 365
6.2.3 RBAC授權模式詳解 368
6.3 Admission Control 384
6.4 Service Account 388
6.5 Secret私密憑據 393
6.6 Pod的安全策略配置 396
6.6.1 PodSecurityPolicy的工作機制 397
6.6.2 PodSecurityPolicy配置詳解 399
6.6.3 Pod的安全設定詳解 406
第7章 網路原理
7.1 Kubernetes網路模型 411
7.2 Docker網路基礎 413
7.2.1 網路命名空間 413
7.2.2 Veth設備對 416
7.2.3 網橋 419
7.2.4 iptables和Netfilter 421
7.2.5 路由 424
7.3 Docker的網路實現 426
7.4 Kubernetes的網路實現 435
7.4.1 容器到容器的通信 435
7.4.2 Pod之間的通信 436
7.5 Pod和Service網路實戰 439
7.6 CNI網路模型 454
7.6.1 CNM模型 454
7.6.2 CNI模型 455
7.6.3 在Kubernetes中使用網路外掛程式 467
7.7 Kubernetes網路策略 467
7.7.1 網路策略配置說明 468
7.7.2 在Namespace級別設定默認的網路策略 470
7.7.3 NetworkPolicy的發展 472
7.8 開源的網路組件 472
7.8.1 Flannel 472
7.8.2 Open vSwitch 477
7.8.3 直接路由 483
7.8.4 Calico容器網路和網路策略實戰 486
第8章 共享存儲原理
8.1 共享存儲機制概述 509
8.2 PV詳解 510
8.2.1 PV的關鍵配置參數 511
8.2.2 PV生命周期的各個階段 515
8.3 PVC詳解 516
8.4 PV和PVC的生命周期 518
8.4.1 資源供應 518
8.4.2 資源綁定 519
8.4.3 資源使用 519
8.4.4 資源釋放 519
8.4.5 資源回收 519
8.5 StorageClass詳解 521
8.5.1 StorageClass的關鍵配置參數 521
8.5.2 設定默認的StorageClass 524
8.6 動態存儲管理實戰:GlusterFS 524
8.6.1 準備工作 525
8.6.2 創建GlusterFS管理服務容器集群 525
8.6.3 創建Heketi服務 528
8.6.4 為Heketi設定GlusterFS集群 530
8.6.5 定義StorageClass 533
8.6.6 定義PVC 534
8.6.7 Pod使用PVC的存儲資源 536
8.7 CSI存儲機制詳解 537
8.7.1 CSI的設計背景 538
8.7.2 CSI存儲外掛程式的關鍵組件和部署架構 539
8.7.3 CSI存儲外掛程式的使用示例 540
8.7.4 CSI的發展 556
第9章 Kubernetes開發指南
9.1 REST簡述 561
9.2 Kubernetes API詳解 563
9.2.1 Kubernetes API概述 563
9.2.2 Kubernetes API版本的演進策略 570
9.2.3 API Groups(API組) 571
9.2.4 API REST的方法說明 573
9.2.5 API Server回響說明 575
9.3 使用Java程式訪問Kubernetes API 577
9.3.1 Jersey 577
9.3.2 Fabric8 590
9.3.3 使用說明 591
9.3.4 其他客戶端庫 615
9.4 Kubernetes API的擴展 616
9.4.1 使用CRD擴展API資源 617
9.4.2 使用API聚合機制擴展API資源 626
第10章 Kubernetes集群管理
10.1 Node的管理 636
10.1.1 Node的隔離與恢復 636
10.1.2 Node的擴容 637
10.2 更新資源對象的Label 638
10.3 Namespace:集群環境共享與隔離 639
10.3.1 創建Namespace 639
10.3.2 定義Context(運行環境) 640
10.3.3 設定工作組在特定Context環境下工作 641
10.4 Kubernetes資源管理 643
10.4.1 計算資源管理 645
10.4.2 資源配置範圍管理(LimitRange) 655
10.4.3 資源服務質量管理(Resource QoS) 662
10.4.4 資源配額管理(Resource Quotas) 670
10.4.5 ResourceQuota和LimitRange實踐 676
10.4.6 資源管理總結 685
10.5 資源緊缺時的Pod驅逐機制 686
10.5.1 驅逐策略 686
10.5.2 驅逐信號 686
10.5.3 驅逐閾值 688
10.5.4 驅逐監控頻率 689
10.5.5 節點的狀況 689
10.5.6 節點狀況的抖動 690
10.5.7 回收Node級別的資源 690
10.5.8 驅逐用戶的Pod 691
10.5.9 資源最少回收量 692
10.5.10 節點資源緊缺情況下的系統行為 692
10.5.11 可調度的資源和驅逐策略實踐 694
10.5.12 現階段的問題 694
10.6 Pod Disruption Budget(主動驅逐保護) 695
10.7 Kubernetes集群的高可用部署方案 697
10.7.1 手工方式的高可用部署方案 698
10.7.2 使用kubeadm的高可用部署方案 709
10.8 Kubernetes集群監控 717
10.8.1 通過Metrics Server監控Pod和Node的CPU和記憶體資源使用數據 717
10.8.2 Prometheus+Grafana集群性能監控平台搭建 720
10.9 集群統一日誌管理 732
10.9.1 系統部署架構 733
10.9.2 創建Elasticsearch RC和Service 733
10.9.3 在每個Node上啟動Fluentd 736
10.9.4 運行Kibana 738
10.10 Kubernetes的審計機制 742
10.11 使用Web UI(Dashboard)管理集群 746
10.12 Helm:Kubernetes套用包管理工具 750
10.12.1 Helm概述 750
10.12.2 Helm的主要概念 751
10.12.3 安裝Helm 751
10.12.4 Helm的常見用法 752
10.12.5 --set的格式和限制 756
10.12.6 更多的安裝方法 757
10.12.7 helm upgrade和helm rollback:套用的更新或回滾 757
10.12.8 helm install/upgrade/rollback命令的常用參數 758
10.12.9 helm delete:刪除一個Release 759
10.12.10 helm repo:倉庫的使用 759
10.12.11 自定義Chart 759
10.12.12 對Chart目錄結構和配置檔案的說明 759
10.12.13 對Chart.yaml檔案的說明 760
10.12.14 快速製作自定義的Chart 761
10.12.15 搭建私有Repository 761
第11章 Trouble Shooting指導
11.1 查看系統Event 764
11.2 查看容器日誌 766
11.3 查看Kubernetes服務日誌 767
11.4 常見問題 769
11.4.1 由於無法下載pause鏡像導致Pod一直處於Pending狀態 769
11.4.2 Pod創建成功,但RESTARTS數量持續增加 771
11.4.3 通過服務名無法訪問服務 772
11.5 尋求幫助 773
第12章 Kubernetes開發中的新功能
12.1 對Windows容器的支持 778
12.1.1 Windows Node部署 778
12.1.2 Windows容器支持的Kubernetes特性和發展趨勢 790
12.2 對GPU的支持 791
12.2.1 環境準備 792
12.2.2 在容器中使用GPU資源 795
12.2.3 發展趨勢 797
12.3 Pod的垂直擴縮容 797
12.3.1 前提條件 798
12.3.2 安裝Vertical Pod Autoscaler 798
12.3.3 為Pod設定垂直擴縮容 798
12.3.4 注意事項 800
12.4 Kubernetes的演進路線和開發模式 801

相關詞條

熱門詞條

聯絡我們