【雲端計算】從Serverless說起,談談邊緣計算的未來;從物理機到Kubernetes的那些坑與心得

產業智慧官發表於2018-04-04

作者介紹

黃文俊騰訊雲高階產品經理。曾經理過企業級儲存、企業級容器平臺等產品的架構與開發,對容器、微服務、無伺服器、DevOps等都有濃厚興趣。

本文整理自1月20日DBAplus社群&騰訊雲聯合主辦的“微服務架構交流會”。


Serverless是一個比較新的概念,2017年開始在行業內興起,邊緣計算則是一個更新的技術。那麼Serverless在邊緣計算中能產生怎樣的效果、產品以及形態?今天來為大家分享一下。



【雲端計算】從Serverless說起,談談邊緣計算的未來;從物理機到Kubernetes的那些坑與心得
什麼是Serverless?
【雲端計算】從Serverless說起,談談邊緣計算的未來;從物理機到Kubernetes的那些坑與心得


首先講講Serverless,從下面這張圖可清晰地看到,Serverless從架構上可以分成兩部分。


【雲端計算】從Serverless說起,談談邊緣計算的未來;從物理機到Kubernetes的那些坑與心得


一是Backend  as  a  Service,後端即服務,騰訊雲上目前已經提供很多這類產品,例如COS物件儲存、CMQ訊息佇列、CDN內容分發、CDB雲資料庫、API閘道器,這些產品更多的是承載資料的儲存。


二是Function  as  a  Service,函式即服務,也是Serverless比較核心的技術點,騰訊云云函式就屬於這種。


從Serverless或者雲函式來看,更多是對使用者的計算進行託管。使用者將程式碼和配置提交到雲函式平臺上,此處的程式碼是指使用者的一份程式碼或者程式碼包、配置,一個是指本身對於函式執行環境的配置,使用的是哪種環境、所需的記憶體、超時時間等;另一個是觸發器的配置。因為整個函式即服務的執行方式是觸發式執行,觸發就需要有一個事件來源,而事件來源是和我們其它產品進行關聯後而產生。


例如COS物件儲存產品,它的關聯就在COS的儲存桶中,當使用者上傳一張圖片或者刪除一張圖片時,就會產生一個事件,這個事件會觸發雲函式的執行;例如和API閘道器的對接,也可以作為事件來源,在使用者的HTTP請求到達閘道器之後,API閘道器會把該請求作為事件轉發給雲函式,觸發雲函式的執行,雲函式拿到請求之後進行處理,生成響應給到使用者。



【雲端計算】從Serverless說起,談談邊緣計算的未來;從物理機到Kubernetes的那些坑與心得
函式計算的特點
【雲端計算】從Serverless說起,談談邊緣計算的未來;從物理機到Kubernetes的那些坑與心得



【雲端計算】從Serverless說起,談談邊緣計算的未來;從物理機到Kubernetes的那些坑與心得


上圖左側是程式碼和配置提交到雲函式平臺進行儲存,真正事件產生後,針對每一個事件都會拉起一個函式例項,實現觸發式執行;當真正事件來臨時,使用者函式才會執行,使用者程式碼執行時才有雲函式程式碼的資料運算和費用計算。


因為函式本身是託管型的,使用者本身無法感知到例項在哪裡執行。雲函式平臺背後有個大的計算資源池,使用者例項觸發之後,我們會從資源池中隨機選取可執行的位置,把使用者的函式例項在對應位置上跑起來。因此整個排程過程或事件來臨之後的函式擴縮容過程,都是由平臺進行的。對使用者來說,排程的粒度更細了,而且排程也都託管給平臺了。


【雲端計算】從Serverless說起,談談邊緣計算的未來;從物理機到Kubernetes的那些坑與心得


而從整個計算過程來說,為什麼會有這種產品的出現?對於傳統的資料儲存過程來說,資料產生後,更多會先把資料進行快取或者儲存,如以物件儲存檔案的形式儲存,或在資料庫中以結構化形式儲存下來,再進行分析應用。有了函式服務產品後,我們可以有一個很大的加速,可以在事件產生時就立刻對資料進行處理,因此就變成了先處理,再對結果進行儲存使用的過程。



【雲端計算】從Serverless說起,談談邊緣計算的未來;從物理機到Kubernetes的那些坑與心得
計算靠近資料
【雲端計算】從Serverless說起,談談邊緣計算的未來;從物理機到Kubernetes的那些坑與心得


那麼,還能不能縮短中間資料產生到資料處理的傳遞過程呢?


【雲端計算】從Serverless說起,談談邊緣計算的未來;從物理機到Kubernetes的那些坑與心得


對於傳統應用來說,資料在使用者那裡產生,傳到雲上進行處理,再進行相應的儲存。這裡說的縮短距離實際是把處理過程更加靠近使用者,靠近用戶就可以認為是邊緣計算的過程。並且這裡的靠近使用者指的並不是加速網路速度,而是更多把計算下發,放到更靠近使用者的位置。



【雲端計算】從Serverless說起,談談邊緣計算的未來;從物理機到Kubernetes的那些坑與心得
邊緣計算
【雲端計算】從Serverless說起,談談邊緣計算的未來;從物理機到Kubernetes的那些坑與心得


之前無論使用容器或主機,運算能力都是在雲上提供,而邊緣計算要做的事情是把運算能力下發到雲之外去。


邊緣計算的理念,就是把計算能力下發更靠近真正的使用者,更加靠近裝置這一端。


【雲端計算】從Serverless說起,談談邊緣計算的未來;從物理機到Kubernetes的那些坑與心得


