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