目錄
福利:文末分享云原生相關全套資料哦
一、云計算?云原生?
二、云原生帶來什么好處
7個字:隔離、彈性、自動化。
三、云原生的基礎知識
四、云原生中最重要的概念
1、虛機
2、容器
3、容器編排
4、VPC
5、微服務(Microservices)
6、服務網格(Service Mesh)
7、無服務器(serverless)
8、基礎設施即代碼(IaC)
9、DevOps
五、更深一步:云計算背后的東西
1、云平臺和云管平臺
2、地域(Region)
3、可用區(qū)(AZ)
4、SDN
5、網絡資源池
那么,云原生是什么
福利:文末分享云原生相關全套資料哦
云原生技術里有很多技術、概念和術語,不了解的人,往往弄不清楚而一頭霧水,這些概念都是啥,之間是什么關系?
本文要說的就是這些。
本文更多是科普和掃盲,無意面面俱到,也無意深入細節(jié)。 本文適合一定IT基礎的人閱讀,完全的小白和門外漢,可能是看不懂的。
完全看不懂的云原生
一、云計算?云原生?
云原生
就是“云+原生”(cloud + native)。一般而言,“云
”更關注IaaS,也就是基礎設施層面(如計算、存儲、網絡);“原生
”更關注PaaS層面(如容器、微服務)。之所以叫“原生”,是因為它一生下來是給云用的,可謂是生在云里,長在云里。
一位學者可能會說:“云計算是一種靈活提供基礎IT資源的架構,云原生是一種在云計算上創(chuàng)建和運行應用程序的方法?!边@話沒有什么錯,但也沒有什么用,因為太抽象了。
在詞匯使用上,據我觀察,“云計算”和“云原生”基本上已經混為一談了,我從來沒有見過一個人說“云原生”的時候,另一個人站出來說“不對,這個是云計算”,反之亦然。
唯一的區(qū)別是:人們以前愛說“云計算”,現在愛說“云原生”。
畢竟,新詞總是高大上一點嘛。
所以,這塊不要太糾結。
二、云原生帶來什么好處
其實這等同一個問題:為什么要上云。
好處有很多,我本人
覺得最重要的有3點:
7個字:隔離、彈性、自動化。
1、隔離
:在傳統(tǒng)架構中,一個網絡配置錯誤可能導致整個DC故障,一個模塊出問題可能會導致整個應用系統(tǒng)故障。而且往往很難定位和隔離。云原生通過VPC、容器、微服務這些能力,把網絡、操作系統(tǒng)、應用系統(tǒng)以虛擬
或拆分的方式隔離開來,做到互不影響。一個部分的運行、變更或故障,不會影響其他部分,這就安全多了。
2、彈性
:應用系統(tǒng)在服務能力緊張時,需要擴容,比如增加機器的內存和CPU,或是部署新的實例并做負載均衡,在傳統(tǒng)環(huán)境下,這需要一定的工作量,尤其是需要運維人員的安裝和配置。云原生在一開始設計時,就考慮了如何更方便、更快捷、更安全地擴容,比如虛機、容器的快速生成,自動地擴容和負載均衡。這樣,以前是幾個小時的事,現在稍稍動動手指就可以了,幾分鐘或者更少的時間搞定。
3、自動化
:不管是部署還是變更、維護,如果一項工作涉及多個步驟,需要多項配置,甚至需要多個團隊配合,那就會很繁瑣,很復雜,對使用者的要求就會很高,出錯的概率就會變大。如果只需一條指令、一個按鍵就能完成相關工作,那就是高度的自動化。云原生的很多設計,就是以盡可能少的指令,完成盡可能復雜的操作。
自動化通過什么方式呈現給用戶?一是圖形化界面
,讓各類用戶(平臺租戶、運營人員、運維人員、開發(fā)人員)都可以簡單上手操作,比如租戶(就是客戶)點點鼠標就能申請一臺虛機或是一臺網關;二是命令行界面
,讓喜歡命令行的人可以直接或者寫腳本調用;三是API
,讓程序員可以寫程序任意編排操作。這樣,各種不同技能基礎的人,都能夠盡自己能力實現盡可能的自動化。
云原生的本質,就是IT全過程的軟件化,也即“軟件定義everything”在IT行業(yè)得以實現,而且是規(guī)模化和自動化的實現。原先冗長、復雜、頗費時費力的技術工作和體力活,現在可以輕輕松松搞定。
說這么多,現在略略見識一下:
kubectl create deployment nginx --image=nginx --replicas=2
kubectl set image deployment/nginx nginx=nginx:latest
以上是兩條kubernetes命令,其中,第一條命令部署兩個nginx容器,第二條命令則讓它們更新成一個最新的鏡像版本。
看,這多么簡單。
三、云原生的基礎知識
考慮掃盲性質,現在說一點最基礎的東西。
1、虛機
:虛機是在物理服務器之上虛擬出來的具有完整功能的計算機。人們可以通過云平臺創(chuàng)建虛機并安裝操作系統(tǒng),對其擴容,并在不停機的情況下將其遷移到另一臺物理機上。
2、裸金屬
:裸金屬即云納管的物理機。裸金屬不參與虛擬化,不提供虛機,但一樣可以被云管理,可以被云自動化地分配、回收和管理。
3、存儲
:云可以提供塊存儲(如IPSAN)、文件存儲(如NAS)、對象存儲(OBS)。并且都提供界面、命令行和API給用戶,讓用戶可以非常便利的使用和管理存儲。通過對存儲的資源池化和虛擬化,抹平了不同設備的差異,用戶不再需要學習具體的存儲設備知識、指令和配置方法。?
比如在openstack中,用如下命令創(chuàng)建一個叫my_volume的卷,大小為10G,然后通過命令將這個創(chuàng)建好的卷連接到虛擬服務器my_server上。
openstack volume create --size 10 my_volume
openstack server add volume myserver my_volume
看,這多么簡單!作為一個完全不懂存儲的人,我也可以輕而易舉做到。
可以說,云的用戶,就是在抽象層或者說邏輯層工作,底層細節(jié)完全可以不了解。
4、網絡
:云提供虛擬的網絡,用戶并不用實際購買和獨占網絡設備,就可以在云里構建出一個個互相隔離的虛擬網絡分區(qū),組織他的多臺虛機。這通過創(chuàng)建虛擬私有網絡(VPC)、虛擬子網、虛擬路由器、虛擬NAT網關等來實現。用戶不再需要和底層的網絡設備打交道,用戶只需要在云平臺里“創(chuàng)建”和“配置”即可。
5、容器
:容器可視為輕量級的虛擬機,它把應用“集裝箱”化,應用程序和自己需要的依賴
(Depends)打包在一起,自成一體。容器可以在各種操作系統(tǒng)中部署,不受具體宿主機影響。比起虛機,它更輕量,更方便、可以秒級啟動。
以上這些是最基本的概念,相對靠基礎設施一些,再往上走,就會遇到更“云原生”一些的概念:微服務
、服務網格
、函數計算
、DevOps
等,這些更靠近開發(fā)一些。
下面,我們繼續(xù),部分概念會再次說起。
四、云原生中最重要的概念
搞明白下面這些概念及其關系,你就心里有底了。
1、虛機
虛機(VM
,Virtual Machine,或稱虛擬機?)是在一臺物理機(又稱宿主機
)上虛擬出來的計算機,目的是提高計算機硬件資源的利用率。這通過物理機上安裝VMM(Virtual Machine Manager,虛擬機管理器)來實現。VMM給虛機分配調度相應的資源(內存、CPU、網絡、磁盤等),加載虛機的操作系統(tǒng),并調度給虛機最終所需的物理資源。大體而言,一臺物理機可以虛擬出10臺虛擬機。
虛機、VMM、物理機關系示意圖
和容器相比,虛機還是有些笨重的,由于虛機鏡像
包含了整個操作系統(tǒng),所以通常有幾個GB大小。虛機啟動時間通常是1分鐘或幾分鐘。
虛機鏡像
是包含一臺計算機的操作系統(tǒng)、安裝的軟件、數據和配置等信息的文件。鏡像文件通常被用來作為虛擬機的模板,以便在需要時快速地創(chuàng)建多臺相同內容的虛擬機。
正是因為虛機還不夠敏捷便利,速度也不夠快,所以才產生了容器技術。
2、容器
在一個操作系統(tǒng)中,通過進程隔離、內存隔離、文件隔離、用戶隔離、網絡隔離等技術,形成一個個互相隔離的運行空間,每個空間里運行著應用程序和其所依賴的程序及庫,這就是容器。
這樣,多個容器共享同一個操作系統(tǒng),但又互相隔離。容器通常不大,可以秒級啟動,非常迅捷。
容器實現了完全的可移植性,在支持容器的任何操作系統(tǒng)或環(huán)境上都可以兼容運行。因為容器里的軟件和所需要的庫依賴是封裝好的,和所在宿主機的庫是互相隔離的,不需要像以前那樣,要在宿主機上做各種安裝和適配。
在Linux操作系統(tǒng)中,早有通過命名空間(namespace)和控制組(control group)實現應用程序隔離的方法,使得一個或多個進程的CPU,內存,磁盤I / O和網絡使用可以隔離開來互不影響,此即Linux容器(LXC)技術。但對用戶而言,LXC并不易用。Docker把這些較為復雜的容器功能封裝起來,形成對用戶友好的操作命令或圖形界面,才使得容器流行起來。
3、容器編排
在大型系統(tǒng)中,需要大量的容器同時運行,直接管理一個個容器有點麻煩,如果能以更優(yōu)雅更自動化的方法就更好了,這就出現了容器編排
工具,有好幾種容器編排工具,但是毫無疑問,Kubernetes(簡稱k8s)這些年最流行的容器編排工具。
所謂
編排
(orchestration),就是統(tǒng)攬全局式的規(guī)劃、組織、部署、管理等,把眾多復雜的元素管理地井然有序,達到管理者所指定和預期的目標。
k8s提供了許多強大的功能,例如部署容器、自動擴容、負載均衡、應用更新、故障恢復和容器監(jiān)控等。總之,它能讓用戶更輕松、更便利地部署、調度和監(jiān)控容器。用戶可以通過描述性的文件,描述k8s應部署容器的規(guī)格、個數和關系,指定服務端口,將多個容器組織成一個應用,并能根據容器的負載情況自動地擴展容器的數量。
比如下面兩句話,就能將nginx容器擴容到5個。
kubectl scale deployment web-server --replicas=5
kubectl rollout restart deployment/web-server
4、VPC
VPC(Virtual Private Cloud,虛擬私有云)是在云中構建出來的一個獨立的、隔離的虛擬網絡環(huán)境,一朵云中,可以有多個VPC。
雖然名字里帶個“云”字,但人們更喜歡稱之為“虛擬私有網”,因為它更多的特性是網,然后才是其上的虛機、容器等。
用戶可以在VPC中自主規(guī)劃 IP 地址,創(chuàng)建子網,并使用虛擬交換機vSwitch、虛擬路由器vRouter、虛擬負載均衡vLB等網絡組件,還能通過網絡ACL、安全組、虛擬防火墻vFW等方式,實現網絡內虛機的隔離保護。
比起虛機和容器,虛擬網絡會更讓人難以理解一些,如果想快速掃盲,見我下一篇文章《讓人懵懂的云網絡,里面原來是這些》。
5、微服務(Microservices)
微服務是一種架構,在這種架構中,把原先應用系統(tǒng)中的各個功能模塊獨立出來,形成一個個服務,跑在不同的虛機或容器中,然后用標準化的方法互相調用。這些服務原先是耦合在一臺機器里的,現在都獨立出來了,人們也就能獨立地開發(fā)、部署和管理它們了。
微服務架構的目標是讓每個服務都盡可能簡單、單一,每個服務只執(zhí)行特定的業(yè)務邏輯,并且具備良好的橫向擴展能力。各服務之間通過簡單、輕量的通信協(xié)議(如REST、gRPC等)進行通信。
微服務的好處是,一、便于隔離
,一個服務壞了也不會影響其他服務,不像以前都在一個機器里,一壞就感染一片;二、便于擴容
,一個服務如果形成性能瓶頸,就對那個服務擴容,多弄幾個容器運行它。不像以前那樣,要對整個應用系統(tǒng)擴容。三、便于維護
,每個服務都可以獨立地開發(fā)、部署、運維,一個服務只由一個小團隊專門負責。在另一個層面上講,小團隊的管理,也顯然要比大團隊容易。
在微服務架構中,常遇到兩個概念:API網關
和服務網格
。
API網關
提供集中式的服務請求處理,集成了反向代理、負載均衡、SSL卸載、身份認證、限流熔斷、超時重試、流量監(jiān)控、日志統(tǒng)計等功能,適合處理來自外部的流量(南北向)。在客戶端和后臺服務之間可以存在一個或多個功能不同的API網關。最受歡迎的網關代理是Nginx、HAProxy和Envoy。
對于系統(tǒng)內部復雜的服務間調用(東西向),為了避免瓶頸,還是以分布式的方法通信比較好,這就是近年來比較火的服務網格
。
6、服務網格(Service Mesh)
由于服務總是要處理請求,遇到網絡不好的時候,就需要重連或做超時處理,這樣,每個服務都需要實現請求重試、超時處理、斷路器等機制。如果每個服務都寫這樣的機制,就有點不經濟。如果服務還是用不同語言實現的,這些部分也得用不同語言實現,就很不經濟了。
服務網格
的想法是將這種通用的功能從每個服務中抽出來,最早的做法是給服務提供SDK(便于服務集成通用功能),后來逐漸演變?yōu)橛瑟毩⒌拇韥硗瓿赏ㄓ霉δ埽涸诿總€服務旁邊運行一個代理(sidecar
),sidecar作為一個單獨的容器與應用容器放在k8s的同一個Pod
中(Pod是k8s調度的最小單元,里面可以有1個或多個容器)運行,它們共享相同的網絡。sidecar處理流入或流出的請求和響應流量,實現路由、安全和監(jiān)控等功能。
比如:Istio服務網格在服務的每個應用容器旁運行Envoy代理作為sidecar,所有sidecar都受微服務控制平面管理。
由Sidecar組成的服務網格
注:Sidecar是一種形象的比喻,原意是摩托車旁的邊車。
真正的sidecar
這種分離讓開發(fā)人員能夠很集中精力在業(yè)務上,而真正不再考慮非業(yè)務功能,所有服務所共需的通用能力,都放在sidecar里來做。
就好像開車的就專心開車,通信和作戰(zhàn)交給邊車上的隊友。
7、無服務器(serverless)
“無服務器
”并非真的沒有服務器,而是說用戶(比如開發(fā)人員)完全不用關心服務器的事,不用申請服務器、存儲和網絡。用戶只關心自己的程序,所有和資源相關的瑣事都由云提供商處理。代碼執(zhí)行時,云提供商會啟動資源,代碼執(zhí)行結束時,釋放資源。用戶只為使用時間付費,而不為閑置容量付費。
這提法更像是一個理念,更像是一個產品營銷話術,而不像一項新技術,因為“無服務器”的背后無非還是虛機、容器、微服務這些,只是用戶可以不管這些,這些都由云服務商提供,用戶把精力放在自己的程序上就好。
函數即服務
(Function as a Service,FaaS
)是最常被提起的無服務器架構,雖然它只是serverless的一種。使用FaaS
,用戶將函數放到云上(將代碼作為zip文件或容器鏡像上傳),在需要的時候,通過HTTP調用即可,用戶只需為函數的執(zhí)行時間付費,函數所在容器,以及所需的RunTime,都由云服務商調度和管理。常見的FaaS產品AWS Lambada、Azure Functions和谷歌的Cloud Functions。
顯然,這種一會運行一會關閉的函數,只適合那種一過性的運算,那種很簡單的、無狀態(tài)的運算,比如簡單計算、更新記錄、發(fā)送消息、寫入數據這種。
除了FaaS,還有別的serverless,比如serverless DB,它不需要用戶手動維護和配置服務器資源,而是自動擴展和伸縮。
總之,只要是用戶原先要考慮服務器而現在不用考慮服務器的服務,都是Serverless。
8、基礎設施即代碼(IaC)
程序員大多是不太愛碰硬件的,他們喜歡沉溺在軟件的思維里。當他們不得不接觸和管理硬件的時候(比如被輪崗或是種種原因),他們就決心用軟件的方式來管理這些硬件。
基礎設施即代碼
(Infrastructure as Code,IaC)用編程語言描述他們要運維和管理的基礎設施(服務器、網絡設備、存儲設備等硬件),這樣,部署和管理笨重的硬件設備,無非也就是在電腦面前敲幾句代碼而已,不再需要像以前那樣吭哧吭哧地猛干了。
這是硬件維護人員多年以來夢寐以求的自動化?,F在,人們只是寫一個腳本,用腳本去部署服務器,并配置各種網絡、存儲、負載均衡器等任何基礎設施服務。然后,只是執(zhí)行這個腳本,就可以在完全不同的AZ(AZ即可用區(qū),后面會介紹)中部署一套高度一致的基礎設施。以前,這樣的任務需要數人、數周才能完成?,F在,幾個小時就可以完成。
基礎設施即代碼,換句話說,即,軟件定義基礎設施
。
9、DevOps
DevOps(它是“Development”和“Operations”的縮寫),就是從開發(fā)到運維,整個過程自動化。自動化地編譯、測試、構建容器、上傳容器、部署、發(fā)布、監(jiān)控、告警等,如果發(fā)現了Bug或問題,團隊能夠迅速迭代這一過程,修改代碼,然后又是自動化的編譯、測試、部署、發(fā)布等,一天可以來上這么10次!
在2009年O’Reilly Velocity大會上兩個Flickr員工做了題為《10+ Deploys Per Day: Dev and Ops Cooperation at Flickr》的演講1,引起了轟動,隨后得以蓬勃發(fā)展。
當然,這需要多種工具和多個腳本的有機銜接。
以前,這一過程冗長,開發(fā)團隊和運維團隊的配合并不容易。因為他們有著不同的部門和領導,有著不同的文化,他們的目標和利益并不一致。從開發(fā)到上線,這個過程中,有著各種流程和審批,1天能有10次發(fā)布?開玩笑,10天能有1次就不錯了?,F在可好,全都自動化了,一個小團隊,從開發(fā)到發(fā)布,全都干了,還很快,運維人員幾乎都不用動手,或者幾乎都不需要出現。
本質上,DevOps是搞開發(fā)的人終于幫助搞運維的人,把運維那攤子事給自動化了(搞運維的人,通常不太擅長寫代碼)。我想,這肯定是哪個公司,非要逼得開發(fā)人員去搞運維,所以他們沒辦法,只能自己拿起看家本事造福自己了。開發(fā)那一段的自動化,早在近二十年前,他們搞敏捷開發(fā)
的時候就搞差不多了,他們早早就搞了CI
(持續(xù)集成),然后又搞了CD
(持續(xù)部署),這十年,他們通過前面說的容器、微服務、k8s等技術,再加上一些新方法、新工具,把運維這一段也搞定了,他們終于打通了任督二脈。
崇拜DevOps的人會說遠遠不止這些,是的,他們往DevOps里裝了種種思想、理念和方法論,以至于人們似乎已經忘了它本來想致力于什么。我以前寫過一篇文章講如何從高層把握DevOps2的實質,有興趣可以看看。
下面這張圖有助于你從全貌上概覽一下,這只是一種框架,引自3,篇幅有限,此處不細解釋。
一種DevOps工作模型
滾動發(fā)布
是一種發(fā)布軟件更新的方法。軟件新版本先在小范圍內發(fā)布,沒有什么問題的話,再慢慢擴展到更大的范圍。這樣,一開始如果有問題,受影響的也只是少數用戶。類似概念和叫法有灰度發(fā)布
、金絲雀發(fā)布
。以前礦工下礦前,為防范探洞里有有毒氣體,會先放一只金絲雀進去,看金絲雀能否活下來,金絲雀發(fā)布得名于此。
五、更深一步:云計算背后的東西
下面的內容有點偏底層技術了。
如果你不想了解更多,跳過這章就好。
1、云平臺和云管平臺
當“云管平臺”(Cloud Management Platform)這個說法在n年前第一次介紹給我時,我當時還真有點懵。
我心想,云平臺(Cloud Platform)不就是Openstack這些東西嗎,怎么又冒出來一個“云管”平臺?
后來才弄明白,原來還是有點不同的。
云平臺
更多是指云計算平臺,偏技術層面,提供計算、存儲、數據庫、網絡、安全等基礎設施服務,供客戶在云上部署和運行應用程序。比如OpenStack提供IaaS,Docker和Kubernetes提供PaaS等,這些都屬于云平臺。
云管平臺
從名稱上就能看出來,側重于管理,側重于多云、混合云、異構云場景下的統(tǒng)一管理。它給用戶提供統(tǒng)一的運營控制臺和運維控制臺。所謂運營控制臺,就是為用戶提供登錄、資源開通、使用、配置等功能,并且達到“自服務
”的水平;所謂運維控制臺,就是讓運維人員可以對物理資源狀況進行監(jiān)控和管理。
所謂“
自服務
”,是指客戶可以通過平臺界面或API,自行創(chuàng)建和管理虛擬機、存儲空間、網絡資源和其他云服務,而無需其他專業(yè)人員參與,自己點點鼠標,想要的東西就出現了,就能用了。
兩者之間有一個明顯的不同是:云管平臺可以管理多云以及一朵云中的多個Region,而云平臺通常只能管理本Region內的資源。
在我看來,云平臺更偏技術一些,更靠近基礎設施一些,云管平臺則在云平臺的基礎上又做了一次封裝,以更簡便易用的方式將云服務提供給用戶。
不過,正如“云計算”和“云原生”這兩個詞已經被人們混用,“云平臺”和“云管平臺”往往也被混用起來了,你聽他說“云平臺”,其實他很大概率是在說“云管平臺”。
2、地域(Region)
Region
即一朵云內某個物理區(qū)域中基礎設施服務的集合。不同Region之間的物理資源(計算、存儲、網絡)是完全隔離不共享的。
一朵云里可以有多個Region,每個Region可位于不同的城市的DC(數據中心)中,也可以位于同一個城市的不同DC中。不同DC能否放在一個Region中,關鍵看時延,如果時延超過 2ms,就應該在不同的Region中,因為同一Region內對時延有較高要求。
不同Region之間的時延也應該在100ms之內4,因為云管平臺對Region的命令下發(fā)和信息上報時延也有要求。
不同Region之間的通信使用“云連接
”,通過“專線網關
”實現,這個網關可以是軟件的,也可以是硬件交換機(又稱專線交換機),這塊見我下篇關于云網絡的文章。
每個Region中包含數個獨立的,物理分隔開的AZ
,每個AZ可以有獨立的供電,制冷。
3、可用區(qū)(AZ)
可用區(qū)
(Available Zone,AZ)可以簡單理解(雖然并非總是如此)為機房及其內的計算、存儲和網絡資源。一個Region內有多個機房,每個機房就是一個AZ。不同AZ使用不同的電力和制冷,使用獨立的計算、存儲和網絡資源(但網絡是互通的)。這樣,即便一個AZ不可用了,另一個還是可用的。AZ內通信時延要小于0.25ms。
AZ
中的A就是可用(Available)的意思,一般而言,不同AZ使用獨立的電力、制冷、機房模塊等基礎環(huán)境。應用系統(tǒng)如果要實現高可用,應該同時部署多份在不同的可用區(qū)內,這樣,一個AZ壞了,還有另一個AZ可以提供服務。
裸金屬和不同CPU架構的物理機,通常部署在不同的AZ;同一個AZ內,又可以根據不同性能屬性劃分不同的主機組(host aggregate),便于管理員進一步按組分發(fā)虛機5。不同主機組提供不同的主機資源,但存儲和網絡資源是共享的。
VPC的子網是可以跨AZ的。比如在同一個子網中,VM1在AZ1,VM2在AZ2,他們可以同時承擔Web服務器功能,這樣,即便整個AZ1不可用了,VM2仍然能夠提供服務。
4、SDN
傳統(tǒng)的網絡設備是分布式和去中心化的,每臺設備可以通過自主學習和人工配置,知道如何轉發(fā)數據包,而不需要一個集中式的控制設備。SDN則像各個網絡設備的軟件大腦,讓各網絡設備不再用自主學習和人工配置,而是由大腦下達命令,告訴各設備應該怎么轉發(fā)數據包。
SDN
(Software?Defined?Network)就是軟件定義網絡
,那個大腦被稱為SDN控制器。
SDN為什么要把原先的分布式運行改為集中控制呢?因為如果每個網絡設備都要人工配置和管理,就會太麻煩,容易出錯,不易于統(tǒng)一集中管控。如果能力足夠,那就不如一起管了算了。
在虛擬網絡里,像虛擬交換機、虛擬路由器、虛擬網關等等,這些虛擬網絡設備,都受SDN統(tǒng)一管理。
5、網絡資源池
網絡資源池由一組網絡硬件設備(如交換機、路由器等)構成,為上層的虛擬網絡、虛機、存儲等提供底層的通信功能。
說起來有點復雜,大體而言,應用系統(tǒng)在虛擬網絡(Overlay
)上跑,虛擬網絡基于隧道技術在物理網絡(Underlay
)上跑。
從技術上講,Overlay的二層數據包封裝在Underlay的三層報文中傳輸,到達目的地之后再解封裝得到Overlay的二層報文。實際上,這是一種“L2 over L3”的隧道封裝技術,目前主流的隧道封裝協(xié)議為VxLAN。
如果Overlay的網絡數據封裝和路由都是軟件實現的,那就是軟件SDN
(又稱主機Overlay
),如果是硬件網絡設備做的,那就是硬件SDN
(又稱網絡Overlay
)。
一個Region需要一套網絡資源池,提供該Region內共用(多AZ、多VPC共用)的底層數據包轉發(fā),該資源池是由跨機房模塊(也即跨AZ)的多組Leaf+Spine模塊組成,跨機房模塊的網絡交換通過一組Core節(jié)點(Super Spine)交換機實現。
在主機Overlay這種主流場景下,網絡資源池中的網絡設備并不關心上層是哪個VM要和哪個VM通信,它們只是忠實地轉發(fā)數據包而已,它們不會去關心隧道里的虛擬網絡通信。
通過隧道,在物理網絡上構建虛擬網絡
上圖使用兩臺Super Spine,四臺Spine,八臺Leaf,并通過在不同機房部署,提供了一套網絡資源池,供多個AZ共同使用。這樣,雖然VPC子網和虛機可能在不同AZ和機房內,但通過VxLAN隧道,它們之間的通信就像在一個交換機下面的二層通信。
那么,云原生是什么
看到現在,你大概知道云原生是什么了吧。
整個IT被云化了,不管是搞開發(fā)的,還是搞運維的,都在使用云,依靠云,發(fā)展云。
IT的一切,都盡可能用軟件定義,都盡可能虛擬化,一切都是為了簡單、自動、彈性、安全。
所有使用云的人,都只是點點鼠標,就可以完成以前很復雜的事。
IT在給其他行業(yè)搞數字化轉型的同時,給自己搞了個數字化轉型。
本質上,IT人終于把自己給解放了。
他們感嘆說,云
里原
來才是我們生
活應有的樣子。
充電君會在第一時間給你帶來最新、最全面的解讀,別忘了三聯(lián)一波哦。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
關注公眾號:資源充電吧
回復:Chat GPT
充電君發(fā)你:免費暢享使用中文版哦
點擊小卡片關注下,回復:IT文章來源:http://www.zghlxwxcb.cn/news/detail-478427.html
想要的資料全都有?文章來源地址http://www.zghlxwxcb.cn/news/detail-478427.html
到了這里,關于云原生到底是個啥玩意?從云端降臨的超級技術:云原生的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!