為什麼會有這種需求的產生?


隨著網際網路以及物聯網的迅速發展,接入的使用者越來越多,裝置也越來越多,在這種情況下,產生的資料量也越來越多。無論是個人使用者,還是物聯網接入裝置,每時每刻都在產生大量的資料。資料不斷增多的情況下,也同時要求我們對於使用者的響應、裝置響應越來越快,本身裝置的計算能力也要越來越強。


10年前的一臺PC都比不上現在一臺智慧手機的處理能力,裝置的計算能力在越來越強的情況下,實現了把計算能力下發到更加邊緣的位置的能力。


【雲端計算】從Serverless說起,談談邊緣計算的未來;從物理機到Kubernetes的那些坑與心得


雲函式目前在做的探索,可從兩方面出發。


一是物聯網方向,物聯網主要是和裝置打交道,實現裝置上的邊緣計算;從雲函式本身的特點來講,它屬於觸發型運算,真正資料產生之後才會拉起運算。雲函式交由平臺託管的排程,可以把雲函式排程到使用者裝置上去。


二是把雲函式排程到CDN的節點上去,雖然CDN可以認為是雲的一部分,但CDN本身已經很靠近使用者,CDN節點實際上已經在雲的邊緣。


【雲端計算】從Serverless說起,談談邊緣計算的未來;從物理機到Kubernetes的那些坑與心得



【雲端計算】從Serverless說起,談談邊緣計算的未來;從物理機到Kubernetes的那些坑與心得
IOT探索
【雲端計算】從Serverless說起,談談邊緣計算的未來;從物理機到Kubernetes的那些坑與心得


接下來給大家做一個和物聯網相關的效果演示。


先簡單介紹一下幾款裝置,第一個是樹莓派,熟悉物聯網的同學一般都瞭解;第二個是光感的感測器,可以感測環境光,從中讀取到環境光的流明值;第三個是LED燈。


【雲端計算】從Serverless說起,談談邊緣計算的未來;從物理機到Kubernetes的那些坑與心得


目前這個裝置已經跑起來了,它所做的事情是當環境光足夠亮的情況下,LED燈就會暗掉,當環境光足夠暗的情況下,LED燈會亮起來。從演示過程可看到,當我把光感器遮蓋時,LED燈有一個亮起來的動作。目前的環境光和背景足夠亮,當我開啟時,因為光足夠亮,所以LED燈會滅掉。


針對剛剛演示過程中的程式碼,我給大家做一個解釋。首先可以看到目前在樹莓派上跑的一段函式,已經下到樹莓派上跑了,在網上看到的是線上的程式碼。接下來我會對程式碼進行修改,從程式碼中大家可以看到,當從感測器中讀出的流明值足夠大時,GPIO做拉高或者拉低的動作,目前是正常的表現。


剛剛我完成了一個修改,現在我要把程式碼下發到儀器上執行,同時把這裡拉起,檢視數值是否正確。下面不斷重新整理的就是感測器出來的流明值,目前感測器已經變化了,因為大家可以看到這個數值已經超過了200,LED燈是亮著的,當我把感光器遮蓋以後,LED燈變暗,這是通過程式碼把行為做了反轉的變化。


我們在目前的除錯過程中也會做實際的裝置除錯,這裡演示的就是真正把雲函式下放到物理裝置上進行執行的效果。

  


【雲端計算】從Serverless說起,談談邊緣計算的未來;從物理機到Kubernetes的那些坑與心得
AI能力
【雲端計算】從Serverless說起,談談邊緣計算的未來;從物理機到Kubernetes的那些坑與心得


接下來講的是目前騰訊雲函式和使用者協同推進的AI能力,使用者資料只要在騰訊雲上利用CVM、GPU伺服器、騰訊TML機器學習,進行AI訓練,得出相應的訓練後模型,再把模型和外圍的匯入程式碼進行打包,放入雲函式或者是帶有GPU的雲函式,就可以對外提供AI的推理能力。使用者真正使用AI時,從外面送過來一段使用者需要推理的語音、文字或影像,在雲函式中拉起訓練模型,就可以對這段資料進行推理。


【雲端計算】從Serverless說起,談談邊緣計算的未來;從物理機到Kubernetes的那些坑與心得


AI能力表面上看起來和邊緣計算沒有關係,其實不然。如果本身已經在物聯網的邊緣設計上具有了雲函式的執行能力,那麼是不是可以進一步考慮把AI能力下發到裝置上去的,比如我們在雲中進行資料的收集和訓練,生成模型之後,利用模型更新雲上的函式,然後可以利用一鍵下發把這種能力下發到裝置中,使裝置具備更強的AI能力。


通過這種方式可以讓更多的裝置接入AI能力,比如讓家裡的攝象頭直接識別人臉,認識你的家人,或者讓更多的醫療裝置直接對醫療檢查結果做出判斷,識別疾病型別等。這些都將會是後期持續和各個物聯網廠商進行摸索,往前推進的過程。



【雲端計算】從Serverless說起,談談邊緣計算的未來;從物理機到Kubernetes的那些坑與心得
邊緣AI能力
【雲端計算】從Serverless說起,談談邊緣計算的未來;從物理機到Kubernetes的那些坑與心得


【雲端計算】從Serverless說起,談談邊緣計算的未來;從物理機到Kubernetes的那些坑與心得


另外一個角度來說,我們為什麼做CDN的邊緣計算?CDN本身是把資料放到邊緣去的一個過程,而邊緣計算是為了把計算放到邊緣去。為了更快地響應使用者的操作需求,對於邊緣傳上來的資料進行更快地處理,這也是雲函式對於邊緣的探索。


