前言
第1章Docker容器基礎1
1.1什麼是容器技術1
1.1.1什麼是容器1
1.1.2容器技術的特點3
1.1.3容器的標準化3
1.1.4容器的主要應用場景4
1.2什麼是Docker5
1.2.1Docker簡介5
1.2.2Docker的組成架構7
1.3安裝Docker8
1.3.1安裝的前提條件8
1.3.2在CentOS 7.3上安裝Docker9
1.3.3在Windows 10 Pro上安裝Docker11
1.4Docker的基本用法11
1.4.1用容器啟動一個Nginx/MySQL/Redis服務12
1.4.2如何進入容器16
1.4.3如何停止、刪除容器17
1.5Docker鏡像的基本操作18
1.5.1獲取鏡像18
1.5.2列出鏡像20
1.5.3導出/導入鏡像22
1.5.4刪除本地鏡像23
1.5.5使用commit構建鏡像24
1.6用Dockerfile專業化定制鏡像26
1.6.1什麼是Dockerfile26
1.6.2常用的Dockerfile指令和語法27
1.7鏡像倉庫35
1.7.1共有倉庫35
1.7.2私有倉庫37
1.8存儲基本配置39
1.8.1什麼是數據卷39
1.8.2創建、掛載數據卷40
1.8.3共享、同步數據卷42
1.8.4備份、還原數據卷43
1.9網絡基本配置45
1.9.1網絡模型45
1.9.2Docker原生的網絡驅動47
1.9.3Docker網絡操作的基本命令48
1.10Docker API的基本介紹和使用方式53
1.10.1什麼是API53
1.10.2Docker API的種類54
1.10.3API使用前的準備55
1.10.4操作Docker API55
第2章Kubernetes基礎58
2.1什麼是容器雲58
2.1.1當前雲計算的發展58
2.1.2什麼是IaaS、PaaS和SaaS59
2.1.3容器雲介紹61
2.2什麼是Kubernetes62
2.2.1Kubernetes的基本介紹62
2.2.2Kubernetes的技術架構65
2.2.3Kubernetes解決了什麼69
2.3Kubernetes的基礎知識70
2.4深入理解Pod73
2.4.1什麼是Pod73
2.4.2Pod的內部機制74
2.4.3Pod的資源使用機制79
2.4.4Pod的基本操作命令80
2.5如何編寫Pod YAML文件81
2.5.1什麼是YAML文件81
2.5.2Pod YAML的參數定義82
2.6如何理解編排85
2.6.1通俗地理解編排85
2.6.2Kubernetes與編排86
2.7五種Kubernetes控制器88
2.7.1為什麼要有控制器88
2.7.2Kubernetes有哪些控制器89
2.8Kubernetes的網絡91
2.8.1虛擬化網絡基礎91
2.8.2Docker的網絡92
2.8.3Kubernetes網絡詳解92
2.9Kubernetes的存儲98
2.9.1存儲虛擬化介紹98
2.9.2Kubernetes存儲機制設計100
2.9.3Kubernetes CSI106
2.10Kubernetes的安全機制108
2.10.1節點側安全108
2.10.2Docker側安全109
2.10.3Kubernetes側安全110
2.10.4Kubernetes安全策略113
2.10.5更安全的Kata Containers116
2.10.6容器雲平臺安全的未來117
2.11Kubernetes監控117
2.11.1Pod的實時狀態數據117
2.11.2Pod的業務監控實現119
2.12Kubernetes單點搭建121
2.12.1安裝環境121
2.12.2初始化操作121
2.12.3master節點初始化操作123
2.12.4加入節點124
2.12.5master節點安裝進度124
2.12.6安裝flannel網絡插件125
2.12.7安裝calico網絡插件127
2.12.8搭建總結129
2.13Kubernetes高可用搭建130
2.13.1安裝環境130
2.13.2初始化操作131
2.13.3master節點初始化操作132
2.13.4加入其他master節點133
2.13.5加入節點134
2.13.6master節點安裝進度134
2.13.7master節點安裝flannel網絡插件135
2.13.8master節點安裝calico網絡插件138
2.13.9搭建總結140
2.14Kubernetes儀表板可視化141
2.14.1私鑰、證書簽名和secret生成141
2.14.2部署儀表板142
2.14.3登錄儀表板146
2.15Kubernetes的API與源碼147
2.15.1Kubernetes的版本環境147
2.15.2認證方式147
2.15.3訪問測試148
2.15.4API示例149
2.15.5代碼解析155
2.15.6主要功能介紹158
第3章騰訊雲TKE產品介紹184
3.1產品介紹184
3.1.1騰訊雲TKE名詞解釋185
3.1.2Docker鏡像名詞解釋186
3.1.3快速創建容器應用流程187
3.1.4基於騰訊雲TKE的業務交付187
3.2騰訊雲TKE產品架構188
3.3騰訊雲TKE產品功能189
3.3.1集群管理189
3.3.2應用管理190
3.3.3服務管理190
3.3.4配置項管理191
3.3.5鏡像管理191
3.4騰訊雲TKE產品優勢192
3.4.1騰訊雲TKE與自建容器服務對比192
3.4.2周邊資源對比193
3.5騰訊雲TKE網絡193
3.5.1什麼是私有網絡193
3.5.2GlobalRouter194
3.5.3VPC-CNI197
3.6騰訊雲TKE與自建Kubernetes集群201
3.6.1集群安裝和升級201
3.6.2集群網絡201
3.6.3存儲202
3.6.4負載均衡器202
3.6.5鏡像倉庫202
3.6.6集群運維及技術支持202
3.6.7資金及人力成本203
第4章騰訊雲TKE標準化操作204
4.1容器應用日志輸出標準204
4.2容器日志采集205
4.2.1容器日志分類205
4.2.2容器日志采集類型206
4.3制作基礎鏡像207
4.4Dockerfile編寫規範212
4.5容器業務類型214
4.5.1騰訊雲TKE集群類型214
4.5.2節點類型215
4.5.3工作負載選型215
4.5.4業務StorageClass類型216
4.5.5JVM內存限制217
4.5.6業務選型總結217
4.6騰訊雲TKE平臺使用規範218
第5章騰訊雲TKE應用案例219
5.1騰訊雲Docker鏡像倉庫授權連接GitLab219
5.1.1鏡像倉庫開通219
5.1.2源代碼授權221
5.2無狀態服務部署WordPress應用224
5.2.1Nginx和PHP基礎鏡像上傳至騰訊雲TKE鏡像倉庫224
5.2.2驗證鏡像推送成功226
5.2.3將Dockerfile上傳至GitLab226
5.2.4基於Dockerfile生成業務鏡像228
5.2.5構建鏡像產生的日志說明230
5.2.6業務鏡像生成驗證231
5.2.7創建MySQL安全組232
5.2.8創建MySQL數據庫233
5.2.9創建WordPress數據庫237
5.2.10部署WordPress容器網站服務239
5.3無狀態服務部署Java應用249
5.4有狀態服務部署MySQL應用252
5.5Job任務型服務:Perl運算260
5.6CronJob定時任務:echo定時應用264
5.7DaemonSet守護任務:fluentd應用268
5.8TKE Helm部署WordPress271
5.8.1Helm架構272
5.8.2開通TKE Helm272
5.8.3Helm部署WordPress274
5.8.4WordPress Chart部署信息275
5.8.5訪問驗證277
5.9Jenkins在TKE外網的架構及實現278
5.9.1Jenkins持續集成278
5.9.2Jenkins在TKE平臺架構中的應用279
5.9.3部署環境280
5.9.4TKE集群側配置280
5.9.5Jenkins側配置283
5.9.6slave Pod構建配置292
5.9.7構建測試296
5.9.8自動化構建發布300
5.9.9Jenkins批量構建配置307
5.10部署案例之ELK308
5.11容器日志的三種采集配置方式312
5.12藍綠部署328
5.13灰度發布331
5.14部署JMeter壓測工具336
5.15部署Prometheus監控341
5.16部署Ingress kong網關347
5.17部署Istio351
5.18搭建Harbor倉庫358
5.18.1Harbor核心組件及部署環境358
5.18.2非Harbor側配置359
5.18.3Harbor側配置360
第6章騰訊雲TKE運維和排障369
6.1容器服務高危操作369
6.2WordPress容器化業務操作排錯總結371
6.3騰訊雲TKE排障之節點與網絡異常372
6.4騰訊雲TKE排障之Helm與鏡像倉庫375
6.5騰訊雲TKE排障之Service和Ingress異常376
6.6騰訊雲TKE排障之Pod異常382
6.7騰訊雲TKE排障之數據卷異常384
6.8騰訊雲TKE排障之控制臺和監控異常384
6.9騰訊雲TKE健康檢查385
6.9.1腳本功能及使用385
6.9.2自助健康檢查387
第7章騰訊雲TKE經典實踐案例390
7.1騰訊雲TKE應用跨區高可用部署方案(一)390
7.1.1高可用部署架構390
7.1.2使用騰訊雲TKE進行高可用部署391
7.2騰訊雲TKE應用跨區高可用部署方案(二)402
7.2.1使用Pod親和性實現跨可用區部署403
7.2.2部署原理分析408
7.3騰訊自研業務上雲:優化Kubernetes集群負載的技術方案探討409
7.4騰訊IEG遊戲營銷活動在騰訊雲TKE中的實踐415
7.5基於騰訊雲TKE的大規模強化學習實踐421
7.5.1項目挑戰421
7.5.2訓練架構421
7.5.3業務需求422
7.5.4基於騰訊雲TKE的大規模分布式強化學習解決方案422
7.5.5創新性424
7.5.6使用騰訊雲TKE帶來的價值424
7.5.7遇到的問題426
7.6雲智天樞AI中臺在騰訊雲TKE中的實踐427
7.6.1雲智天樞平臺架構427
7.6.2各核心窗口的架構設計429
7.7某視頻公司基於騰訊雲TKE的微服務實踐434
7.7.1Spring Cloud微服務架構介紹434
7.7.2Spring Cloud與Kubernetes的優勢互補436
7.7.3業務部署模式438
7.7.4未來規劃439