本書是Kubernetes入門圖書,共16章,全面介紹Kubernetes的基礎(chǔ)知識,包括
Kubernetes架構(gòu)、構(gòu)建Kubernetes集群、在Kubernetes上部署和管理應(yīng)用、Kubernetes安全,以及微服務(wù)、容器化等術(shù)語的含義,并附帶大量的配置案例。本書內(nèi)容充實(shí)、完善,可以幫助讀者快速入門Kubernetes。
本書適合系統(tǒng)管理員、開發(fā)人員,以及對Kubernetes感興趣的初學(xué)者閱讀。
1.本書在Amazon評分4.5,其kindle版本在系統(tǒng)管理方向排名第1,信息技術(shù)方向排名第3,計(jì)算機(jī)網(wǎng)絡(luò)方向第13名。
2.本書作者是容器社區(qū)的代表人物,著有《深入淺出Docker》《Kubernetes修煉手冊》《Kubernetes快速入門》三部曲,有大量的忠實(shí)粉絲。
3.本書內(nèi)容簡單明了,案例比較豐富,讀者通過閱讀能快速入門Kubernetes。
奈吉爾·波爾頓(Nigel Poulton),亞馬遜暢銷圖書作者,存儲專家,Docker技術(shù)先驅(qū)。奈吉爾有豐富的運(yùn)維技術(shù)經(jīng)驗(yàn),著有多部容器相關(guān)的圖書,并開設(shè)了視頻培訓(xùn)課程,在業(yè)界有非常大的影響力。
第 1章 初識Kubernetes 001
1.1 Kubernetes的背景 001
1.1.1 編排器 001
1.1.2 容器化應(yīng)用 002
1.1.3 云原生應(yīng)用 002
1.1.4 微服務(wù)應(yīng)用 003
1.2 Kubernetes的誕生 004
1.2.1 Kubernetes和Docker 004
1.2.2 Kubernetes與Docker Swarm的對比 006
1.2.3 Kubernetes和Borg:抵抗是徒勞的 006
1.2.4 Kubernetes名字從何而來 007
1.3 云操作系統(tǒng) 007
1.3.1 云的規(guī)模 008
1.3.2 應(yīng)用的調(diào)度 008
1.3.3 一個(gè)簡單的模擬 009
1.4 本章小結(jié) 009
第 2章 Kubernetes操作概覽 010
2.1 Kubernetes概覽 011
2.1.1 作為集群的Kubernetes 011
2.1.2 作為編排器的Kubernetes 011
2.1.3 Kubernetes是如何工作的 012
2.2 控制平面與工作節(jié)點(diǎn) 013
2.2.1 控制平面 013
2.2.2 工作節(jié)點(diǎn) 017
2.3 Kubernetes DNS 018
2.4 Kubernetes應(yīng)用打包 019
2.5 聲明式模型與期望狀態(tài) 020
聲明式示例 021
2.6 Pod 021
2.6.1 Pod與容器 022
2.6.2 Pod深度剖析 023
2.6.3 調(diào)度單元 024
2.6.4 原子操作 024
2.6.5 Pod的生命周期 024
2.6.6 Pod的不變性 025
2.7 Deployment 025
2.8 Service與穩(wěn)定的網(wǎng)絡(luò) 025
2.9 本章小結(jié) 027
第3章 安裝Kubernetes 028
3.1 在筆記本計(jì)算機(jī)上創(chuàng)建Kubernetes集群 028
3.1.1 Docker Desktop 029
3.1.2 通過K3d創(chuàng)建本地多節(jié)點(diǎn)Kubernetes集群 030
3.1.3 通過KinD創(chuàng)建本地多節(jié)點(diǎn)Kubernetes集群 032
3.2 在云上創(chuàng)建托管的Kubernetes集群 034
3.2.1 GKE 034
3.2.2 LKE 036
3.3 安裝和使用kubectl 038
3.4 本章小結(jié) 040
第4章 Pod的使用 041
4.1 Pod原理 042
4.1.1 為什么是Pod 042
4.1.2 靜態(tài)Pod與控制器 046
4.1.3 單容器和多容器Pod 046
4.1.4 Pod的部署 047
4.1.5 剖析Pod 047
4.1.6 Pod與共享網(wǎng)絡(luò) 047
4.1.7 Pod網(wǎng)絡(luò) 048
4.1.8 Pod的原子部署 049
4.1.9 Pod的生命周期 049
4.1.10 Pod的不變性 050
4.1.11 Pod和擴(kuò)縮容 051
4.2 多容器Pod 051
4.2.1 邊車多容器Pod 052
4.2.2 適配器多容器Pod 052
4.2.3 大使多容器Pod 052
4.2.4 初始化多容器Pod 053
4.2.5 Pod原理總結(jié) 053
4.3 Pod實(shí)戰(zhàn) 053
4.3.1 Pod清單文件 054
4.3.2 清單文件:共情即代碼 055
4.3.3 基于清單文件部署Pod 056
4.3.4 查看運(yùn)行中的Pod 056
4.3.5 Pod的主機(jī)名 060
4.3.6 檢查Pod的不變性 061
4.3.7 多容器Pod示例初始化容器 061
4.3.8 多容器Pod示例邊車容器 063
4.4 Pod清理 065
4.5 本章小結(jié) 066
第5章 虛擬集群與命名空間 067
5.1 命名空間的使用案例 068
5.2 查看命名空間 069
5.3 創(chuàng)建和管理命名空間 070
配置kubectl以使用特定命名空間 071
5.4 部署到命名空間 072
5.5 清理 074
5.6 本章小結(jié) 074
第6章 Kubernetes Deployment 075
6.1 Deployment原理 076
6.1.1 Deployment和Pod 077
6.1.2 Deployment和ReplicaSet 077
6.1.3 自愈和擴(kuò)縮容 078
6.1.4 圍繞狀態(tài)的管理 079
6.1.5 使用Deployment進(jìn)行滾動更新 081
6.1.6 回滾 083
6.2 創(chuàng)建Deployment 084
6.3 查看Deployment 086
訪問應(yīng)用 088
6.4 進(jìn)行擴(kuò)縮容 090
6.5 進(jìn)行滾動更新 091
暫停和恢復(fù)滾動更新 094
6.6 進(jìn)行回滾 096
回滾和標(biāo)簽 098
6.7 清理 099
6.8 本章小結(jié) 100
第7章 Kubernetes Service 101
7.1 Service原理 102
7.1.1 標(biāo)簽和松耦合 103
7.1.2 Service和EndpointSlice 105
7.1.3 雙棧網(wǎng)絡(luò)(IPv4和IPv6) 106
7.1.4 從集群內(nèi)部訪問Service 106
7.1.5 從集群外部訪問Service 107
7.1.6 Service原理總結(jié) 109
7.2 Service實(shí)戰(zhàn) 109
7.2.1 雙棧網(wǎng)絡(luò)入門 109
7.2.2 命令式方法 113
7.2.3 聲明式方法 115
7.2.4 LoadBalancer Service 118
7.3 清理 119
7.4 本章小結(jié) 119
第8章 Ingress 120
8.1 Ingress背景 121
8.2 Ingress架構(gòu) 122
8.3 Ingress實(shí)戰(zhàn) 123
8.3.1 安裝NGINX Ingress controller 124
8.3.2 為多Ingress controller集群配置Ingress class 125
8.3.3 配置基于主機(jī)名和基于路徑的路由 126
8.3.4 部署應(yīng)用 127
8.3.5 創(chuàng)建Ingress對象 127
8.3.6 查看Ingress對象 130
8.3.7 配置DNS名稱解析 131
8.3.8 測試Ingress 132
8.4 清理 133
8.5 本章小結(jié) 134
第9章 深挖服務(wù)發(fā)現(xiàn) 135
9.1 快速入門 136
9.2 服務(wù)注冊 136
9.2.1 Service后端 138
9.2.2 服務(wù)注冊小結(jié) 140
9.3 服務(wù)發(fā)現(xiàn) 140
9.3.1 使用集群DNS將名稱解析為IP地址 141
9.3.2 網(wǎng)絡(luò)黑科技 142
9.3.3 服務(wù)發(fā)現(xiàn)小結(jié) 143
9.4 服務(wù)發(fā)現(xiàn)和命名空間 144
服務(wù)發(fā)現(xiàn)示例 145
9.5 服務(wù)發(fā)現(xiàn)問題排查 150
9.6 本章小結(jié) 153
第 10章 Kubernetes存儲 154
10.1 概述 155
10.2 存儲提供商 157
10.3 容器存儲接口 157
10.4 Kubernetes持久卷子系統(tǒng) 158
10.5 使用存儲類進(jìn)行動態(tài)置備 159
10.5.1 存儲類YAML 160
10.5.2 多個(gè)存儲類 161
10.5.3 部署和使用StorageClass對象 162
10.5.4 額外的卷配置 163
10.6 實(shí)戰(zhàn) 165
10.6.1 使用現(xiàn)有的存儲類 165
10.6.2 創(chuàng)建和使用新的存儲類 169
10.7 清理 171
10.8 本章小結(jié) 171
第 11章 ConfigMap和
Secret 172
11.1 概述 173
11.1.1 小例子 173
11.1.2 解耦的世界 174
11.2 ConfigMap原理 175
11.2.1 ConfigMap如何工作 176
11.2.2 ConfigMap和Kubernetes原生應(yīng)用 177
11.3 ConfigMap實(shí)戰(zhàn) 178
11.3.1 命令式創(chuàng)建ConfigMap 178
11.3.2 查看ConfigMap 179
11.3.3 聲明式創(chuàng)建ConfigMap 180
11.3.4 將ConfigMap數(shù)據(jù)注入Pod和容器 182
11.4 Secret實(shí)戰(zhàn) 189
11.4.1 Kubernetes Secret是否安全? 189
11.4.2 創(chuàng)建Secret 190
11.4.3 在Pod中使用Secret 192
11.5 清理 193
11.6 本章小結(jié) 193
第 12章 StatefulSet 194
12.1 StatefulSet原理 195
12.1.1 StatefulSet Pod命名 196
12.1.2 有序創(chuàng)建和刪除 196
12.1.3 刪除StatefulSet 198
12.1.4 StatefulSet和卷 198
12.1.5 故障處理 199
12.1.6 網(wǎng)絡(luò)ID和headless Service 199
12.2 StatefulSet實(shí)戰(zhàn) 200
12.2.1 部署存儲類 201
12.2.2 創(chuàng)建headless Service 202
12.2.3 部署StatefulSet 203
12.2.4 測試對等發(fā)現(xiàn) 206
12.2.5 擴(kuò)縮容StatefulSet 208
12.2.6 執(zhí)行滾動更新 210
12.2.7 測試Pod故障 210
12.2.8 刪除StatefulSet 212
12.3 本章小結(jié) 212
第 13章 API安全和RBAC 213
13.1 API安全概覽 213
13.2 身份認(rèn)證 214
檢查當(dāng)前身份認(rèn)證設(shè)置 215
13.3 鑒權(quán) 216
13.3.1 RBAC概覽 217
13.3.2 用戶和權(quán)限 218
13.3.3 深入探討規(guī)則 219
13.3.4 集群級別的用戶和權(quán)限 221
13.3.5 預(yù)創(chuàng)建的用戶和權(quán)限 222
13.3.6 鑒權(quán)總結(jié) 225
13.4 準(zhǔn)入控制 225
13.5 本章小結(jié) 226
第 14章 Kubernetes API 227
14.1 Kubernetes API概覽 228
14.1.1 JSON序列化 228
14.1.2 API類比 229
14.2 API Server 231
14.2.1 關(guān)于REST和RESTful 233
14.2.2 關(guān)于CRUD 235
14.3 API 237
14.3.1 核心API組 238
14.3.2 命名API組 239
14.3.3 關(guān)于訪問API的一些話 241
14.3.4 alpha版、beta版和穩(wěn)定版 243
14.3.5 資源棄用 245
14.3.6 資源、對象和原語 245
14.3.7 擴(kuò)展API 246
14.4 本章小結(jié) 250
第 15章 Kubernetes威脅建模 252
15.1 威脅建模 252
15.2 偽裝 253
15.2.1 保護(hù)與API Server的通信 253
15.2.2 確保Pod通信安全 254
15.3 篡改 255
15.3.1 篡改Kubernetes組件 256
15.3.2 篡改運(yùn)行在Kubernetes上的應(yīng)用 257
15.4 抵賴 257
15.5 信息泄露 259
15.5.1 保護(hù)集群數(shù)據(jù) 260
15.5.2 保護(hù)Pod中的數(shù)據(jù) 260
15.6 拒絕服務(wù) 261
15.6.1 保護(hù)集群資源免受DoS攻擊 261
15.6.2 保護(hù)API Server免受DoS攻擊 262
15.6.3 保護(hù)集群存儲免受DoS攻擊 263
15.6.4 保護(hù)應(yīng)用組件免受DoS攻擊 263
15.7 權(quán)限提升 264
15.7.1 保護(hù)API Server 264
15.7.2 保護(hù)Pod 265
15.7.3 使用PSS和PSA實(shí)現(xiàn)容器安全性標(biāo)準(zhǔn)化 270
15.7.4 PSS 271
15.7.5 PSA 271
15.7.6 PSA示例 272
15.7.7 PSA的替代方案 276
15.7.8 走向更安全的Kubernetes 276
15.8 本章小結(jié) 277
第 16章 真實(shí)世界的Kubernetes安全 278
16.1 CI/CD管道 279
16.1.1 鏡像庫 279
16.1.2 使用已批準(zhǔn)的基本鏡像 280
16.1.3 非標(biāo)準(zhǔn)基本鏡像 281
16.1.4 控制對鏡像的訪問 281
16.1.5 將鏡像從非生產(chǎn)環(huán)境移動到生產(chǎn)環(huán)境 282
16.1.6 漏洞掃描 282
16.1.7 配置即代碼 283
16.1.8 簽名容器鏡像 284
16.1.9 鏡像發(fā)布工作流 284
16.2 基礎(chǔ)設(shè)施和網(wǎng)絡(luò) 285
16.2.1 集群隔離 285
16.2.2 節(jié)點(diǎn)隔離 287
16.2.3 運(yùn)行時(shí)隔離 288
16.2.4 網(wǎng)絡(luò)隔離 289
16.3 IAM 292
管理對集群節(jié)點(diǎn)的遠(yuǎn)程SSH訪問 293
16.4 審計(jì)和安全監(jiān)控 293
16.4.1 安全配置 294
16.4.2 容器和Pod生命周期事件 294
16.4.3 應(yīng)用日志 295
16.4.4 用戶執(zhí)行的操作 295
16.4.5 管理日志數(shù)據(jù) 295
16.4.6 將現(xiàn)有應(yīng)用遷移到Kubernetes 295
16.5 真實(shí)世界的例子 296
16.6 本章小結(jié) 297
術(shù)語表 298