對於邊緣計算來說,雲函式要做到的就是使用者在雲中能完成函式的編寫、管理,在所需的位置把雲函式下放各個位置執行和使用。


雲函式未來在邊緣計算中還會有大量的探索機會,CDN廠商、物聯網廠商、硬體廠商等都將會有持續不斷的合作發展,去探索嘗試將邊緣的物聯網能力、邊緣的AI能力、邊緣CDN能力落地。



【雲端計算】從Serverless說起,談談邊緣計算的未來;從物理機到Kubernetes的那些坑與心得
Q&A
【雲端計算】從Serverless說起,談談邊緣計算的未來;從物理機到Kubernetes的那些坑與心得


問:騰訊雲Serverless可以自己部署嗎?

答:自己部署有分兩種,一種是把雲函式部署到裝置上的能力,一種是Agent的部署。Agent本身是需要使用者自行部署到使用者自有的裝置上去的。而今天演示用的是樹莓派,Agent不侷限於樹莓派,它可以在更強的伺服器中執行,比如可以用到裝置的GPU、裝置的儲存、檔案等進行分析計算。


問:我們想在自己內部部署一個類似的Serverless,騰訊雲可以支援嗎?

答:您說的是私有化部署,雲函式本身沒有考慮,我們雲函式管理整體是在雲上的,邊緣計算提供更多的是邊緣的排程和計算能力,函式在雲上配置後,排程到裝置上執行,雲函式本身對於裝置上的資料讀取全部由自己控制,讀取不用走網路,因為執行的程式碼包已經下發到裝置上去了,體現的是讓計算更加靠近資料的理念。

   

問:如果提前設定好程式碼下發到裝置上去,AI也可以斷網嗎?

答:對,程式碼執行在你的裝置上。兩種情況:一種是我剛才演示的物聯網的邊緣計算。本身的程式碼包裝下發到裝置之後,在裝置上執行,斷網沒有關係。


雲函式本身也提供AI能力,在雲上提供,所以在雲上執行。


對於AI,雲上產品化的速度會更快,目前我們已經在為部分客戶進行支援,雲上的相關操作說明後續也會提供出來,大家可以線上體驗AI能力。


問:針對IoT這塊騰訊雲釋出了沒有?

答:這個還沒有釋出,還在產品化,目前也是和一些客戶協同推進這個能力,物聯網裝置各種各樣,包括底層的硬體環境,比如樹莓派的ARM、X86、MIPS等平臺,對於Linux裡的核心功能、檔案系統的支援,對於儲存、記憶體、CPU的要求也在整理中。


問:雲函式能夠被用於傳統應用嗎?

答:雲函式的特性因為本身是觸發式執行,短暫執行的方式,所以和傳統的很多開發單體的執行方式不太一樣,更多是偏向於新業務開發、小的新業務上線或者急需要彈性應用能力的使用,傳統的可以做改造,但到時候需要提供一些改造的建議。


效率提升更多是在業務開發的速度上,實際上對於業務執行環境不用再過多做運維性的動作,對於擴縮容也不用考慮,業務開發之後就可以上線,運維交給平臺,擴縮容能力也是交給平臺,為使用者減輕壓力,業務用量上來之後怎麼承載業務,怎麼保證業務不崩潰,雲函式已經解決了這個問題,本身的擴容可以理解為無限能力的擴容、。


問:Serverless線上能力有沒有額外的規劃?Serverless的程式和程式碼能不能訪問雲主機上面的介面?

答:目前有在做很多,包括邊緣計算、CDN以及和騰訊雲的各種雲產品打通,Serverless本身最大的價值在於和各個雲產品打通之後的效能,可以認為是各個雲產品之間的黏合劑或者是輕量級計算的聯合。而和後端的對接,包括資料庫、CVM直接打通,更多是網路上的問題,即將會推出和VPC網路的打通,使用者VPC業務可以用雲函式直接訪問。




滴滴彈性雲:從物理機到Kubernetes的那些坑與心得


本文根據譚霖老師在〖2017 GdevOps全球敏捷運維峰會北京站〗現場演講內容整理而成。


【雲端計算】從Serverless說起,談談邊緣計算的未來;從物理機到Kubernetes的那些坑與心得


講師介紹

譚霖滴滴出行彈性雲架構師、雲端計算專家,曾任職於英特爾從事雲端計算方向研究。OpenStack Ironic 專案核心開發者,《OpenStack設計與實現》作者,多次在OpenStack Summit SRECon峰會上分享Topic。目前從事基於Kubernetes的私有云平臺的研發,專注提高服務的穩定性和研發、運維效率。


今天我將帶來一些關於滴滴彈性雲的分享,標題是從物理機到Kubernetes的那些坑與心得。


先簡單自我介紹下,我叫譚霖,之前曾在Intel從事於Open Stack相關的工作,也花了很大精力在開源社群這一方面,後來我來到滴滴的彈性雲團隊,主要從事基於Kubernetes的基礎平臺建設,可以說是從一個做菜的“廚師”變成了一個“食客”。


主題簡介:

1. 整體架構

2. 產品功能

3. 方案細節

4. 心得展望



【雲端計算】從Serverless說起,談談邊緣計算的未來;從物理機到Kubernetes的那些坑與心得
前言
【雲端計算】從Serverless說起,談談邊緣計算的未來;從物理機到Kubernetes的那些坑與心得


