Kubernetes 集群實戰 (微課版)
王雅靜,成安霞
- 出版商: 人民郵電
- 出版日期: 2024-07-01
- 售價: $479
- 貴賓價: 9.5 折 $455
- 語言: 簡體中文
- 頁數: 315
- 裝訂: 平裝
- ISBN: 7115640092
- ISBN-13: 9787115640093
-
相關分類:
Kubernetes
立即出貨 (庫存=1)
買這商品的人也買了...
-
$580$452 -
$505Spring 實戰, 5/e (Spring in Action, 5/e)
-
$580$435 -
$719$683 -
$659$626 -
$828$787 -
$580$458 -
$594$564 -
$680$537 -
$654$621 -
$654$621 -
$714$678 -
$419$398 -
$654$621 -
$680$537 -
$505Django 5 企業級 Web 應用開發實戰
-
$774$735 -
$599$569 -
$1,014$963 -
$534$507 -
$352Linux 企業運維實戰 (Redis + Zabbix + Nginx + Prometheus + Grafana + LNMP)
-
$594$564 -
$607Kubernetes 企業級雲原生運維實戰
-
$894$849 -
$680$530
相關主題
商品描述
本書全面、系統地講解Kubernetes的基礎知識和運維管理方法。本書共9個項目,包括從Docker轉向Kubernetes、部署Kubernetes集群、熟悉Kubernetes基本操作、部署和運行應用程序、發布應用程序、管理存儲和配置信息、Kubernetes調度、高效管理應用程序的部署,以及持續集成和持續部署。
本書結構清晰,在內容編寫方面註意難點分散、循序漸進,在文字敘述方面註意言簡意賅、突出重點,在實例選取方面註意實用性和針對性。為強化實踐性和可操作性,本書為每個知識點都配備了相應的操作示範,便於讀者快速上手。
本書可作為院校電腦相關專業、相關課程的教材,也可作為軟件開發人員、IT實施和運維工程師學習Kubernetes雲原生技術的參考,還可作為相關課程的培訓教材。
作者簡介
王雅静,男,副教授,山西曲沃人,现任山西国际商务职业学院副院长,山西省电子与信息教指委委员、山西省中国特色学徒制专委会委员。
近几年,发表论文十余篇,参编教材6本。其中SCI论文一篇,核心期刊发表论文2篇、主编十四五国家规划教材一本,山西省级规划教材一本。2023年指导学生参加山西省职业院校职业技能大赛获云计算赛项一等奖。
目錄大綱
項目1 從Docker轉向Kubernetes 1
【課堂學習目標】 2
知識目標 2
技能目標 2
素養目標 2
任務1.1 認識與安裝Docker 2
任務要求 2
相關知識 2
1.1.1 應用程序部署方式的演變 2
1.1.2 什麽是Docker 4
1.1.3 Docker架構 4
1.1.4 Docker版本 5
任務實現 6
任務1.1.1 安裝Docker Engine 6
任務1.1.2 瞭解docker命令的基本用法 8
任務1.1.3 運行一個容器 10
任務1.2 掌握Docker的基本操作方法 10
任務要求 10
相關知識 11
1.2.1 Docker鏡像基礎知識 11
1.2.2 Docker容器基礎知識 13
1.2.3 Docker註冊中心與倉庫 15
任務實現 17
任務1.2.1 鏡像和容器的基本操作 17
任務1.2.2 自建Docker註冊中心 19
任務1.3 構建鏡像並將應用程序容器化 20
任務要求 20
相關知識 21
1.3.1 鏡像的構建 21
1.3.2 應用程序鏡像的內容 23
1.3.3 應用程序容器化的基本步驟 23
任務實現 將應用程序容器化 24
任務1.4 轉向Kubernetes 28
任務要求 28
相關知識 28
1.4.1 什麽是Kubernetes 28
1.4.2 為什麽要使用Kubernetes 29
1.4.3 Kubernetes的主要特性 30
1.4.4 Kubernetes與雲原生 30
任務實現 31
任務1.4.1 瞭解Kubernetes的應用 31
任務1.4.2 瞭解Kubernetes在國內企業中的實際應用 32
項目小結 33
課後練習 34
項目實訓 35
實訓1 安裝Docker Engine並進行鏡像和容器的基本操作 35
實訓2 對Node.js Web應用程序進行容器化 35
項目2 部署Kubernetes集群 36
【課堂學習目標】 36
知識目標 36
技能目標 36
素養目標 36
任務2.1 創建Kubernetes集群 36
任務要求 36
相關知識 37
2.1.1 Kubernetes集群的組件 37
2.1.2 控制平面組件 38
2.1.3 工作節點組件 39
2.1.4 功能插件 40
2.1.5 Kubernetes部署方式 40
2.1.6 kubeadm工具 41
2.1.7 高可用Kubernetes集群 41
任務實現 42
任務2.1.1 規劃Kubernetes集群 42
任務2.1.2 準備Kubernetes集群安裝環境 43
任務2.1.3 部署Kubernetes集群節點 47
任務2.1.4 安裝Pod網絡插件 50
任務2.1.5 測試Kubernetes集群 52
任務2.1.6 使用containerd命令行工具crictl 52
任務2.2 部署和使用Kubernetes Dashboard 53
任務要求 53
相關知識 53
2.2.1 Kubernetes集群資源管理方式 53
2.2.2 Kubernetes Dashboard的功能 54
任務實現 54
任務2.2.1 安裝Kubernetes Dashboard 54
任務2.2.2 使用Kubernetes Dashboard 56
項目小結 59
課後練習 60
項目實訓 61
實訓1 使用kubeadm工具部署三節點Kubernetes集群 61
實訓2 安裝和使用Kubernetes Dashboard 61
項目3 熟悉Kubernetes基本操作 62
【課堂學習目標】 62
知識目標 62
技能目標 62
素養目標 62
任務3.1 理解和使用Kubernetes對象 62
任務要求 62
相關知識 63
3.1.1 什麽是Kubernetes對象 63
3.1.2 Kubernetes對象的規約和狀態 64
3.1.3 描述Kubernetes對象 64
3.1.4 Kubernetes對象的管理方法 65
3.1.5 對象的名稱和UID 66
3.1.6 標簽和註解 67
3.1.7 名稱空間 68
任務實現 69
任務3.1.1 創建Kubernetes對象 69
任務3.1.2 操作對象的標簽 71
任務3.1.3 操作名稱空間 72
任務3.2 使用kubectl命令 73
任務要求 73
相關知識 73
3.2.1 kubectl命令的基本用法 73
3.2.2 kubectl常用子命令 74
3.2.3 kubectl命令支持的資源類型 75
3.2.4 kubectl命令支持的輸出格式 76
任務實現 76
任務3.2.1 熟悉kubectl命令的用法 76
任務3.2.2 使用kubectl命令輔助生成YAML配置文件 77
任務3.3 創建和管理Pod 79
任務要求 79
相關知識 79
3.3.1 什麽是Pod 79
3.3.2 Pod與容器 79
3.3.3 Pod的定義 81
3.3.4 Pod的生命周期 82
3.3.5 Pod的健康檢查機制 83
任務實現 84
任務3.3.1 創建多容器Pod 84
任務3.3.2 為Pod及其容器設置資源配額 86
任務3.3.3 實現Pod容器的健康檢查 88
項目小結 89
課後練習 90
項目實訓 91
實訓1 操作指定名稱空間中對象的標簽 91
實訓2 創建一個多容器Pod並進行測試 91
項目4 部署和運行應用程序 92
【課堂學習目標】 92
知識目標 92
技能目標 92
素養目標 92
任務4.1 使用Deployment運行無狀態應用程序 93
任務要求 93
相關知識 93
4.1.1 工作負載資源與控制器 93
4.1.2 ReplicationController、ReplicaSet和Deployment 94
4.1.3 Deployment的應用場景 94
4.1.4 Deployment的基本用法 95
任務實現 95
任務4.1.1 創建Deployment 95
任務4.1.2 測試Deployment的自動修復功能 99
任務4.1.3 更新Deployment 99
任務4.1.4 回滾Deployment 101
任務4.1.5 暫停、恢復Deployment的更新 103
任務4.1.6 擴縮容Deployment 104
任務4.2 使用DaemonSet部署集群守護進程集 105
任務要求 105
相關知識 105
4.2.1 什麽是DaemonSet 105
4.2.2 DaemonSet的應用場景 105
任務實現 106
任務4.2.1 使用DaemonSet部署日誌收集守護進程集 106
任務4.2.2 管理DaemonSet部署的集群守護進程集 109
任務4.3 運行一次性任務與定時任務 110
任務要求 110
相關知識 111
4.3.1 Job與一次性任務 111
4.3.2 CronJob與定時任務 111
任務實現 112
任務4.3.1 使用Job運行一次性任務 112
任務4.3.2 使用CronJob運行定時任務 114
項目小結 115
課後練習 116
項目實訓 116
實訓1 使用Deployment運行Apache服務 116
實訓2 使用DaemonSet在所有工作節點上部署nginx 117
項目5 發布應用程序 118
【課堂學習目標】 118
知識目標 118
技能目標 118
素養目標 119
任務5.1 使用Service發布應用程序 119
任務要求 119
相關知識 119
5.1.1 什麽是Service 119
5.1.2 通過Endpoints理解Service的工作機制 120
5.1.3 Service的負載均衡機制 123
5.1.4 Service的服務發現機制 125
5.1.5 定義Service 126
5.1.6 Service類型 126
5.1.7 無頭Service 128
5.1.8 多埠Service 129
任務實現 129
任務5.1.1 驗證Kubernetes的服務發現機制 129
任務5.1.2 使用Service對外發布集群中的應用程序 130
任務5.1.3 使用Service發布前後端應用程序 132
任務5.2 使用Ingress發布應用程序 136
任務要求 136
相關知識 137
5.2.1 什麽是Ingress 137
5.2.2 定義Ingress 138
5.2.3 什麽是Ingress控制器 138
任務實現 139
任務5.2.1 部署nginx Ingress控制器 139
任務5.2.2 使用Ingress對外發布應用程序 142
任務5.3 實現灰度發布與藍綠發布 146
任務要求 146
相關知識 146
5.3.1 什麽是灰度發布 146
5.3.2 什麽是藍綠發布 147
5.3.3 Kubernetes的灰度發布和藍綠發布解決方案 148
5.3.4 nginx Ingress的灰度發布和藍綠發布方法 148
任務實現 149
任務5.3.1 使用nginx Ingress實現灰度發布 149
任務5.3.2 使用nginx Ingress實現藍綠發布 154
項目小結 155
課後練習 156
項目實訓 157
實訓1 使用Service發布Apache服務並考察Service工作機制 157
實訓2 部署nginx Ingress控制器並使用Ingress發布Apache服務 157
項目6 管理存儲和配置信息 158
【課堂學習目標】 158
知識目標 158
技能目標 158
素養目標 159
任務6.1 配置和使用基本存儲 159
任務要求 159
相關知識 159
6.1.1 什麽是捲 159
6.1.2 捲的類型 159
任務實現 160
任務6.1.1 使用EmptyDir捲存儲數據 160
任務6.1.2 使用HostPath捲掛載宿主機文件 161
任務6.1.3 使用NFS捲掛載NFS共享目錄 163
任務6.2 配置和使用持久捲 165
任務要求 165
相關知識 165
6.2.1 PV與PVC的持久化存儲機制 165
6.2.2 PV的定義 166
6.2.3 PVC的定義 168
6.2.4 PV和PVC的生命周期 169
6.2.5 StorageClass 169
任務實現 172
任務6.2.1 創建基於NFS的PV 172
任務6.2.2 基於PVC使用PV 173
任務6.2.3 基於StorageClass實現動態捲制備 175
任務6.3 管理配置信息和敏感信息 180
任務要求 180
相關知識 180
6.3.1 什麽是ConfigMap 180
6.3.2 創建ConfigMap 180
6.3.3 使用ConfigMap 182
6.3.4 什麽是Secret 183
6.3.5 創建Secret 184
6.3.6 使用Secret 185
任務實現 186
任務6.3.1 使用ConfigMap為Tomcat提供配置文件 186
任務6.3.2 使用Secret為MongoDB提供配置文件 188
項目小結 189
課後練習 190
項目實訓 191
實訓1 通過PVC使用基於NFS的PV 191
實訓2 使用默認StorageClass基於NFS實現動態捲制備 191
項目7 Kubernetes調度 192
【課堂學習目標】 192
知識目標 192
技能目標 192
素養目標 192
任務7.1 使用StatefulSet運行有狀態應用程序 193
任務要求 193
相關知識 193
7.1.1 什麽是StatefulSet 193
7.1.2 StatefulSet的特點 194
7.1.3 StatefulSet的組件 194
任務實現 196
任務7.1.1 使用StatefulSet部署MySQL主從集群 196
任務7.1.2 擴縮容StatefulSet 203
任務7.2 實現水平自動擴縮容 204
任務要求 204
相關知識 204
7.2.1 什麽是HPA 204
7.2.2 如何定義HPA 205
7.2.3 什麽是Metrics Server 206
任務實現 207
任務7.2.1 部署Metrics Server 207
任務7.2.2 通過HPA實現nginx的自動擴縮容 209
任務7.3 管理Pod的調度 212
任務要求 212
相關知識 213
7.3.1 Kubernetes調度概述 213
7.3.2 Pod的定向調度 213
7.3.3 親和性與反親和性調度 214
7.3.4 污點與容忍度 217
任務實現 219
任務7.3.1 將應用程序部署在特定的節點上 219
任務7.3.2 將同一應用程序部署到不同的節點上 220
任務7.3.3 將關聯的應用程序部署到同一節點上 221
任務7.3.4 示範污點和容忍度的使用 223
項目小結 224
課後練習 225
項目實訓 226
實訓1 使用StatefulSet運行nginx並進行擴縮容 226
實訓2 演示通過污點和容忍度設置驅逐Pod 227
項目8 高效管理應用程序的部署 228
【課堂學習目標】 228
知識目標 228
技能目標 228
素養目標 228
任務8.1 使用Helm簡化應用程序的部署和管理 229
任務要求 229
相關知識 229
8.1.1 什麽是Helm 229
8.1.2 Helm是如何工作的 229
8.1.3 Chart結構 230
8.1.4 Helm的基本用法 231
任務實現 232
任務8.1.1 安裝和配置Helm 232
任務8.1.2 熟悉Helm的基本操作 233
任務8.1.3 使用Helm在Kubernetes中部署Kafka 238
任務8.2 使用Kustomize定製應用程序的部署配置 241
任務要求 241
相關知識 242
8.2.1 Kustomize的特性和應用場景 242
8.2.2 Kustomization文件 242
8.2.3 Kustomize的基本用法 244
任務實現 245
任務8.2.1 使用Kustomize管理Secret 245
任務8.2.2 為Kubernetes對象設置貫穿性字段 246
任務8.2.3 使用Kustomize組合Kubernetes資源 248
任務8.2.4 使用Kustomize定製Kubernetes資源 249
任務8.2.5 使用Kustomize管理不同環境的應用程序配置 251
項目小結 253
課後練習 254
項目實訓 254
實訓1 使用Helm在Kubernetes中部署MongoDB 254
實訓2 使用Kustomize管理不同環境的應用程序配置 255
項目9 持續集成和持續部署 256
【課堂學習目標】 256
知識目標 256
技能目標 256
素養目標 257
任務9.1 在Kubernetes中部署開發的應用程序 257
任務要求 257
相關知識 257
9.1.1 將應用程序部署到Kubernetes的基本流程 257
9.1.2 開源的企業級Docker Registry項目Harbor 258
任務實現 258
任務9.1.1 基於Harbor自建企業級Docker註冊中心 258
任務9.1.2 在Kubernetes集群中使用來自Harbor的鏡像 262
任務9.1.3 將開發的應用程序部署到Kubernetes 264
任務9.2 搭建雲原生應用程序的CI/CD平臺 268
任務要求 268
相關知識 269
9.2.1 DevOps的概念 269
9.2.2 CI/CD的概念 269
9.2.3 CI/CD的主要工具 270
9.2.4 CI/CD平臺的組建思路 270
任務實現 271
任務9.2.1 規劃CI/CD平臺 271
任務9.2.2 部署GitLab服務器 271
任務9.2.3 部署Jenkins服務器 275
任務9.2.4 通過Jenkins集中管理憑據 279
任務9.3 使用Jenkins的Maven項目實施CI/CD 281
任務要求 281
相關知識 281
9.3.1 Jenkins的項目類型 281
9.3.2 Maven項目的CI/CD流程 282
任務實現 282
任務9.3.1 準備Maven項目的實施環境 282
任務9.3.2 新建Maven項目實施CI/CD 284
任務9.3.3 通過GitLab自動觸發項目構建和部署 289
任務9.4 使用Jenkins的流水線項目實施CI/CD 292
任務要求 292
相關知識 293
9.4.1 Jenkins的流水線語法 293
9.4.2 在Jenkins中使用流水線 294
任務實現 294
任務9.4.1 新建流水線項目實施CI/CD 294
任務9.4.2 實施代碼分支的CI/CD 297
任務9.5 在Kubernetes中動態創建代理節點實施CI/CD 304
任務要求 304
相關知識 304
9.5.1 Jenkins的主節點和代理節點 304
9.5.2 在Kubernetes中使用Pod作為代理節點 305
任務實現 305
任務9.5.1 在Jenkins中配置Pod代理 305
任務9.5.2 新建Jenkins項目測試Pod代理的動態創建 309
項目小結 312
課後練習 313
項目實訓 314
實訓1 手動將Python應用程序部署到Kubernetes 314
實訓2 搭建雲原生應用程序的CI/CD平臺 315
實訓3 使用Jenkins的流水線項目實施CI/CD 315