本書共11章,由淺入深地介紹了Kubernetes的相關(guān)技術(shù)。主要內(nèi)容包括容器的發(fā)展史,Kubernetes的核心概念,Kubernetes的安裝與部署,Kubernetes的基本單位Pod,Kubernetes中的各種控制器,Kubernetes發(fā)布服務(wù)的方式,Kubernetes中的存儲卷與用法,Kubernetes中的幾種實用擴展,Kubernetes管理資源的方式與Pod的調(diào)度原理,API Server的基本使用方式及身份認證與授權(quán)方式等。
本書適合開發(fā)人員、運維人員、測試人員閱讀,同時也適合對Kubernetes或容器技術(shù)感興趣的讀者閱讀。
結(jié)合示例代碼,系統(tǒng)講述Kubernetes的主要功能和核心組件,有助于讀者迅速提升運維技能。
Kubernetes是谷歌開源的Docker容器集群管理系統(tǒng),為容器化的應(yīng)用提供了資源調(diào)度、部署、運行、服務(wù)發(fā)現(xiàn)、擴容和縮容等功能,充分發(fā)揮了容器技術(shù)的潛力,給開發(fā)人員和運維人員帶來了極大的便利。 本書由淺入深剖析了Kubernetes的功能。本書首先介紹了Kubernetes的基礎(chǔ)知識,然后講述了Kubernetes中的核心組件(如Pod、控制器、Service、Ingress)等,接著討論了Kubernetes的進階內(nèi)容,最后通過一個案例展示了如何使用Kubernetes部署項目。
本書主要內(nèi)容:
·Kubernetes的設(shè)計架構(gòu)和核心對象;
·Kubernetes的安裝與部署;
·Kubernetes的基本單位——Pod;
·用于管理Pod的控制器;
·在Kubernetes中發(fā)布服務(wù)和管理服務(wù)的方式;
·Kubernetes中的數(shù)據(jù)存儲機制;
·Kubernetes中管理資源的方式和調(diào)度Pod的方式;
·API Server的使用方式。
趙卓,新蛋科技有限公司電子商務(wù)研發(fā)團隊項目經(jīng)理,從事過多年測試工作和開發(fā)工作,精通各類開發(fā)和測試技術(shù)。編寫過的圖書有《Selenium自動化測試指南》,翻譯過的圖書有《精通Selenium WebDriver 3.0 (第2版)》《Visual Studio 2010軟件測試指南》和《快速編碼:高效使用Microsoft Visual Studio》。
目 錄
第 一部分 基礎(chǔ)知識
第 1章 容器的發(fā)展史 3
1.1 開發(fā)過程的發(fā)展 3
1.1.1 瀑布式開發(fā) 3
1.1.2 敏捷式開發(fā) 4
1.1.3 DevOps 5
1.2 應(yīng)用架構(gòu)的發(fā)展 6
1.2.1 單體架構(gòu)與多層架構(gòu) 6
1.2.2 微服務(wù)架構(gòu) 7
1.3 部署/打包的發(fā)展 9
1.3.1 物理機和虛擬機 9
1.3.2 容器 10
1.3.3 容器的舵手—Kubernetes 11
第 2章 Kubernetes的核心概念 12
2.1 Kubernetes的設(shè)計架構(gòu) 12
2.1.1 Master 13
2.1.2 Node 15
2.1.3 組件間的基本交互流程 16
2.2 Kubernetes的核心對象 17
2.2.1 Pod 17
2.2.2 控制器 18
2.2.3 服務(wù)與存儲 20
2.2.4 資源劃分 22
2.3 本章小結(jié) 23
第二部分 應(yīng)用
第3章 Kubernetes的安裝與部署 27
3.1 Master與Node都要安裝的
基礎(chǔ)組件 28
3.1.1 在Debian、Ubuntu系統(tǒng)上安裝
基礎(chǔ)組件 28
3.1.2 在CentOS以及RHEL和Fedora
系統(tǒng)上安裝基礎(chǔ)組件 28
3.2 Master的安裝與配置 29
3.2.1 如何解決CPU數(shù)量
不夠的問題 29
3.2.2 如何解決不支持交換
內(nèi)存的問題 29
3.2.3 如何解決網(wǎng)絡(luò)連接
錯誤的問題 30
3.3 Node的安裝與配置 32
3.4 本章小結(jié) 36
第4章 Pod—Kubernetes的基本單位 37
4.1 Pod的基本操作 37
4.1.1 創(chuàng)建Pod 37
4.1.2 查詢Pod 38
4.1.3 修改Pod 40
4.1.4 刪除Pod 41
4.2 Pod模板詳解 41
4.3 Pod與容器 45
4.3.1 Pod創(chuàng)建容器的方式 45
4.3.2 Pod組織容器的方式 50
4.4 Pod的生命周期 55
4.4.1 Pod的相位 55
4.4.2 Pod的重啟策略 56
4.4.3 Pod的創(chuàng)建與銷毀過程 57
4.4.4 Pod的生命周期事件 58
4.5 Pod的健康檢查 63
4.6 本章小結(jié) 68
第5章 控制器—Pod的管理 70
5.1 Deployment控制器 70
5.1.1 Deployment控制器的
基本操作 71
5.1.2 Deployment控制器的模板 75
5.1.3 Deployment控制器的伸縮 76
5.1.4 Deployment控制器的更新 77
5.1.5 Deployment控制器的回滾 84
5.2 DaemonSet控制器 85
5.2.1 DaemonSet控制器的基本操作 86
5.2.2 DaemonSet控制器的更新 88
5.3 Job與CronJob控制器 90
5.3.1 Job控制器的基本操作 90
5.3.2 Job的異常處理 95
5.3.3 CronJob控制器的基本操作 98
5.4 其他控制器 101
5.5 本章小結(jié) 102
第6章 Service和Ingress—
發(fā)布Pod提供的服務(wù) 103
6.1 Service 103
6.1.1 向外發(fā)布—通過
ClusterIP發(fā)布 107
6.1.2 向外發(fā)布—通過
NodePort發(fā)布 110
6.1.3 向外發(fā)布—通過
LoadBalancer發(fā)布 112
6.1.4 向內(nèi)發(fā)布—通過
無頭Service 115
6.1.5 向內(nèi)發(fā)布—通過
ExternalName 117
6.1.6 服務(wù)發(fā)現(xiàn) 119
6.1.7 其他配置方式 121
6.2 Ingress 124
6.2.1 Ingress控制器的安裝 126
6.2.2 Ingress的基本操作 127
6.3 本章小結(jié) 137
第7章 存儲與配置 138
7.1 本地存儲卷 138
7.1.1 emptyDir 139
7.1.2 hostPath 140
7.2 網(wǎng)絡(luò)存儲卷 142
7.2.1 安裝NFS 142
7.2.2 使用NFS 144
7.3 持久存儲卷 146
7.3.1 PV與PVC 147
7.3.2 StorageClass 154
7.4 StatefulSet控制器 159
7.4.1 StatefulSet控制器的
基本操作 161
7.4.2 PVC及PV的使用 163
7.4.3 無頭Service的訪問 165
7.4.4 Pod的重建 167
7.4.5 StatefulSet控制器的
伸縮與更新 168
7.5 配置存儲卷 168
7.5.1 ConfigMap 169
7.5.2 Secret 174
7.5.3 Downward API 181
7.6 本章小結(jié) 184
第8章 Kubernetes資源的管理及調(diào)度 186
8.1 資源調(diào)度—為Pod設(shè)置
計算資源 186
8.2 資源管理—命名空間 190
8.2.1 命名空間的基本操作 190
8.2.2 命名空間的資源配額 193
8.2.3 命名空間中單個資源的
限額范圍 197
8.3 資源管理—標簽、
選擇器及注解 202
8.3.1 標簽 202
8.3.2 選擇器 204
8.3.3 注解 207
8.4 資源調(diào)度—Pod調(diào)度
策略詳解 208
8.4.1 調(diào)度過程 208
8.4.2 節(jié)點選擇調(diào)度 211
8.4.3 節(jié)點親和性調(diào)度 212
8.4.4 Pod親和性與反親和性調(diào)度 215
8.4.5 污點與容忍度 219
8.4.6 優(yōu)先級與搶占式調(diào)度 222
8.5 本章小結(jié) 224
第三部分 進階
第9章 API Server 227
9.1 API Server的基本操作 227
9.1.1 寫操作 228
9.1.2 讀操作 234
9.1.3 獨有操作 237
9.1.4 狀態(tài)操作 241
9.2 API Server的身份認證、授權(quán)、
準入控制 245
9.2.1 身份認證 246
9.2.2 RBAC授權(quán) 253
9.3 本章小結(jié) 260
第 10章 Kubernetes的擴展 261
10.1 可視化管理—
Kubernetes Dashboard 261
10.1.1 安裝Kubernetes Dashboard 261
10.1.2 使用Kubernetes Dashboard 264
10.2 資源監(jiān)控—Prometheus與
Grafana 269
10.2.1 安裝與配置Prometheus 269
10.2.2 安裝與配置Grafana 270
10.3 日志管理—ElasticSearch、
Fluentd、Kibana 275
10.4 本章小結(jié) 277
第四部分 實踐
第 11章 項目部署案例 281
11.1 無狀態(tài)項目的部署案例 281
11.2 有狀態(tài)項目的部署案例 287
11.3 使用Helm部署項目 292
11.3.1 Helm簡介 293
11.3.2 Helm的安裝 294
11.3.3 Helm Chart的基本操作 296
11.3.4 將Chart打包到
Chart倉庫中 306
11.3.5 發(fā)布版本的更新、
回滾和刪除 308
11.3.6 使用Helm部署的項目案例 310
11.4 本章小結(jié) 313