在我們準備做彈性雲時,我們問了自己三個問題:

1. 為什麼要做私有云

2. 為什麼選容器

3. 為什麼選Kubernetes


為什麼要做私有云


這個其實是最好回答的。因為滴滴的叢集規模太大,有數萬臺物理機(這樣的規模量要求我們做一個私有云平臺),結果因為之前沒有一個比較好的方案,造成了資源使用率特別低、資源浪費大的問題。


另一個主要原因是滴滴的發展太快,總有新的業務,隔一段時間就聽說成立了一個新的部門,而且隨著新需求的出現,更新迭代異常頻繁,這些都對平臺的穩定性提出了特別高的要求。這個問題靠堆人是解決不了的,所以需要有一個好的平臺和機制來解決它。


為什麼選容器


這個問題也比較好回答。KVM / Xen這樣的傳統虛擬化已經出現多年了,很穩定,但大家也知道其弊端,就是損耗比較大。另外,傳統混部也就是滴滴現在在用的方案(即繼續保持原有的傳統混部),雖然能夠部分解決資源使用率低的問題,但因為完全沒有隔離,導致程式之間容易互相影響。


而容器是一個相對摺中的方案,具有一定的隔離性、損耗更少,這是我們選擇它的最主要原因。同時,更重要的是容器的映象所帶來新的玩法,因為映象的環境是一致的,對運維人員特別友好,因此他們不用再關心那些紛繁複雜的配置檔案,也不用頻繁地走初始化流程,更不用每次上線更新都提心吊膽,擔心會對新的服務造成影響。


為什麼要選擇Kubernetes


現在這個問題就比較容易回答,但一年前是個比較艱難的選擇。大家都知道現在比較著名的容器平臺有Mesos、Kubernetes 和Swarm,一年前我們在Mesos和Kubernetes之間猶豫過很久,後來主要覺得因為我們要做的是一個基於容器的平臺,相比Mesos,Kubernetes更專注容器。


而Swarm當時還很年輕,很多功能不夠完善,相較之下Kubernetes更成熟。當然更關鍵的原因是Kubernetes的社群更有活力,設計架構也更清晰,可擴充性也高。


現在回過頭來看一年前的選擇,非常很慶幸我們做了正確的選擇,因為之前相較於兩者,Kubernetes還只是旗鼓相當,而現在則有一統江山的趨勢。我們目前還是基於Kubernetes1.6版本做的改造,接下來1.8版本release之後,我們會盡量跟上保持和社群同步。



【雲端計算】從Serverless說起,談談邊緣計算的未來;從物理機到Kubernetes的那些坑與心得
一、整體架構
【雲端計算】從Serverless說起,談談邊緣計算的未來;從物理機到Kubernetes的那些坑與心得


專案介紹


滴滴彈性雲的目標就是基於容器技術,為滴滴提供穩定高效、可伸縮的服務管理平臺。先簡單看看彈性雲的專案歷程。


2016年7月,彈性雲專案正式啟動,然後10月份出了第一版,2017年4月,釋出了第二版。在幾個月的使用體驗中,我們根據使用者的反饋,不管是產品形式還是底層網路方案都經過大規模優化。目前第三版也正在開發中,這一版會更側重使用者互動和視覺化上。


截止到目前為止,我們總共有300多臺宿主機,2000+的容器例項,不算很多,但目前有多條滴滴核心業務線跑在我們的平臺上,預見2018年規模會有指數型的上升。


整體目標


我們的整體目標有四點,主要是為了解決先前提出的三個問題,如下:


  • 實現資源按需分配,提高資源利用率;

  • 實現資源的彈性伸縮,可以快速響應負載變化;

  • 基礎環境保持一致,實現服務的快速交付;

  • 保證服務的容錯性,實現基礎設施免運維。


解決方案


針對不同的產品線和需求,我們具體落地的產品解決方案主要分為兩大塊:一個是基於容器構建的輕量級虛擬機器,叫做靜態容器組;第二個是更純粹的微服務類容器,我們稱之為彈性伸縮組。同時我們還整合了滴滴現有的部署監控和日誌收集系統。


【雲端計算】從Serverless說起,談談邊緣計算的未來;從物理機到Kubernetes的那些坑與心得


這是整體的架構圖,中間最大的一塊就是我們的K8S叢集,它主要分成控制節點和工作節點兩部分。上面一塊是我們的控制檯和管理員入口,左邊是滴滴的一些現有的許可權認證系統和服務樹,右邊是我們的網路方案。


【雲端計算】從Serverless說起,談談邊緣計算的未來;從物理機到Kubernetes的那些坑與心得


所以按照流程我們主要做的操作有使用者先通過許可權系統認證後,建立服務(也就是K8S的例項),實現容器的擴容縮容和部署更新。之後我們平臺就會進行實時監控和日誌收集,完成監控資料的上報和映象拉取。


【雲端計算】從Serverless說起,談談邊緣計算的未來;從物理機到Kubernetes的那些坑與心得


剛才說的主要是管理員相關的工作流程,現在看看使用者流量。首先我們這邊實現了每個容器通過IPAM元件,都能獲取一個獨立的IP,這個IP可以和物理機雙向互通,所以允許使用者的流量可以直接通過容器IP訪問例項。同時我們也提供了一個4層的LB,允許使用者可以通過只訪問一個VIP,自動把流量打到後面的容器裡。



【雲端計算】從Serverless說起,談談邊緣計算的未來;從物理機到Kubernetes的那些坑與心得
二、產品功能
【雲端計算】從Serverless說起,談談邊緣計算的未來;從物理機到Kubernetes的那些坑與心得


