本書是一本Kubernetes入門圖書,共分為12章,涵蓋了Kubernetes的基礎(chǔ)知識(shí),并附帶了大量的配置案例。此外,還介紹了Kubernetes架構(gòu)、構(gòu)建Kubernetes集群、在Kubernetes上部署和管理應(yīng)用程序、Kubernetes安全,以及云本地、微服務(wù)、容器化等術(shù)語的含義。本書在內(nèi)容上不斷進(jìn)行充實(shí)和完善,可以幫助讀者快速入門Kubernetes。
本書適合系統(tǒng)管理員、開發(fā)人員,以及對(duì)Kubernetes感興趣的初學(xué)者閱讀。
·暢銷書《深入淺出Docker》作者新作;
·內(nèi)容簡單明了,案例比較豐富,讀者通過閱讀能迅速入門kubernetes。
奈吉爾·波爾頓(Nigel Poulton),亞馬遜暢銷圖書作者,存儲(chǔ)專家,Docker技術(shù)先驅(qū)。奈吉爾有豐富的運(yùn)維技術(shù)經(jīng)驗(yàn),著有多部容器相關(guān)的圖書,并開設(shè)了視頻培訓(xùn)課程,在業(yè)界有非常大的影響力。
第 1章 初識(shí)Kubernetes 1
1.1 Kubernetes的背景 1
1.1.1 編排器 1
1.1.2 容器化應(yīng)用 1
1.1.3 云原生應(yīng)用 2
1.1.4 微服務(wù)應(yīng)用 2
1.2 Kubernetes的誕生 3
1.2.1 Kubernetes和Docker 3
1.2.2 Kubernetes與Docker Swarm對(duì)比 4
1.2.3 Kubernetes和Borg:抵抗是徒勞的 5
1.2.4 Kubernetes—名字從何而來 5
1.3 云操作系統(tǒng) 6
1.3.1 云的規(guī)模 6
1.3.2 應(yīng)用的調(diào)度 7
1.3.3 一個(gè)簡單的模擬 7
1.4 總結(jié) 7
第 2章 Kubernetes操作概覽 9
2.1 Kubernetes概覽 9
2.1.1 作為集群的Kubernetes 9
2.1.2 作為編排器的Kubernetes 10
2.1.3 Kubernetes是如何工作的 11
2.2 主節(jié)點(diǎn)與工作節(jié)點(diǎn) 12
2.2.1 主節(jié)點(diǎn)(控制平面) 12
2.2.2 工作節(jié)點(diǎn) 15
2.3 Kubernetes DNS 17
2.4 Kubernetes的應(yīng)用打包 17
2.5 聲明式模型與期望狀態(tài) 18
2.6 Pod 20
2.6.1 Pod與容器 20
2.6.2 Pod深度剖析 21
2.6.3 調(diào)度單元 22
2.6.4 原子操作單位 22
2.6.5 Pod的生命周期 22
2.7 Deployment 23
2.8 服務(wù)與穩(wěn)定的網(wǎng)絡(luò) 23
2.9 總結(jié) 26
第3章 安裝Kubernetes 27
3.1 Kubernetes練習(xí)環(huán)境 27
3.2 托管的Kubernetes環(huán)境 27
3.3 自定義Kubernetes集群 28
3.4 安裝Kubernetes 28
3.5 Play with Kubernetes 28
3.6 桌面版Docker 31
3.7 Google Kubernetes引擎(GKE) 32
3.8 其他安裝方法 34
3.9 kubectl 34
3.10 總結(jié) 36
第4章 Pod的使用 37
4.1 Pod原理 37
4.1.1 Pod和容器 38
4.1.2 多容器Pod:典型示例 38
4.1.3 如何部署Pod 39
4.1.4 “解剖”Pod 40
4.1.5 Pod與共享網(wǎng)絡(luò) 40
4.1.6 Pod與CGroup 42
4.1.7 Pod的原子部署 42
4.1.8 Pod的生命周期 42
4.1.9 小結(jié) 43
4.2 Pod實(shí)戰(zhàn) 43
4.2.1 Pod清單文件 44
4.2.2 清單文件:共情即代碼 45
4.2.3 基于清單文件部署Pod 46
4.2.4 查看運(yùn)行中的Pod 46
4.2.5 kubectl describe 48
4.2.6 kubectl exec:在Pod中執(zhí)行命令 49
4.2.7 kubectl logs 50
4.3 總結(jié) 50
第5章 Kubernetes Deployment 51
5.1 Deployment原理 51
5.1.1 自愈和擴(kuò)縮容 52
5.1.2 使用Deployment進(jìn)行滾動(dòng)升級(jí) 54
5.1.3 回滾 56
5.2 如何創(chuàng)建一個(gè)Deployment 56
5.2.1 查看Deployment 58
5.2.2 訪問該應(yīng)用 59
5.3 執(zhí)行滾動(dòng)升級(jí) 60
5.4 執(zhí)行回滾操作 63
5.5 總結(jié) 64
第6章 Kubernetes Service 65
6.1 要點(diǎn)前瞻 65
6.2 原理 66
6.2.1 Label與松耦合 67
6.2.2 Service和Endpoint對(duì)象 69
6.2.3 從集群內(nèi)部訪問Service 70
6.2.4 從集群外部訪問Service 70
6.2.5 服務(wù)發(fā)現(xiàn) 72
6.2.6 小結(jié) 72
6.3 Service實(shí)戰(zhàn) 73
6.3.1 命令式 73
6.3.2 聲明式 76
6.4 實(shí)例 79
6.5 總結(jié) 81
第7章 服務(wù)發(fā)現(xiàn) 82
7.1 快速入門 82
7.2 服務(wù)注冊 83
7.2.1 服務(wù)后端 85
7.2.2 小結(jié) 86
7.3 服務(wù)發(fā)現(xiàn) 86
7.3.1 使用集群DNS將名稱解析為IP地址 87
7.3.2 網(wǎng)絡(luò)“黑科技” 88
7.3.3 小結(jié) 89
7.4 服務(wù)發(fā)現(xiàn)與命名空間 90
7.5 服務(wù)發(fā)現(xiàn)問題排查 96
7.6 總結(jié) 98
第8章 Kubernetes存儲(chǔ) 99
8.1 概述 99
8.2 存儲(chǔ)提供者 101
8.3 容器存儲(chǔ)接口(CSI) 101
8.4 Kubernetes持久化卷子系統(tǒng) 101
8.5 存儲(chǔ)類和動(dòng)態(tài)置備 107
8.5.1 存儲(chǔ)類YAML 108
8.5.2 多個(gè)存儲(chǔ)類 109
8.5.3 實(shí)現(xiàn)存儲(chǔ)類 109
8.6 示例 111
8.6.1 清理 111
8.6.2 創(chuàng)建一個(gè)存儲(chǔ)類 112
8.6.3 創(chuàng)建一個(gè)PVC 113
8.6.4 清理 114
8.6.5 使用默認(rèn)的StorageClass 115
8.7 總結(jié) 115
第9章 ConfigMap 116
9.1 概述 116
9.1.1 簡單的例子 117
9.1.2 例子分析 117
9.1.3 解耦的世界 117
9.2 ConfigMap原理 118
9.2.1 ConfigMap如何工作 119
9.2.2 ConfigMap與Kubernetes原生應(yīng)用 120
9.3 ConfigMap實(shí)戰(zhàn) 120
9.3.1 命令式創(chuàng)建ConfigMap 120
9.3.2 查看ConfigMap 122
9.3.3 聲明式創(chuàng)建ConfigMap 123
9.3.4 將ConfigMap數(shù)據(jù)注入Pod和容器 125
9.4 總結(jié) 129
第 10章 StatefulSet 130
10.1 StatefulSet原理 130
10.1.1 StatefulSet中Pod的命名 131
10.1.2 按序創(chuàng)建和刪除 132
10.1.3 刪除StatefulSet 133
10.1.4 卷 133
10.1.5 故障處理 134
10.1.6 網(wǎng)絡(luò)ID和headless Service 134
10.2 StatefulSet實(shí)戰(zhàn) 135
10.2.1 部署StorageClass 135
10.2.2 創(chuàng)建一個(gè)governing headless Service 136
10.2.3 部署StatefulSet 137
10.2.4 測試點(diǎn)對(duì)點(diǎn)發(fā)現(xiàn) 140
10.2.5 StatefulSet擴(kuò)縮容 141
10.2.6 執(zhí)行滾動(dòng)升級(jí) 143
10.2.7 模擬Pod故障 143
10.2.8 刪除StatefulSet 145
10.3 總結(jié) 145
第 11章 安全模型分析 146
11.1 安全模型 146
11.2 偽裝 146
11.2.1 與API Server的安全通信 147
11.2.2 Pod間的安全通信 147
11.3 篡改 149
11.3.1 對(duì)Kubernetes組件的篡改 149
11.3.2 對(duì)運(yùn)行在Kubernetes中的應(yīng)用的篡改 150
11.4 抵賴 151
11.5 信息泄露 153
11.5.1 保護(hù)集群數(shù)據(jù) 153
11.5.2 保護(hù)Pod中的數(shù)據(jù) 153
11.6 拒絕服務(wù) 154
11.6.1 保護(hù)集群資源免于DoS攻擊 154
11.6.2 保護(hù)API Server防范DoS攻擊 155
11.6.3 保護(hù)集群存儲(chǔ)防范DoS攻擊 155
11.6.4 保護(hù)應(yīng)用組件防范DoS攻擊 156
11.7 提升權(quán)限 157
11.7.1 保護(hù)API Server 157
11.7.2 保護(hù)Pod 158
11.8 Pod安全策略 162
11.9 Kubernetes安全展望 164
11.10 總結(jié) 164
第 12章 現(xiàn)實(shí)中Kubernetes的安全性 165
12.1 CI/CD流水線 165
12.1.1 鏡像倉庫 165
12.1.2 使用已驗(yàn)證的基礎(chǔ)鏡像 166
12.1.3 非標(biāo)準(zhǔn)基礎(chǔ)鏡像 167
12.1.4 控制鏡像的訪問權(quán)限 167
12.1.5 從非生產(chǎn)庫復(fù)制鏡像到生產(chǎn)庫 168
12.1.6 漏洞掃描 168
12.1.7 配置即代碼 169
12.1.8 鏡像簽名 169
12.1.9 鏡像晉升工作流 170
12.2 基礎(chǔ)設(shè)施與網(wǎng)絡(luò) 170
12.2.1 集群層負(fù)載隔離 170
12.2.2 節(jié)點(diǎn)隔離 172
12.2.3 運(yùn)行時(shí)隔離 172
12.2.4 網(wǎng)絡(luò)隔離 173
12.3 身份認(rèn)證與訪問控制管理(IAM) 176
12.4 審計(jì)與安全監(jiān)控 177
12.4.1 安全配置 177
12.4.2 容器與Pod的生命周期事件 178
12.4.3 應(yīng)用的日志 178
12.4.4 用戶執(zhí)行的操作 178
12.4.5 管理日志數(shù)據(jù) 179
12.4.6 遷移現(xiàn)有App到Kubernetes 179
12.5 現(xiàn)實(shí)例子 179
12.6 總結(jié) 180
術(shù)語表 181
延伸 184