本書圍繞 Kubernetes 云原生數(shù)據(jù)基礎(chǔ)設(shè)施,介紹了如何通過 Kubernetes 管理數(shù)據(jù)存儲(chǔ),如何通過 Helm 和 Operator 在 Kubernetes 上自動(dòng)部署和管理數(shù)據(jù)庫(kù),闡述了數(shù)據(jù)流式傳輸和數(shù)據(jù)分析的過程,探討了在機(jī)器學(xué)習(xí)及其他新興用例中如何使用 Kubernetes 云原生數(shù)據(jù)等。本書不僅深入闡述了云原生基礎(chǔ)設(shè)施的發(fā)展歷程和處理方式,而且分門別類地為每個(gè)場(chǎng)景提供了可以直接運(yùn)行的示例代碼,以便讀者學(xué)習(xí)和練習(xí)。本書結(jié)構(gòu)與英文原版保持一致,是 DaoCloud 云原生數(shù)據(jù)存儲(chǔ)專家經(jīng)反復(fù)校對(duì)后提供的譯本。本書適合從事云端設(shè)計(jì)、構(gòu)建和運(yùn)行應(yīng)用的開發(fā)人員,以及架構(gòu)師和云原生工程師。無論你是Kubernetes 數(shù)據(jù)存儲(chǔ)方面的“新手”還是有經(jīng)驗(yàn)的“老兵”,相信本書都能讓你有所受益。
Jeff Carpenter 是一位軟件工程師和架構(gòu)師,在多個(gè)行業(yè)擁有豐富的從業(yè)經(jīng)歷。作為一名開發(fā)人員倡導(dǎo)者,他致力于幫助其他工程師使用 Cassandra。除此之外,Jeff Carpenter還積極參與 Cassandra 和 Kubernetes 生態(tài)系統(tǒng)中多個(gè)開源項(xiàng)目的開發(fā),其中包括 Stargate和 K8ssandra。同時(shí),他還與他人合著了《Cassandra :權(quán)威指南》一書。Patrick McFadin 是一位分布式系統(tǒng)黑客,自從他將調(diào)制解調(diào)器插入 Atari 計(jì)算機(jī)以來就致力于該領(lǐng)域。為追求冒險(xiǎn),他加入了美國(guó)海軍,并參與了海軍戰(zhàn)術(shù)數(shù)據(jù)系統(tǒng)(NTDS)的開發(fā),這進(jìn)一步激發(fā)了他對(duì)分布式系統(tǒng)的熱情。在 20 世紀(jì) 90 年代,互聯(lián)網(wǎng)快速崛起時(shí),他開始從事基礎(chǔ)設(shè)施工作,后來差點(diǎn)因?yàn)榛ヂ?lián)網(wǎng)泡沫危機(jī)而失去生計(jì)來源。其間,Patrick 獲得了加州州立理工大學(xué)圣路易斯奧比斯波分校的計(jì)算機(jī)工程學(xué)位,并專注于高規(guī)模互聯(lián)網(wǎng)基礎(chǔ)設(shè)施的研究。目前,他熱衷于分布式數(shù)據(jù)系統(tǒng)的研究,并且自 2011 年以來始終是 Cassandra 項(xiàng)目的穩(wěn)定貢獻(xiàn)者。
「DaoCloud 道客」成立于 2014 年底,公司擁有自主知識(shí)產(chǎn)權(quán)的核心技術(shù),致力于打造開放的云操作系統(tǒng)為實(shí)體經(jīng)濟(jì)賦能,推動(dòng)傳統(tǒng)企業(yè)完成數(shù)字化轉(zhuǎn)型。成立迄今,公司已在金融科技、先進(jìn)制造、智能汽車、零售網(wǎng)點(diǎn)、城市大腦等多個(gè)領(lǐng)域深耕,標(biāo)桿客戶包括交通銀行、浦發(fā)銀行、上汽集團(tuán)、格力集團(tuán)、京東方、屈臣氏集團(tuán)等。是國(guó)家級(jí)專精特新“小巨人”企業(yè)、被譽(yù)為科技領(lǐng)域準(zhǔn)獨(dú)角獸企業(yè)。
序....................................................................................xv
前言................................................................................xix
第 1 章 云原生數(shù)據(jù)基礎(chǔ)設(shè)施 :持久化、流式傳輸與批量分析.............. 1
基礎(chǔ)設(shè)施類型 ................................................................................................................2
云原生數(shù)據(jù)是什么 .........................................................................................................3
數(shù)據(jù)基礎(chǔ)設(shè)施越多,問題越多 ......................................................................................5
Kubernetes 引領(lǐng)潮流......................................................................................................6
Kubernetes 計(jì)算管理 ..............................................................................................7
Kubernetes 網(wǎng)絡(luò)管理 ..............................................................................................8
Kubernetes 存儲(chǔ)管理 ..............................................................................................8
云原生數(shù)據(jù)組件 .............................................................................................................9
迎接變革 ...................................................................................................................... 11
采用 SRE 思維方式 .............................................................................................. 11
遵循云原生數(shù)據(jù)基礎(chǔ)設(shè)施準(zhǔn)則 ............................................................................. 13
小結(jié) ............................................................................................................................. 15
第 2 章 通過 Kubernetes 管理數(shù)據(jù)存儲(chǔ)................................... 16
Docker,容器和狀態(tài) ................................................................................................... 16
在 Docker 中管理狀態(tài) .......................................................................................... 17
ix
綁定掛載 .............................................................................................................. 18
卷 ......................................................................................................................... 19
Tmpfs 掛載 ........................................................................................................... 20
卷驅(qū)動(dòng)程序........................................................................................................... 20
Kubernetes 數(shù)據(jù)存儲(chǔ)資源 ............................................................................................ 22
Pod 和卷 ............................................................................................................... 22
PV ........................................................................................................................ 28
PVC ...................................................................................................................... 32
StorageClass ......................................................................................................... 35
Kubernetes 存儲(chǔ)架構(gòu).................................................................................................... 37
Flexvolume ........................................................................................................... 37
CSI ....................................................................................................................... 38
CAS ...................................................................................................................... 40
COSI .................................................................................................................... 42
小結(jié) ............................................................................................................................. 44
第 3 章 打造 Kubernetes 數(shù)據(jù)庫(kù)........................................... 45
困難模式 ...................................................................................................................... 45
在 Kubernetes 上運(yùn)行數(shù)據(jù)基礎(chǔ)設(shè)施的前提 ................................................................. 46
在 Kubernetes 上運(yùn)行 MySQL ..................................................................................... 47
ReplicaSet .................................................................................................................... 48
Deployment .......................................................................................................... 49
Service .................................................................................................................. 53
訪問 MySQL......................................................................................................... 56
在 Kubernetes 上運(yùn)行 Apache Cassandra ..................................................................... 58
StatefulSet ............................................................................................................ 60
訪問 Cassandra ..................................................................................................... 70
小結(jié) ............................................................................................................................. 72
第 4 章 通過 Helm 在 Kubernetes 上自動(dòng)部署數(shù)據(jù)庫(kù).................. 73
通過 Helm Chart 部署應(yīng)用 ........................................................................................... 74
通過 Helm 部署 MySQL .............................................................................................. 75
Helm 的工作方式 ................................................................................................. 78
Label .................................................................................................................... 80
ServiceAccount ..................................................................................................... 81
Secret.................................................................................................................... 81
ConfigMap ............................................................................................................ 82
更新 Helm Chart ................................................................................................... 84
卸載 Helm Chart ................................................................................................... 85
使用 Helm 部署 Apache Cassandra .............................................................................. 85
親和性與反親和性 ............................................................................................... 87
Helm、CI/CD 及 Operator .................................................................................... 90
小結(jié) ............................................................................................................................. 92
第 5 章 通過 Operator 自動(dòng)管理 Kubernetes 數(shù)據(jù)庫(kù)...................93
擴(kuò)展 Kubernetes 控制平面 ........................................................................................... 94
擴(kuò)展 Kubernetes 客戶端 ....................................................................................... 94
擴(kuò)展 Kubernetes 主節(jié)點(diǎn)組件 ................................................................................ 95
擴(kuò)展 Kubernetes 工作節(jié)點(diǎn)組件 ............................................................................ 96
Operator 模式 ............................................................................................................... 97
控制器 .................................................................................................................. 97
自定義資源........................................................................................................... 99
Operator ............................................................................................................. 101
使用 Vitess Operator 管理 Kubernetes MySQL .......................................................... 103
Vitess 概述 ......................................................................................................... 103
PlanetScale Vitess Operator ................................................................................ 106
不斷發(fā)展的 Operator 生態(tài)體系 .................................................................................. 116
選擇 Operator ..................................................................................................... 116
構(gòu)建 Operator ..................................................................................................... 119
小結(jié) ........................................................................................................................... 121
第 6 章 在 Kubernetes 上集成數(shù)據(jù)基礎(chǔ)設(shè)施............................ 123
K8ssandra:生產(chǎn)就緒的 Kubernetes 上的 Cassandra ................................................. 123
K8ssandra 架構(gòu) ................................................................................................... 124
安裝 K8ssandra Operator .................................................................................... 125
創(chuàng)建 K8ssandraCluster ....................................................................................... 128
使用 Cass Operator 在 Kubernetes 上管理 Cassandra ................................................. 130
使用 Stargate API 提高開發(fā)人員的工作效率 ............................................................. 134
基于 Prometheus 和 Grafana 的統(tǒng)一監(jiān)控基礎(chǔ)設(shè)施 .................................................... 136
使用 Cassandra Reaper 進(jìn)行修復(fù) ............................................................................... 140
使用 Cassandra Medusa 進(jìn)行數(shù)據(jù)備份與恢復(fù) ........................................................... 142
創(chuàng)建備份 ............................................................................................................ 143
備份恢復(fù) ............................................................................................................ 144
在 Kubernetes 上部署多集群應(yīng)用 .............................................................................. 145
小結(jié) ........................................................................................................................... 151
第 7 章 Kubernetes 原生數(shù)據(jù)庫(kù).......................................... 152
為什么需要 Kubernetes 原生方式 .............................................................................. 152
使用 TiDB 進(jìn)行大規(guī)模混合數(shù)據(jù)訪問 ........................................................................ 154
TiDB 架構(gòu) .......................................................................................................... 155
在 Kubernetes 上部署 TiDB................................................................................ 157
配置 DataStax Astra DB 的無服務(wù)器 Cassandra ......................................................... 165
在 Kubernetes 原生數(shù)據(jù)庫(kù)中尋找什么....................................................................... 172
基本要求 ............................................................................................................ 172
Kubernetes 原生技術(shù)的未來 ............................................................................... 174
小結(jié) ........................................................................................................................... 176
第 8 章 Kubernetes 數(shù)據(jù)流式傳輸........................................ 177
流式傳輸簡(jiǎn)介 ............................................................................................................ 177
傳輸類型 ............................................................................................................ 178
傳輸保證 ............................................................................................................ 179
功能范圍 ............................................................................................................ 180
流式傳輸在 Kubernetes 上的作用 .............................................................................. 181
通過 Apache Pulsar 在 Kubernetes 上實(shí)現(xiàn)流式傳輸 .................................................. 183
準(zhǔn)備環(huán)境 ............................................................................................................ 186
使用 cert-manager 配置默認(rèn)的安全通信 .................................................................... 188
通過 Helm 部署 Apache Pulsar ........................................................................... 192
通過 Apache Flink 進(jìn)行流分析 .................................................................................. 192
在 Kubernetes 上部署 Apache Flink ................................................................... 195
小結(jié) ........................................................................................................................... 197
第 9 章 Kubernetes 數(shù)據(jù)分析.............................................198
數(shù)據(jù)分析簡(jiǎn)介 ............................................................................................................ 199
在 Kubernetes 上部署分析工作負(fù)載 .......................................................................... 200
Apache Spark 簡(jiǎn)介 ..................................................................................................... 203
在 Kubernetes 上部署 Apache Spark .......................................................................... 204
構(gòu)建自定義容器 ................................................................................................. 206
提交并運(yùn)行應(yīng)用 ................................................................................................. 206
Apache Spark 專用的 Kubernetes Operator ................................................................ 207
Kubernetes 調(diào)度器替代品 .......................................................................................... 210
Apache YuniKorn ................................................................................................ 212
Volcano ............................................................................................................... 214
Kubernetes 專用分析引擎 .......................................................................................... 217
Dask ................................................................................................................... 219
Ray ..................................................................................................................... 221
小結(jié) ........................................................................................................................... 223
第 10 章 機(jī)器學(xué)習(xí)及其他新興用例..........................................224
云原生 AI/ML 技術(shù)棧 ................................................................................................ 224
AI/ML 定義 ........................................................................................................ 225
定義 AI/ML 技術(shù)棧 ............................................................................................ 227
使用 KServe 進(jìn)行實(shí)時(shí)模型服務(wù) ......................................................................... 228
使用 Feast 進(jìn)行特征的全生命周期管理 ............................................................. 231
使用 Milvus 進(jìn)行向量相似度搜索 ..................................................................... 234
使用 Apache Arrow 實(shí)現(xiàn)高效的數(shù)據(jù)移動(dòng) .................................................................. 236
使用 lakeFS 管理對(duì)象存儲(chǔ)的版本 ............................................................................. 239
小結(jié) ........................................................................................................................... 242
第 11 章 將數(shù)據(jù)工作負(fù)載遷移到 Kubernetes 上........................244
愿景:應(yīng)用感知平臺(tái) ................................................................................................. 244
描繪成功的藍(lán)圖 ......................................................................................................... 246
人員 .................................................................................................................... 247
技術(shù) .................................................................................................................... 250
流程 .................................................................................................................... 256
云原生數(shù)據(jù)的未來 ..................................................................................................... 261
小結(jié) ........................................................................................................................... 264
關(guān)于作者..........................................................................266
關(guān)于封面..........................................................................266