接下來詳細講講滴滴彈性雲具體的產品功能。


功能型別


正如之前所說,我們主要提供靜態容器和動態伸縮兩大產品,同時伸縮組方面又細分為有狀態和無狀態伸縮組。


其實在剛開始時,我們只想提供K8S支援得最好的Deployment,也就是無狀態伸縮,這也是最符合容器使用習慣的產品形式。但在實際落地的過程中,我們發現完全不是那麼一回事。


首先,不是所有程式都能比較輕易地改造成Cloud-Native的服務,所以針對這樣的傳統服務,我們還是需要提供一個比較貼近物理機的使用者體驗的產品,它的問題就是不能彈性伸縮,但好處是可以掛載本地儲存,IP是恆定的。


同時為了支援有狀態的服務,我們也提高了有狀態伸縮組。既支援彈性伸縮又支援掛載網路儲存。不過比較出人意料的是,使用者選擇有狀態伸縮組的很大一部分原因並不是因為掛載Ceph,而是因為有狀態伸縮組的容器IP/HostName是不變的,這樣不管是從監控和日誌上,都是更友好的。


而無狀態伸縮我們這個當初最想推動的服務,也就只有在一些對彈性伸縮速度有特別高的要求的場景下才會用到。


功能特性


具體到產品功能的特性上,我們主要有三大塊:複雜配置簡單化、上線流程標準化和服務管理。


1.複雜配置簡單化


瞭解過K8S的朋友們都清楚,它上手很難,有特別多的配置,有時候反而給使用者帶來了困擾。所以我們做了減法,簡化了很多配置,只留給使用者一些介面,避免不必要的困擾。比如我們支援多種接入方式,既可以一鍵完成從Git程式碼倉庫到上線映象的轉換過程,也支援直接通過自定義映象。


同時我們也對映象做了分層(基礎映象→環境映象→服務映象),實現RD和SRE每個角色負責不同的映象製作,這樣分工更合理、層次更清晰,做到比較好的權責分明、高效有序。監控日誌自動配置關聯也是做了減法,希望使用者較少關注這一點,從而得到更好的體驗。


2.上線流程標準化


相對於減法來說,我們也做了很多的加法,因為我們是一個嚴肅的運維平臺,之所以強調嚴肅,是因為只要有人蔘與的地方就容易犯錯。一方面我們要儘量減少人工參與的地方,另一方面又要儘量通過各種規範來減少人犯錯的機會。


比如變更審批系統,每一次上線變更都需要開發leader的稽核;同時也對它進行了改造,使其每次分組小流量灰度;每次釋出更新的過程中都有強制的觀察時間,如果在觀察過程中,比如說你釋出了第二組後,發現你的更新過程中程式碼出了BUG,我們還支援了一鍵回滾。


3.服務管理


在服務管理方面,我們實現了服務不可用自動重啟、一鍵擴容和負載均衡等,最為重要的就是對使用者強制異地多活,必須在我們的兩個機房都有例項。



【雲端計算】從Serverless說起,談談邊緣計算的未來;從物理機到Kubernetes的那些坑與心得
三、方案細節
【雲端計算】從Serverless說起,談談邊緣計算的未來;從物理機到Kubernetes的那些坑與心得


現在介紹我們的方案細節,主要包括網路監控、日誌和映象市場。


網路打通


1.SDN


我們的網路方案主要是基於Onos+OVS的SDN網路方案,每個容器都有一個區別於機房實體機的Overlay IP,容器與容器之間實現“大二層”互通,與機房網路之間通過交換機打通。物理機可以直接通過容器Overlay IP訪問容器,反之亦然。


2.IP


在IP上,靜態容器和伸縮容器都可以進行Hostname繫結,通過容器不變的Hostname保證容器在漂移到其它宿主後IP依舊保持不變,當容器釋出更新時,它永遠保持穩定。對於IP隨機分配的情況,我們還提供了IP池,保證IP只會從IP池裡出現。


3.負載均衡


我們使用彈性雲獨立的4層、7層負載均衡器,實現動態的負載均衡及故障自動剔除。


容器網路


1.架構


當前彈性雲容器網路大體上分為三種型別:同宿主間的容器通訊、跨主機間的容器通訊,以及容器與物理機間的通訊。


【雲端計算】從Serverless說起,談談邊緣計算的未來;從物理機到Kubernetes的那些坑與心得


每一個部署容器的宿主機,都會部署一套Ovs網路組建,其中關鍵的就是兩個Ovs Bridge,一個負責建立隧道與外界通訊,叫Ovs-tunnel橋;一個負責整合本機上的容器通訊,叫Ovs-int橋。所有的Ovs-tunnel都會與Onos的Controller建立連線,負責查詢流表並建立流表和其他宿主機間的隧道。因此三種通訊型別就可以解釋為:


  • 同宿主間的容器通訊:直接通過Ovs-int橋通訊,因此也不依賴Ovs-tunnel與外界的隧道。

  • 跨主機間的容器通訊:第一次通訊時,Ovs-tunnel也會查詢Onos,Onos返回目標容器的主機資訊,Ovs-tunnel通過主機間的隧道,將容器資料傳送到目的容器的宿主機,目的容器宿主機上的Ovs-tunnel則會將資料繼續向上一層傳遞,經Ovs-int傳遞給容器。

  • 容器與物理機間的通訊:容器傳送物理機的資料包,會被Ovs-tunnel經隧道傳送給Overlay閘道器,Overlay閘道器進行Vxlan解包的操作,將資料傳遞到物理網路。相反地,物理機傳送給容器的資料包,經Overlay閘道器把資料封包成Vxlan資料包,再通過隧道發往容器宿主,再由宿主傳遞給上一層的容器。


