Kubernetes零基礎(chǔ)實(shí)戰(zhàn)
定 價(jià):69.8 元
- 作者:羅劍鋒
- 出版時(shí)間:2024/4/1
- ISBN:9787115635938
- 出 版 社:人民郵電出版社
- 中圖法分類:TP316.85
- 頁(yè)碼:260
- 紙張:
- 版次:01
- 開(kāi)本:16開(kāi)
本書(shū)從初學(xué)者的角度出發(fā),以實(shí)戰(zhàn)為導(dǎo)向,幫助讀者快速掌握Kubernetes的核心知識(shí),并在實(shí)踐中用好Kubernetes。本書(shū)共7章。第1章介紹如何搭建一個(gè)易上手的Kubernetes實(shí)驗(yàn)環(huán)境;第2章以Docker為例介紹容器、鏡像、鏡像倉(cāng)庫(kù)等概念和運(yùn)行原理;第3章介紹容器編排概念,并搭建Minikube的單機(jī)環(huán)境和kubeadm的集群環(huán)境;第4章先講解Kubernetes的運(yùn)行機(jī)制和YAML語(yǔ)言,再介紹Pod、Job、CronJob、ConfigMap和Secret對(duì)象;第5章講解Kubernetes中的重要對(duì)象,包括Deployment、DaemonSet、Service、Ingress、PersistentVolume、StatefulSet等;第6章介紹Kubernetes的高級(jí)運(yùn)維管理知識(shí),包括滾動(dòng)更新、狀態(tài)探針、資源配額管理、集群資源監(jiān)控、網(wǎng)絡(luò)插件等;第7章介紹Kubernetes的學(xué)習(xí)經(jīng)驗(yàn)和建議。
本書(shū)從初學(xué)者的角度出發(fā),不要求Go語(yǔ)言基礎(chǔ),不涉及內(nèi)部源碼或者實(shí)現(xiàn)細(xì)節(jié),以實(shí)戰(zhàn)為導(dǎo)向,幫助讀者快速掌握Kubernetes的核心知識(shí),解決工作中遇到的實(shí)際問(wèn)題。
1. 實(shí)戰(zhàn)導(dǎo)向:配套4大項(xiàng)目實(shí)戰(zhàn),從搭建實(shí)驗(yàn)環(huán)境到高級(jí)宋芾,全秤懜帝E憧燜僬莆誎ubernetes精髓。
2. 通俗易懂:每節(jié)聚焦一個(gè)知識(shí)點(diǎn),配以代碼和圖示,幫助讀者更好地理解Kubernetes。
3. 系統(tǒng)全面:涵蓋Kubernetes的各方面知識(shí),Kubernetes的核心對(duì)象與運(yùn)行原理,同時(shí)介紹高級(jí)運(yùn)維管理知識(shí),系統(tǒng)全面,讓你深入了解并駕馭Kubernetes。
羅劍鋒,網(wǎng)名“Chrono”,Nginx/OpenResty開(kāi)源項(xiàng)目貢獻(xiàn)者,極客時(shí)間“Kubernetes入門實(shí)戰(zhàn)課”“透視HTTP協(xié)議”等專欄的作者。目前在Kong公司擔(dān)任高級(jí)工程師,從事Kong Gateway、Kong IngressController等項(xiàng)目的開(kāi)發(fā)工作。著有《C++實(shí)戰(zhàn)筆記》《Nginx完全開(kāi)發(fā)指南》《OpenResty完全開(kāi)發(fā)指南》等。
第1章 Kubernetes基本環(huán)境搭建 1
1.1 本地主機(jī) 1
1.2 虛擬機(jī)軟件 2
1.3 Linux發(fā)行版 2
1.4 創(chuàng)建虛擬機(jī) 3
1.5 安裝操作系統(tǒng) 4
1.6 常用的Linux操作 5
1.7 小結(jié) 6
第2章 Kubernetes底層基礎(chǔ):容器技術(shù) 7
2.1 認(rèn)識(shí)Docker 7
2.1.1 Docker的誕生 7
2.1.2 Docker的形態(tài) 8
2.1.3 Docker的安裝 9
2.1.4 Docker Engine的架構(gòu) 10
2.1.5 Docker的基本用法 12
2.1.6 小結(jié) 13
2.2 理解容器的本質(zhì) 13
2.2.1 容器究竟是什么 14
2.2.2 為什么要隔離 15
2.2.3 容器與虛擬機(jī)的區(qū)別 16
2.2.4 隔離是怎么實(shí)現(xiàn)的 17
2.2.5 小結(jié) 18
2.3 容器化的應(yīng)用 18
2.3.1 容器與鏡像 19
2.3.2 常用的鏡像操作命令 20
2.3.3 常用的容器操作命令 21
2.3.4 小結(jié) 23
2.4 創(chuàng)建應(yīng)用鏡像 24
2.4.1 鏡像內(nèi)部機(jī)制 24
2.4.2 什么是Dockerfile 26
2.4.3 編寫(xiě)Dockerfile 27
2.4.4 鏡像構(gòu)建工流程 29
2.4.5 小結(jié) 30
2.5 鏡像倉(cāng)庫(kù) 31
2.5.1 什么是Docker Hub 31
2.5.2 在Docker Hub上挑選鏡像 32
2.5.3 Docker Hub鏡像的命名規(guī)則 34
2.5.4 向Docker Hub上傳鏡像 37
2.5.5 離線環(huán)境使用Docker Hub 38
2.5.6 小結(jié) 38
2.6 容器與外界的通信 39
2.6.1 容器內(nèi)外的文件拷貝 39
2.6.2 共享宿主機(jī)的文件 40
2.6.3 網(wǎng)絡(luò)互聯(lián)互通 41
2.6.4 小結(jié) 44
2.7 實(shí)戰(zhàn)演練 44
2.7.1 要點(diǎn)回顧 45
2.7.2 私有鏡像倉(cāng)庫(kù) 46
2.7.3 WordPress網(wǎng)站 47
2.7.4 小結(jié) 51
第3章 Kubernetes實(shí)驗(yàn)環(huán)境搭建 52
3.1 認(rèn)識(shí)Kubernetes 52
3.1.1 什么是容器編排 52
3.1.2 什么是Kubernetes 53
3.1.3 小結(jié) 54
3.2 使用Minikube 54
3.2.1 什么是Minikube 54
3.2.2 安裝Minikube 55
3.2.3 運(yùn)行Minikube 56
3.2.4 小結(jié) 58
3.3 使用kubeadm 59
3.3.1 什么是kubeadm 59
3.3.2 集群架構(gòu) 60
3.3.3 準(zhǔn)備工作 61
3.3.4 安裝kubeadm 62
3.3.5 安裝控制面節(jié)點(diǎn) 63
3.3.6 安裝網(wǎng)絡(luò)插件 65
3.3.7 安裝數(shù)據(jù)面節(jié)點(diǎn) 65
3.3.8 安裝操作臺(tái)節(jié)點(diǎn) 66
3.3.9 小結(jié) 66
第4章 Kubernetes運(yùn)行機(jī)制和基本API對(duì)象 67
4.1 Kubernetes工作機(jī)制 67
4.1.1 云時(shí)代的操作系統(tǒng) 67
4.1.2 總體架構(gòu) 68
4.1.3 控制面 70
4.1.4 數(shù)據(jù)面 70
4.1.5 工作流程 71
4.1.6 擴(kuò)展 71
4.1.7 小結(jié) 73
4.2 工作語(yǔ)言YAML 73
4.2.1 聲明式與命令式 73
4.2.2 什么是YAML 74
4.2.3 什么是API對(duì)象 76
4.2.4 用YAML描述API對(duì)象 78
4.2.5 編寫(xiě)YAML的技巧 79
4.2.6 小結(jié) 81
4.3 核心概念Pod 81
4.3.1 為什么要有Pod 82
4.3.2 為什么Pod是核心概念 82
4.3.3 用YAML描述Pod 83
4.3.4 用kubectl操作Pod 85
4.3.5 小結(jié) 87
4.4 離線業(yè)務(wù)Job和CronJob 88
4.4.1 為什么不直接使用Pod 88
4.4.2 為什么要有Job和CronJob 89
4.4.3 用YAML描述Job和CronJob 90
4.4.4 用kubectl操作Job 91
4.4.5 用kubectl操作CronJob 94
4.4.6 小結(jié) 96
4.5 配置信息ConfigMap和Secret 96
4.5.1 什么是ConfigMap 97
4.5.2 什么是Secret 98
4.5.3 加載為環(huán)境變量 100
4.5.4 加載為文件 103
4.5.5 小結(jié) 106
4.6 實(shí)戰(zhàn)演練 106
4.6.1 要點(diǎn)回顧 106
4.6.2 搭建WordPress網(wǎng)站 108
4.6.3 小結(jié) 113
第5章 Kubernetes業(yè)務(wù)應(yīng)用API對(duì)象 114
5.1 永不宕機(jī)的Deployment 114
5.1.1 為什么要有Deployment 114
5.1.2 用YAML描述Deployment 115
5.1.3 Deployment的關(guān)鍵字段 116
5.1.4 用kubectl操作Deployment 118
5.1.5 小結(jié) 120
5.2 忠實(shí)可靠的看門狗DaemonSet 121
5.2.1 為什么要有DaemonSet 121
5.2.2 用YAML描述DaemonSet 122
5.2.3 用kubectl操作DaemonSet 124
5.2.4 污點(diǎn)和容忍度 124
5.2.5 靜態(tài)Pod 126
5.2.6 小結(jié) 127
5.3 微服務(wù)必需的Service 127
5.3.1 為什么要有Service 127
5.3.2 用YAML描述Service 128
5.3.3 用kubectl操作Service 130
5.3.4 以域名的方式訪問(wèn)Service 133
5.3.5 在集群外暴露Service 135
5.3.6 小結(jié) 136
5.4 管理集群出入流量的Ingress 137
5.4.1 為什么要有Ingress 137
5.4.2 為什么要有Ingress Controller 138
5.4.3 為什么要有Ingress Class 139
5.4.4 用YAML描述Ingress和Ingress Class 140
5.4.5 用kubectl操作Ingress和Ingress Class 142
5.4.6 使用Nginx Ingress Controller 143
5.4.7 使用Kong Ingress Controller 146
5.4.8 擴(kuò)展Kong Ingress Controller 150
5.4.9 小結(jié) 153
5.5 數(shù)據(jù)持久化PersistentVolume 154
5.5.1 什么是PersistentVolume 155
5.5.2 什么是PersistentVolumeClaim和StorageClass 155
5.5.3 用YAML描述PersistentVolume 156
5.5.4 用YAML描述PersistentVolumeClaim 158
5.5.5 在Pod里使用PersistentVolume 158
5.5.6 在Pod里使用靜態(tài)網(wǎng)絡(luò)存儲(chǔ) 161
5.5.7 在Pod里使用動(dòng)態(tài)網(wǎng)絡(luò)存儲(chǔ) 164
5.5.8 小結(jié) 167
5.6 有狀態(tài)的應(yīng)用StatefulSet 168
5.6.1 什么是有狀態(tài)的應(yīng)用 168
5.6.2 用YAML描述StatefulSet 169
5.6.3 用kubectl操作StatefulSet 170
5.6.4 StatefulSet的數(shù)據(jù)持久化 173
5.6.5 小結(jié) 175
5.7 實(shí)戰(zhàn)演練 176
5.7.1 要點(diǎn)回顧 176
5.7.2 使用Deployment搭建WordPress網(wǎng)站 178
5.7.3 使用StatefulSet優(yōu)化WordPress網(wǎng)站的設(shè)計(jì) 185
5.7.4 小結(jié) 187
第6章 Kubernetes運(yùn)維、監(jiān)控和管理 188
6.1 應(yīng)用滾動(dòng)更新 188
6.1.1 應(yīng)用的版本更新 188
6.1.2 應(yīng)用版本更新的過(guò)程 190
6.1.3 管理更新 193
6.1.4 更新描述 195
6.1.5 小結(jié) 196
6.2 容器狀態(tài)探針 197
6.2.1 探針的種類 197
6.2.2 使用探針 199
6.2.3 小結(jié) 201
6.3 容器資源配額管理 202
6.3.1 申請(qǐng)資源配額 202
6.3.2 處理策略 203
6.3.3 小結(jié) 204
6.4 集群資源配額管理 204
6.4.1 什么是名字空間 204
6.4.2 如何使用名字空間 205
6.4.3 設(shè)置資源配額 206
6.4.4 使用資源配額 208
6.4.5 默認(rèn)資源配額 210
6.4.6 小結(jié) 212
6.5 集群資源監(jiān)控 212
6.5.1 使用Metrics Server 212
6.5.2 水平自動(dòng)伸縮 214
6.5.3 使用Prometheus 217
6.5.4 小結(jié) 221
6.6 集群網(wǎng)絡(luò)插件 222
6.6.1 網(wǎng)絡(luò)模型 222
6.6.2 什么是CNI 223
6.6.3 CNI的工作原理 224
6.6.4 使用Calico插件 227
6.6.5 小結(jié) 229
6.7 實(shí)戰(zhàn)演練 230
6.7.1 要點(diǎn)回顧 230
6.7.2 部署Dashboard 231
6.7.3 小結(jié) 237
第7章 結(jié)束語(yǔ) 238
7.1 學(xué)習(xí)經(jīng)驗(yàn)分享 238
7.2 學(xué)習(xí)方式建議 239
7.3 臨別感言 240
附錄A Kubernetes棄用Docker 241
A.1 CRI 241
A.2 Containerd 242
A.3 正式棄用Docker 243
A.4 Docker的未來(lái) 245
附錄B docker-compose 246
B.1 什么是docker-compose 246
B.2 搭建私有鏡像倉(cāng)庫(kù) 247
B.3 搭建WordPress網(wǎng)站 250
B.4 小結(jié) 253
附錄C Harbor 254
C.1 什么是Harbor 254
C.2 安裝Harbor 254
C.3 使用Harbor 256
附錄D NFS網(wǎng)絡(luò)存儲(chǔ)服務(wù) 258
D.1 安裝NFS服務(wù)端 258
D.2 安裝NFS客戶端 259
D.3 驗(yàn)證NFS存儲(chǔ) 259
D.4 安裝NFS Provisioner 260