內(nèi)容簡介
這是一本講解如何在多云/混合云的環(huán)境下進(jìn)行多集群管理、多集群應(yīng)用編排以及應(yīng)用管理和跨集群遷移的著作。
作者是阿里云容器服務(wù)云原生分布式云團(tuán)隊(duì)核心成員,他基于自己豐富的工程實(shí)踐經(jīng)驗(yàn),詳細(xì)講解了:
?云原生的關(guān)鍵技術(shù)、多云/混合云云架構(gòu)的變革和存在的問題,以及多云/混合云多集群的使用場景和價(jià)值;
?如何將不同地域的多個(gè)集群統(tǒng)一到同一個(gè)控制平面,給出了多集群統(tǒng)一管理的方案;
?Flannel、Calico、Cilium等主流容器網(wǎng)絡(luò)插件以及阿里云容器服務(wù)Terway網(wǎng)絡(luò)插件的功能和適用場景,以及如何組建一個(gè)包含云下和云上網(wǎng)絡(luò)且互聯(lián)互通的混合網(wǎng)絡(luò);
?如何為本地?cái)?shù)據(jù)中心內(nèi)的Kubernetes集群擴(kuò)容云上彈性資源。
?如何用Helm和Kustomize工具對需要部署到多個(gè)集群的應(yīng)用進(jìn)行編排;
?如何使用Argo CD系統(tǒng)管理多集群應(yīng)用的生命周期和應(yīng)用交付;
?如何使用Istio服務(wù)網(wǎng)格技術(shù)跨多集群組建服務(wù)網(wǎng)格;
?如何對云原生應(yīng)用進(jìn)行備份、恢復(fù)以及跨集群的應(yīng)用遷移。
(1)作者工程經(jīng)驗(yàn)豐富:云原生技術(shù)專家,阿里云容器服務(wù)云原生分布式云團(tuán)隊(duì)核心成員,在多云/混合云架構(gòu)下的多集群管理和混合集群彈性擴(kuò)容方面經(jīng)驗(yàn)豐富。(2)多位專家聯(lián)袂推薦:阿里云容器服務(wù)團(tuán)隊(duì)負(fù)責(zé)人易立、CNCF技術(shù)監(jiān)督委員會成員張磊、阿里云容器服務(wù)分布式云技術(shù)負(fù)責(zé)人等專家一致推薦。(3)內(nèi)容來自阿里實(shí)踐:本書注重實(shí)踐,書中總結(jié)了作者在阿里積累的大量項(xiàng)目實(shí)戰(zhàn)經(jīng)驗(yàn),書中有大量案例。
為什么要寫這本書
隨著云計(jì)算技術(shù)的蓬勃發(fā)展和落地,越來越多的企業(yè)選擇云計(jì)算技術(shù)快速完成業(yè)務(wù)數(shù)字化轉(zhuǎn)型,以便更好地適應(yīng)市場變化,贏得更大的市場空間。一些企業(yè)基于降低技術(shù)開發(fā)和運(yùn)維成本、享受隨時(shí)隨地的即時(shí)服務(wù)等原因,將業(yè)務(wù)部署在云端;一些企業(yè)出于數(shù)據(jù)主權(quán)和安全隱私方面的考慮,在內(nèi)部數(shù)據(jù)環(huán)境中搭建專有云平臺;對于公有云和專有云都有需求的企業(yè),會選擇搭建混合云架構(gòu);還有一些企業(yè)為了滿足安全合規(guī)、成本優(yōu)化等需求,以及擴(kuò)大地域覆蓋范圍,避免固定云廠商綁定,會選擇多個(gè)云供應(yīng)商。
云廠商在不同基礎(chǔ)設(shè)施、不同能力特性以及不同API的基礎(chǔ)上構(gòu)建多云/混合云方案,需要耗費(fèi)大量精力在適配和整合云平臺能力上,同時(shí)用另一種形式綁定了用戶,使其無法真正按需切換云服務(wù)提供商。傳統(tǒng)多云/混合云的種種缺陷,導(dǎo)致這種云架構(gòu)無法形成標(biāo)準(zhǔn)化的生態(tài)體系,這也是一直以來我們無法針對這種云架構(gòu)實(shí)現(xiàn)統(tǒng)一管理、統(tǒng)一交付的原因。
Kubernetes的出現(xiàn)讓多云/混合云云架構(gòu)進(jìn)入了2.0時(shí)代,Kubernetes的多項(xiàng)特性及相關(guān)生態(tài)體系為多云/混合云的標(biāo)準(zhǔn)化提供了可能性,以Kubernetes為代表的云原生技術(shù)屏蔽了基礎(chǔ)設(shè)施的差異性。目前各個(gè)云廠商以及大量的數(shù)據(jù)中心都已經(jīng)落地云原生技術(shù),使得應(yīng)用“一次定義,隨處部署”成為可能。Kubernetes標(biāo)準(zhǔn)化、聲明式的API,簡化了應(yīng)用的部署流程,讓應(yīng)用交付變得越來越標(biāo)準(zhǔn)化和統(tǒng)一化,并且支持在不同的云上使用相同的方式描述和編排應(yīng)用。
以Kubernetes為代表的云原生技術(shù)推動了以應(yīng)用為中心的多云/混合云云架構(gòu)的到來,Kubernetes已經(jīng)成為企業(yè)多云管理的事實(shí)基礎(chǔ)。本書的寫作目的是向讀者介紹當(dāng)前多云/混合云多集群管理、混合集群彈性擴(kuò)容、多集群應(yīng)用管理和交付、多集群服務(wù)網(wǎng)格以及跨集群應(yīng)用遷移等方面的實(shí)踐。
本書內(nèi)容
全書分9章。
第1章介紹云原生的關(guān)鍵技術(shù)、特性以及多云/混合云云架構(gòu)中存在的問題,進(jìn)而引出云原生技術(shù)如何加速多云/混合云云架構(gòu)的變革,后列舉多云/混合云多集群的使用場景,闡述其在實(shí)際生產(chǎn)環(huán)境中的價(jià)值。
第2章演示如何使用Minikube、Kubeadm和Rancher搭建Kubernetes多集群環(huán)境,如何基于公有云容器服務(wù)搭建用于企業(yè)級應(yīng)用開發(fā)和生產(chǎn)運(yùn)行的Kubernetes集群,以及如何設(shè)置多個(gè)集群的環(huán)境。
第3章重點(diǎn)介紹如何將不同地域的多個(gè)集群統(tǒng)一到同一個(gè)控制平面,并以開源社區(qū)的集群聯(lián)邦方案和阿里云注冊集群為例展示公有云廠商如何實(shí)現(xiàn)多集群的統(tǒng)一管控和安全治理。
第4章重點(diǎn)介紹如何組建一個(gè)包含云下和云上網(wǎng)絡(luò)的混合網(wǎng)絡(luò)。從Flannel、Calico、Cilium等主流網(wǎng)絡(luò)插件以及阿里云容器服務(wù)Terway網(wǎng)絡(luò)插件的功能特性入手,對比不同容器網(wǎng)絡(luò)插件的優(yōu)缺點(diǎn)和適用場景,還展示了將本地?cái)?shù)據(jù)中心網(wǎng)絡(luò)與云上網(wǎng)絡(luò)專線拉通并配置容器網(wǎng)絡(luò)互聯(lián)互通的方案。
第5章介紹如何為本地?cái)?shù)據(jù)中心內(nèi)的Kubernetes集群擴(kuò)容云上彈性資源。
第6章詳述多集群云原生應(yīng)用編排技術(shù),包括如何使用Helm和Kustomize編排多集群應(yīng)用,達(dá)到使用同一份應(yīng)用編排,根據(jù)不同目標(biāo)集群環(huán)境渲染不同參數(shù)配置的目的。
第7章介紹如何使用Argo CD系統(tǒng)管理多集群應(yīng)用的生命周期和應(yīng)用交付,包括Argo CD的用戶管理、源倉庫管理、集群管理、項(xiàng)目管理和應(yīng)用管理等方面的實(shí)踐。
第8章介紹如何使用Istio服務(wù)網(wǎng)格技術(shù)跨多集群組建服務(wù)網(wǎng)格,包括Istio服務(wù)網(wǎng)格技術(shù)的基礎(chǔ)知識和相關(guān)實(shí)踐。
第9章展示如何對云原生應(yīng)用進(jìn)行備份、恢復(fù)以及跨集群的應(yīng)用遷移。
本書包含大量實(shí)踐案例,且大部分內(nèi)容都是基于開源項(xiàng)目,希望讀者能夠親自動手運(yùn)行,結(jié)合開源項(xiàng)目的源碼,詳細(xì)了解每一個(gè)項(xiàng)目或組件的工作流程。
適用讀者
需要對多個(gè)Kubernetes集群進(jìn)行資源統(tǒng)一管理、安全統(tǒng)一治理、應(yīng)用統(tǒng)一交付的系統(tǒng)管理員。
需要部署跨集群應(yīng)用的應(yīng)用管理員。
需要為本地?cái)?shù)據(jù)中心內(nèi)的Kubernetes集群擴(kuò)容云上彈性資源的系統(tǒng)管理員。
需要在不同Kubernetes集群之間遷移應(yīng)用的開發(fā)運(yùn)維人員。
云原生技術(shù)愛好者。
勘誤
由于作者水平有限,編寫時(shí)間倉促,書中難免會存在一些錯(cuò)誤或者不準(zhǔn)確的地方,如果讀者發(fā)現(xiàn)了問題,請及時(shí)與我聯(lián)系。我的郵箱是haoshuwei24@gmail.com。
致謝
感謝所有為本書撰寫、出版提供幫助的人。
首先要特別感謝我所在的阿里云容器服務(wù)團(tuán)隊(duì)負(fù)責(zé)人易立、容器服務(wù)分布式云技術(shù)負(fù)責(zé)人以及每一位同事,正是有了他們的支持和團(tuán)隊(duì)的智慧,我才能在有限的時(shí)間內(nèi)將這些經(jīng)驗(yàn)、知識總結(jié)成一本書。
感謝機(jī)械工業(yè)出版社華章公司的楊福川編輯,是他促成了這本書的出版;感謝韓蕊編輯,是她多次高效率的審稿極大地提升了本書的質(zhì)量。
特別感謝我的愛人、父母,他們在我寫書期間給予我極大的支持;感謝剛剛能滿地跑的我的小寶寶,他在工作和生活中給予我無限力量。他們是我人生中寶貴的財(cái)富。
本書在撰寫過程中參考了很多開源社區(qū)和云廠商的資料,恕不一一列舉,在此對這些同行表示衷心感謝。
后,感謝正在閱讀本書的你,希望你可以從本書中獲取有價(jià)值的知識。
作者簡介(照片)
郝樹偉
畢業(yè)于北京大學(xué),阿里云容器服務(wù)技術(shù)專家,曾就職于IBM。
阿里云容器服務(wù)云原生分布式云團(tuán)隊(duì)核心成員,專注于云原生多云和混合云多集群統(tǒng)一管理和調(diào)度、混合集群、應(yīng)用交付和遷移等云原生技術(shù)的研究。
序一
序二
前言
第1章 云原生與多云/混合云 1
1.1什么是云原生 1
1.1.1云原生的定義 1
1.1.2云原生關(guān)鍵技術(shù)概述 2
1.2多云/混合云 7
1.2.1什么是多云/混合云 7
1.2.2為什么需要多云/混合云 8
1.3云原生技術(shù)助力多云/混合云云架構(gòu)變革 9
1.4云原生多云/混合云多集群的使用場景 9
1.5本章小結(jié) 12
第2章 快速搭建Kubernetes多集群環(huán)境 13
2.1使用Minikube搭建本地Kubernetes集群 13
2.2使用Kubeadm搭建Kubernetes集群 16
2.3使用Rancher搭建Kubernetes集群 20
2.4使用公有云容器服務(wù)搭建Kubernetes集群 24
2.5配置多集群的訪問和切換 27
2.6本章小結(jié) 30
第3章 多云/混合云多集群統(tǒng)一管理 31
3.1多云/混合云多集群管理現(xiàn)狀 31
3.2云上云下Kubernetes多集群環(huán)境準(zhǔn)備 32
3.3KubeFed詳解 33
3.3.1KubeFed架構(gòu)設(shè)計(jì) 33
3.3.2Helm Chart部署KubeFed 35
3.3.3集群注冊 36
3.3.4部署聯(lián)邦應(yīng)用 37
3.3.5KubeFed的發(fā)展現(xiàn)狀 41
3.4公有云廠商的集群納管解決方案 41
3.4.1注冊集群的架構(gòu)設(shè)計(jì) 41
3.4.2通信鏈路安全 43
3.4.3Kubernetes API 隧道 45
3.5納管自建Kubernetes集群 46
3.5.1創(chuàng)建注冊集群 46
3.5.2接入注冊集群 48
3.5.3注冊集群的使用 52
3.6統(tǒng)一的權(quán)限管理 54
3.6.1用戶管理 54
3.6.2統(tǒng)一授權(quán) 56
3.7本章小結(jié) 59
第4章 混合集群——混合網(wǎng)絡(luò) 60
4.1容器網(wǎng)絡(luò)接口 60
4.2Flannel網(wǎng)絡(luò)插件 62
4.2.1VXLAN模式 62
4.2.2UDP模式 65
4.2.3host-gw模式 65
4.3Calico網(wǎng)絡(luò)插件 66
4.3.1IPIP模式 66
4.3.2BGP模式 69
4.3.3網(wǎng)絡(luò)策略 75
4.4Cilium網(wǎng)絡(luò)插件 76
4.4.1eBPF技術(shù) 76
4.4.2架構(gòu)設(shè)計(jì) 77
4.4.3功能特性 78
4.4.4安裝和部署 79
4.4.5網(wǎng)絡(luò)和網(wǎng)絡(luò)策略的可視化 81
4.4.6網(wǎng)絡(luò)策略 83
4.4.7多集群組網(wǎng) 92
4.5Terway網(wǎng)絡(luò)插件 98
4.5.1使用限制 99
4.5.2Terway網(wǎng)絡(luò)規(guī)劃和準(zhǔn)備 100
4.5.3創(chuàng)建Terway網(wǎng)絡(luò)集群 100
4.5.4網(wǎng)絡(luò)安全策略 102
4.5.5擴(kuò)容Terway網(wǎng)絡(luò)集群 104
4.6容器網(wǎng)絡(luò)插件對比 105
4.7混合集群網(wǎng)絡(luò) 105
4.7.1混合集群網(wǎng)絡(luò)模式 106
4.7.2云上云下互聯(lián)互通專線方案 108
4.7.3云企業(yè)網(wǎng) 109
4.7.4邊界路由器BGP配置 109
4.8本章小結(jié) 111
第5章 混合集群——彈性伸縮 112
5.1接入注冊集群 112
5.1.1創(chuàng)建注冊集群 112
5.1.2配置網(wǎng)絡(luò)插件 113
5.1.3配置自定義節(jié)點(diǎn)添加腳本 115
5.2集群擴(kuò)容 121
5.2.1節(jié)點(diǎn)池概述 122
5.2.2創(chuàng)建節(jié)點(diǎn)池 122
5.2.3節(jié)點(diǎn)池?cái)U(kuò)容 125
5.2.4部署示例應(yīng)用 127
5.3自動彈性伸縮 129
5.3.1自動彈性伸縮概述 129
5.3.2創(chuàng)建彈性節(jié)點(diǎn)池 129
5.3.3部署示例應(yīng)用 132
5.4虛擬節(jié)點(diǎn)和彈性容器實(shí)例 134
5.4.1虛擬節(jié)點(diǎn)和彈性容器實(shí)例概述 134
5.4.2安裝、部署虛擬節(jié)點(diǎn)組件 134
5.4.3部署示例應(yīng)用 135
5.5本章小結(jié) 136
第6章 多云/混合云多集群應(yīng)用編排 137
6.1Kubernetes應(yīng)用編排技術(shù) 137
6.2Helm應(yīng)用編排 140
6.2.1Helm項(xiàng)目概述 140
6.2.2安裝Helm 141
6.2.3Helm Chart的使用 142
6.2.4Helm倉庫的搭建和使用 145
6.2.5使用Helm編排Guestbook應(yīng)用并進(jìn)行多集群部署 148
6.3Kustomize應(yīng)用編排 152
6.3.1Kustomize項(xiàng)目概述 152
6.3.2Kustomize的安裝和使用 153
6.4本章小結(jié) 157
第7章 應(yīng)用統(tǒng)一管理和交付——Argo CD 158
7.1Argo CD概述 158
7.1.1Argo CD的核心概念 159
7.1.2Argo CD架構(gòu)設(shè)計(jì)與工作原理 159
7.2Argo CD的安裝和配置 161
7.2.1安裝Argo CD 161
7.2.2Argo CD的訪問方式 163
7.2.3卸載Argo CD 165
7.3用戶管理 165
7.3.1本地用戶 165
7.3.2集成SSO 167
7.4源倉庫管理 170
7.4.1Git類型源倉庫管理 170
7.4.2Helm類型源倉庫管理 172
7.4.3存儲位置 173
7.5集群管理 174
7.5.1外部集群管理 174
7.5.2集群RBAC權(quán)限設(shè)置 177
7.6項(xiàng)目管理 177
7.6.1默認(rèn)項(xiàng)目 178
7.6.2創(chuàng)建項(xiàng)目 178
7.6.3管理項(xiàng)目 179
7.6.4項(xiàng)目角色 181
7.6.5使用UI管理項(xiàng)目 183
7.7應(yīng)用管理 184
7.7.1創(chuàng)建應(yīng)用 184
7.7.2應(yīng)用的統(tǒng)一視圖管理 191
7.7.3應(yīng)用的更新和回滾 192
7.8本章小結(jié) 200
第8章 服務(wù)統(tǒng)一治理 201
8.1Istio服務(wù)網(wǎng)格 201
8.1.1什么是服務(wù)網(wǎng)格 201
8.1.2Istio服務(wù)網(wǎng)格架構(gòu) 202
8.2Istio服務(wù)網(wǎng)格的流量治理 204
8.2.1虛擬服務(wù) 204
8.2.2目標(biāo)規(guī)則 205
8.2.3網(wǎng)關(guān) 206
8.2.4服務(wù)入口 207
8.3部署Istio服務(wù)網(wǎng)格組件和示例應(yīng)用 207
8.3.1安裝和部署Istio 207
8.3.2部署示例應(yīng)用 209
8.4Istio東西流量管理 211
8.4.1配置動態(tài)路由 211
8.4.2故障注入 214
8.4.3灰度流量 216
8.4.4熔斷 217
8.5Istio多集群部署管理 219
8.5.1使用限制和準(zhǔn)備工作 219
8.5.2單一網(wǎng)絡(luò)共享控制平面部署模型 220
8.5.3單一網(wǎng)絡(luò)多控制平面部署模型 224
8.5.4多網(wǎng)絡(luò)共享控制平面部署模型 226
8.5.5多網(wǎng)絡(luò)多控制平面部署模型 231
8.5.6驗(yàn)證服務(wù)網(wǎng)格中東西流量的示例應(yīng)用 234
8.6跨地域多集群流量統(tǒng)一治理 236
8.7本章小結(jié) 243
第9章 應(yīng)用的備份恢復(fù)和跨集群遷移 244
9.1Velero概述 244
9.1.1什么是Velero 244
9.1.2Velero的工作原理 245
9.2Velero的安裝和配置 246
9.2.1安裝Velero客戶端 246
9.2.2安裝和啟動Minio對象存儲服務(wù) 247
9.2.3安裝和配置Velero服務(wù)組件 248
9.2.4卸載Velero 251
9.3提供商與插件 251
9.4存儲位置 252
9.4.1BackupStorageLocation 252
9.4.2VolumeSnapshotLocation 253
9.4.3使用限制和注意事項(xiàng) 254
9.4.4一些常用的配置策略和使用方法 254
9.5備份和恢復(fù) 256
9.5.1備份 256
9.5.2恢復(fù) 260
9.5.3定時(shí)備份 264
9.6Restic集成 264
9.6.1Velero集成Restic 265
9.6.2備份與恢復(fù) 266
9.6.3Velero集成Restic進(jìn)行備份和恢復(fù) 270
9.6.4使用限制 275
9.6.5使用自定義初始化容器配置 275
9.7災(zāi)難恢復(fù)和跨集群遷移實(shí)踐 277
9.7.1Velero 客戶端和服務(wù)端的安裝 277
9.7.2災(zāi)難恢復(fù) 279
9.7.3集群/應(yīng)用遷移 280
9.8本章小結(jié) 282