2.網路IP分配


具體到產品上,每個IP分配方案如下:

  • 靜態容器組:IP和Hostname恆定;

  • 有狀態伸縮組:IP和Hostname恆定,支援IP池;

  • 無狀態伸縮組:支援IP池,IP隨機分配,靈活度更高。


3.建立過程


【雲端計算】從Serverless說起,談談邊緣計算的未來;從物理機到Kubernetes的那些坑與心得


這個是容器網路建立的過程。一旦使用者有建立容器需求時,控制節點會對整個叢集做一個排程,選擇一個合適的工作節點,而作為節點最重要核心的Kubelet就負責建立容器,控制節點會把需求發給它。


具體建立步驟如下:


  • Step1:當Kubelet收到排程到本Node的Pod資訊後,會先建立一個無網路配置的Infrastructure的基礎容器,此容器用於承載Pod中所有容器的網路Namespace;


  • Step2:Kubelet Exec啟動CNIPlugin,並將第一步中建立的網路Namespace及Pod名稱、容器ID等作為標準輸入,傳給新啟動的Plugin程式;


  • Step3:CNIPlugin根據收到的引數,去IP Controller中申請容器的網路IP;


  • Step4:IP Controller會判斷該容器屬於哪一個子網,子網中是否有可用的IP,及是否有繫結的IP地址等,在根據計算出的IP地址及子網資訊等,去SDN IPAM端申請虛擬Port(Overlay IP);


  • Step5:IPAM會將建立好的虛擬Port返回API呼叫者IP Controller,並同時將資訊同步給SDN Onos;


  • Step6:IP Controller 會將返回的Port儲存在自己的儲存庫中。如果是繫結IP型別的Pod,它還會將該Pod與該虛擬Port(Overlay IP)進行繫結,則下一次該Pod再一次進行申請時,仍會申請到該Port(Overlay IP)。資料儲存後,它會把Port資訊再返回給CNIPlugin;


  • Step7:CNIPlugin收到Port資訊後,會根據其中的Overlay IP、Gateway、Vlan Tag 等資訊建立Veth Pair、配置Veth資訊、配置路由、新增Ovs-brdge等操作。至此,本來沒有任何網路的基礎容器,就有了網路配置(除了與外部通訊的Ovs網路外,同時也會新增Lo網路);


  • Step8:CNIPlugin在成功配置完網路後,會將結果返回給Kubelet;


  • Step9:Kubelet會使用配置成功的基礎容器的網路Namespace繼續去建立其它的業務容器,如果配置失敗了,會繼續從第一步開始,繼續建立基礎容器,直到網路配置成功。


監控需求


監控主要有兩方面需求:基礎監控和業務監控。基礎監控使用了Google開源容器監控軟體Cadvisor/Cgroup作為監控資料來源,資料上報至Odin,同時可在Odin和彈性雲頁面上展開監控資料。


  • 基礎監控:物理機監控Agent無法採集到容器有效監控資料,Cadvisor、Proc、Cgroup容器基礎監控項同物理機有明顯差異,但使用者的需求沒變。

  • 業務監控:業務監控同物理機需求完全一致,複用物理機監控方式。


【雲端計算】從Serverless說起,談談邊緣計算的未來;從物理機到Kubernetes的那些坑與心得


這張圖就是彈性雲配置監控和檢視監控的示意圖,我們在每個物理機上有獲取容器的基礎監控指標,容器裡面也會有獲取業務指標。


【雲端計算】從Serverless說起,談談邊緣計算的未來;從物理機到Kubernetes的那些坑與心得


日誌需求


日誌主要三個方面考慮:時效性、永續性,以及日誌展示。


  • 日誌時效性:線上日誌採集延遲2min,滿足大多數場景,緊急情況下可以登入到容器內檢視日誌。

  • 日誌永續性:生成的容器直接拉到遠端儲存一份,選擇分散式儲存日誌在Ceph儲存一份。

  • 日誌展示:事後追溯有多種豐富的日誌展示、分析系統。


【雲端計算】從Serverless說起,談談邊緣計算的未來;從物理機到Kubernetes的那些坑與心得

這是我們在彈性雲平臺上建立容器的一個操作日誌,也是一個簡單的示意圖。通常使用者都打在容器裡,而容器一旦釋出更新,漂移之後資料都丟了,所以我們直接把日誌打到Ceph上,使用者不喜歡用這個的話可以直接打到遠端,遠端採集系統可以使用不同的系統,比如說ES和HDFS,這樣就提供了更加豐富的日誌展示和分析系統。


【雲端計算】從Serverless說起,談談邊緣計算的未來;從物理機到Kubernetes的那些坑與心得


持久化儲存


儲存主要提供了本地卷和網路卷。


本地卷Host Path提供給靜態容器組,我們把宿主機上的目錄掛載到容器裡作為資料儲存卷,優勢是穩定和讀寫性高。


網路卷Ceph的優勢是多備份更可靠,支援容器遷移,缺點是網路抖動不可避免,所以得用Ceph的服務做改造,避免網路抖動影響整個服務的程式。


OverlayFS


我們選擇Overlay FS作為儲存,一方面是因為它的效能/穩定性更好,當然它也有不足,比如DeviceMapper可以通過LVM來解決磁碟的容量限制,但Overlay FS單靠本身是解決不了的,需要靠XFS來限制。


但我們發現在某些場景中XFS因為沒有開啟ftype功能,導致系統讀寫緩慢,因此我們建議大家如果也選用了Overlay FS+XFS方式,要把ftype設定為1。


映象市場


映象市場主要還是分層,目的是讓不同的使用者可以專注於不同的事情上。如下圖所示:


【雲端計算】從Serverless說起,談談邊緣計算的未來;從物理機到Kubernetes的那些坑與心得


  • 基礎環境映象:彈性雲管理員製作的映象:FROM 官方映象,增加了服務用到的各種Agent、常用軟體、系統配置(新增User、日誌切割等)的映象。包攬最複雜的周邊應用的整合,併兼顧將映象做得更小。

  • 服務環境映象: SRE 同學製作和維護的映象:FROM 基礎環境映象,安裝了服務執行所需的環境、配置。更加專注服務環境的保障,使映象滿足產品線的使用。

  • 服務映象:使用 RD 程式碼中 Dockerfile(一般只需要COPY程式碼到線上所需目錄即可),FROM 服務環境映象,通過彈性雲系統生成的提供服務的映象。



【雲端計算】從Serverless說起,談談邊緣計算的未來;從物理機到Kubernetes的那些坑與心得
四、心得與展望
【雲端計算】從Serverless說起,談談邊緣計算的未來;從物理機到Kubernetes的那些坑與心得


心得體會


首先,特別想強調的是“雲端計算拼的是運維,拼的是可靠性”。產品做得再好、運維人不靠譜,出了紕漏後就沒人敢再用你的東西了,說得再好也沒用。


其次,“線上無小事,要對線上保持敬畏感”。我之前是做開源社群的,解決方案做得多,但現在做雲端計算方案時才發現實際與想象的差別特別大,可以說雲端計算落地更難。


也許大家看了一些網上的分享後都會覺得搭建一套容器環境是比較容易的,可最難的就像我們這樣已經現有的體系,如果你要把它落地就需要做各種打通、妥協,甚至對一些功能做一些切割,有時這些不是我們想做的,但為了推進落地不得不去做。


此外,技術挑戰是一方面,但使用者習慣是更加大的挑戰,特別是業務方,他們肯定會說為什麼我要遷,現在用得好好的,即便你和他們說做這個是對公司省成本的,可以提高運維的便利性,他們依然會覺得我不缺錢,怕麻煩。再者,他們不是做運維的,感覺不到這些帶來的明顯好處。另一方面,有些使用者覺得我上你的雲可以,但你不要改變我的習慣,原來是什麼樣現在還得保持什麼樣。但問題是原來是物理機的用法,可現在已經上容器了 ,還想保持原來的方式,這是不可能的。


運維是一個特別苦的職業,線上無小事,一點點小改動,如果沒有考慮清楚、沒有充分驗證過回滾方案,那分分鐘要出事,相信大家也深諳此理。


未來展望


對於彈性雲的未來規劃,第一是更細粒度的隔離。大家對容器比較瞭解的話,就會清楚現在Docker更多的是對Memory使用量的隔離,以及對CPU使用量的隔離。但實際過程中我們會發現,比如你給使用者一個8G記憶體,在某種極端配置下8G記憶體會不斷地重新整理讀寫,那你的L3 Cache很快就會被刷爆了,導致大量的Cache Miss,這樣的話還是會對程式效能造成很大影響的。


第二是靜態容器的彈性伸縮。因為靜態容器確實就像虛擬機器一樣,運維成本特別高,所以一旦物理機掛了,容器也就掛了,很多東西是找不回來的。而且你要擴容也只能按照傳統的方法,先申請一個容器再去上面做部署、配置等,這些都會給運維同學帶來非常大的困擾。


第三是更智慧的擴容演算法。目前我們是根據實時的使用率來進行擴容,但其實對於我們來說,很多業務高峰期是有規律的,如果能做到提前預測出高峰期,做適應的擴容,那將會極大地提高資源使用率。


最重要的一點是依託社群、回饋社群。我們打算騰出手來,把一些定製化需求不是那麼高的解決方案來回饋到社群。

【雲端計算】從Serverless說起,談談邊緣計算的未來;從物理機到Kubernetes的那些坑與心得


人工智慧賽博物理作業系統

AI-CPS OS

人工智慧賽博物理作業系統新一代技術+商業作業系統“AI-CPS OS:雲端計算+大資料+物聯網+區塊鏈+人工智慧)分支用來的今天,企業領導者必須瞭解如何將“技術”全面滲入整個公司、產品等“商業”場景中,利用AI-CPS OS形成數字化+智慧化力量,實現行業的重新佈局、企業的重新構建和自我的煥然新生。


AI-CPS OS的真正價值並不來自構成技術或功能,而是要以一種傳遞獨特競爭優勢的方式將自動化+資訊化、智造+產品+服務資料+分析一體化,這種整合方式能夠釋放新的業務和運營模式。如果不能實現跨功能的更大規模融合,沒有顛覆現狀的意願,這些將不可能實現。


領導者無法依靠某種單一戰略方法來應對多維度的數字化變革。面對新一代技術+商業作業系統AI-CPS OS顛覆性的數字化+智慧化力量,領導者必須在行業、企業與個人這三個層面都保持領先地位:

  1. 重新行業佈局:你的世界觀要怎樣改變才算足夠?你必須對行業典範進行怎樣的反思?

  2. 重新構建企業:你的企業需要做出什麼樣的變化?你準備如何重新定義你的公司?

  3. 重新打造自己:你需要成為怎樣的人?要重塑自己並在數字化+智慧化時代保有領先地位,你必須如何去做?

AI-CPS OS是數字化智慧化創新平臺,設計思路是將大資料、物聯網、區塊鏈和人工智慧等無縫整合在雲端,可以幫助企業將創新成果融入自身業務體系,實現各個前沿技術在雲端的優勢協同。AI-CPS OS形成的字化+智慧化力量與行業、企業及個人三個層面的交叉,形成了領導力模式,使數字化融入到領導者所在企業與領導方式的核心位置:

  1. 精細種力量能夠使人在更加真實、細緻的層面觀察與感知現實世界和數字化世界正在發生的一切,進而理解和更加精細地進行產品個性化控制、微觀業務場景事件和結果控制。

  2. 智慧:模型隨著時間(資料)的變化而變化,整個系統就具備了智慧(自學習)的能力。

  3. 高效:企業需要建立實時或者準實時的資料採集傳輸、模型預測和響應決策能力,這樣智慧就從批量性、階段性的行為變成一個可以實時觸達的行為。

  4. 不確定性:數字化變更顛覆和改變了領導者曾經仰仗的思維方式、結構和實踐經驗,其結果就是形成了複合不確定性這種顛覆性力量。主要的不確定性蘊含於三個領域:技術、文化、制度。

  5. 邊界模糊:數字世界與現實世界的不斷融合成CPS不僅讓人們所知行業的核心產品、經濟學定理和可能性都產生了變化,還模糊了不同行業間的界限。這種效應正在向生態系統、企業、客戶、產品快速蔓延。

AI-CPS OS形成的數字化+智慧化力量通過三個方式激發經濟增長:

  1. 創造虛擬勞動力,承擔需要適應性和敏捷性的複雜任務,即“智慧自動化”,以區別於傳統的自動化解決方案;

  2. 對現有勞動力和實物資產進行有利的補充和提升,提高資本效率

  3. 人工智慧的普及,將推動多行業的相關創新,開闢嶄新的經濟增長空間


給決策制定者和商業領袖的建議:

  1. 超越自動化,開啟新創新模式:利用具有自主學習和自我控制能力的動態機器智慧,為企業創造新商機;

  2. 迎接新一代資訊科技,迎接人工智慧:無縫整合人類智慧與機器智慧,重新

    評估未來的知識和技能型別;

  3. 制定道德規範:切實為人工智慧生態系統制定道德準則,並在智慧機器的開

    發過程中確定更加明晰的標準和最佳實踐;

  4. 重視再分配效應:對人工智慧可能帶來的衝擊做好準備,制定戰略幫助面臨

    較高失業風險的人群;

  5. 開發數字化+智慧化企業所需新能力:員工團隊需要積極掌握判斷、溝通及想象力和創造力等人類所特有的重要能力。對於中國企業來說,創造兼具包容性和多樣性的文化也非常重要。


子曰:“君子和而不同,小人同而不和。”  《論語·子路》雲端計算、大資料、物聯網、區塊鏈和 人工智慧,像君子一般融合,一起體現科技就是生產力。


如果說上一次哥倫布地理大發現,擴充的是人類的物理空間。那麼這一次地理大發現,擴充的就是人們的數字空間。在數學空間,建立新的商業文明,從而發現新的創富模式,為人類社會帶來新的財富空間。雲端計算,大資料、物聯網和區塊鏈,是進入這個數字空間的船,而人工智慧就是那船上的帆,哥倫布之帆!


新一代技術+商業的人工智慧賽博物理作業系統AI-CPS OS作為新一輪產業變革的核心驅動力,將進一步釋放歷次科技革命和產業變革積蓄的巨大能量,並創造新的強大引擎。重構生產、分配、交換、消費等經濟活動各環節,形成從巨集觀到微觀各領域的智慧化新需求,催生新技術、新產品、新產業、新業態、新模式。引發經濟結構重大變革,深刻改變人類生產生活方式和思維模式,實現社會生產力的整體躍升。



產業智慧官  AI-CPS


用“人工智慧賽博物理作業系統新一代技術+商業作業系統“AI-CPS OS”:雲端計算+大資料+物聯網+區塊鏈+人工智慧)在場景中構建狀態感知-實時分析-自主決策-精準執行-學習提升的認知計算和機器智慧;實現產業轉型升級、DT驅動業務、價值創新創造的產業互聯生態鏈


【雲端計算】從Serverless說起,談談邊緣計算的未來;從物理機到Kubernetes的那些坑與心得

【雲端計算】從Serverless說起,談談邊緣計算的未來;從物理機到Kubernetes的那些坑與心得

長按上方二維碼關注微信公眾號: AI-CPS,更多資訊回覆:


新技術“雲端計算”、“大資料”、“物聯網”、“區塊鏈”、“人工智慧新產業:智慧製造”、智慧金融”、“智慧零售”、“智慧駕駛”、智慧城市新模式:“財富空間“工業網際網路”、“資料科學家”、“賽博物理系統CPS”、“供應鏈金融”


官方網站:AI-CPS.NET



本文系“產業智慧官”(公眾號ID:AI-CPS)收集整理,轉載請註明出處!



版權宣告產業智慧官(公眾號ID:AI-CPS推薦的文章,除非確實無法確認,我們都會註明作者和來源。部分文章推送時未能與原作者取得聯絡。若涉及版權問題,煩請原作者聯絡我們,與您共同協商解決。聯絡、投稿郵箱:erp_vip@hotmail.com





相關文章