大熱的Kata Containers技術,百度智能云是如何運用的?

原標題:大熱的Kata Containers技術,百度智能云是如何運用的?

(本文選自《Kata Containers在百度智能云的應用實踐》白皮書)

之前的《容器化實踐指南》專欄中,我們介紹過很多百度智能云在容器實踐方面的積累。本文繼續(xù),講一講最近才進入大眾視野的Kata Containers。

今年4月,Kata Containers被OpenStack基金會董事會正式宣布為OpenStack基金會的頂級開源基礎設施項目。

事實上,Kata Containers早就出現(xiàn)了,百度智能云也較早就開始運用了。簡單而言,Kata Containers就是比傳統(tǒng)容器更安全的容器技術,其通過為容器提供虛擬機級別的安全機制,從而同時擁有容器的形態(tài)和虛擬機的安全性。 本篇就Kata Containers是什么,有什么價值等進行全面梳理。

初識Kata Containers

早在2015年,來自英特爾?開源技術中心的工程師就開始探索采用英特爾? 虛擬技術(英特爾? Virtualization Technology,英特爾? VT)來提高容器的安全隔離性,并以此發(fā)起了英特爾? Clear Containers開源項目。

與此同時,來自Hyper.sh(一家中國的高科技初創(chuàng)公司)的工程師也發(fā)起了runV開源項目,這兩個項目采用的技術和目的都非常相似,都是為了將容器置于一個安全“沙箱”,以便進一步促進該技術發(fā)展和成熟。隨后在2017年,英特爾?和Hyper.sh團隊將這兩個開源項目在社區(qū)合并成了一個新的項目Kata Containers。

傳統(tǒng)虛擬機(VMs)可提供硬件隔離,而容器可快速響應,且占用空間相對較小,Kata Containers將這兩者的優(yōu)勢完美結合了起來。每個container或container pod都在自己單獨的虛擬機中啟動,并不再能夠訪問主機內(nèi)核,杜絕了惡意代碼侵入其它相臨容器的可能。

由于Kata Containers同時具備硬件隔離,也使得互不信任的租戶,甚至于生產(chǎn)應用或前生產(chǎn)應用都能夠在同一集群內(nèi)安全運行,從而使得在裸機上運行容器即服務(Containers as a Service, CaaS)成為可能。

(Kata Containers原理)

提高性能的同時保證安全性是難題

百度智能云容器引擎發(fā)展至今,可以說經(jīng)歷多多,包括復雜業(yè)務、大流量、復雜部署等諸多方面的技術考驗和淬煉。例如:

單集群峰值每日網(wǎng)頁訪問量達10億+,

單租戶容器規(guī)模50000+等。

在不斷地學習過程中,練就了以Kubernetes為中心的容器技術方向的強大掌控力。

不過現(xiàn)實困難也是存在的,比如基于容器技術實現(xiàn)資源共享在帶來業(yè)務彈性和資源高利用率的同時,也會增加業(yè)務的安全風險幾率。此類風險在于同一主機上的多個容器需共享同一個主機內(nèi)核,而同一宿主機上可能運行不同租戶的容器,這就可能會威脅到整個云基礎架構和租戶業(yè)務及數(shù)據(jù)的安全。

因此,如何在充分發(fā)揮容器輕量化和敏捷性的同時,提高其容器隔離性來保障資源共享的安全,就成為百度智能云必須探索的重要課題。

(傳統(tǒng)容器架構)

Kata Containers,更好的選擇

于是,百度智能云在ClearContainers,也就是現(xiàn)在的Kata Containers發(fā)布之后,就開始關注這一安全容器技術,并和相關技術社區(qū)進行了多次交流,來調(diào)研和測試這一技術。基于廣泛的安全容器技術調(diào)研,發(fā)現(xiàn)Kata Containers是目前具備高度安全和實踐性的一項安全容器技術,主要考量因素如下:

Kata Containers是目前高度安全的容器技術。它使用輕量級虛擬機作為容器的安全隔離,而過去十幾年的實踐證實,虛擬化技術采用的安全模式,是人們共享資源的有效手段。

和傳統(tǒng)容器相比,Kata Containers 的性能較高,且更有保障,同時又兼容傳統(tǒng)安全技術。

Kata Containers遵循OCI容器實現(xiàn)規(guī)范,可以無縫對接容器編排方案,比如Kubernetes等。 Kata Containers 有著較高的成熟度。自從2015年成功推出的兩個安全容器項目——英特爾? Clear Containers和Hyper runV——合并以來,相關技術有了重大進展,其功能性和開發(fā)基礎設施也得到了驗證。 Kata Containers獲得業(yè)界的廣泛支持,具備完善活躍的開源社區(qū)。基于此,百度智能云開始大規(guī)模應用Kata Containers。

截至當前,百度智能云已經(jīng)將KataContainers應用在多種實踐場景,包括基于Kata Containers的函數(shù)計算,Kata Containers與OpenStack的融合,Kata Containers在邊緣計算的應用等。

不僅僅是用,還在創(chuàng)新

在Kata Containers的應用過程中,百度智能云不只扮演的是用戶的角色,還是一個創(chuàng)新者。

以函數(shù)計算為例,由于Kata Containers采用虛擬機作為隔離,導致容器的啟動速度難以滿足函數(shù)計算場景的要求。為解決這一問題,百度智能云開發(fā)出了許多高效的解決方案。 舉個例子,函數(shù)冷啟動與熱啟動性能。

函數(shù)的冷啟動,如圖所示,是指函數(shù)首次被調(diào)用時,必須先準備用于運行的容器,再把用戶函數(shù)部署上去,然后啟動語言runtime。

(非預創(chuàng)建容器流程)

冷啟動性能根據(jù)用戶代碼體積會有不同程度的浮動。如果不考慮VPC的切換時間,啟動時間需要控制在百毫秒量級。

那么為何冷啟動性能這么重要呢?

原因在于上層業(yè)務代碼的訪問超時值是統(tǒng)一設置的,不會為了某次CFC函數(shù)調(diào)用是冷啟動還是熱啟動而去做動態(tài)調(diào)整。假如業(yè)務的超時設置較小,冷啟動的長耗時很容易導致業(yè)務有損。根據(jù)測試,單純Kata Containers的啟動時間就已經(jīng)在1s 左右,如果再加上網(wǎng)絡CNI的初始化,啟動時間會更長,難以滿足函數(shù)計算的需求。 目前,百度智能云給出的解決方案是通過預先創(chuàng)建Pod池來實現(xiàn)快速響應。

在需要運行用戶函數(shù)時,從Pod池中獲取一個Pod。在該Pod中動態(tài)添加業(yè)務容器,來執(zhí)行計算任務。通過這種辦法,節(jié)省掉了虛機啟動時間和網(wǎng)絡CNI插件初始化時間,進而大幅度縮短整體冷啟動的響應時間。下表比較了不同模式下業(yè)務冷啟動時間。

可以看到,函數(shù)計算在利用kata container提供更好安全隔離性的同時,仍將冷啟動時間壓縮到了與runc相當?shù)臄?shù)量級上。

業(yè)務啟動時間優(yōu)化對比

(在runc模式下,動態(tài)初始化僅包含掛載卷,在kata模式下,動態(tài)初始化包含動態(tài)創(chuàng)建業(yè)務容器并運行等操作)

這樣的示例還有很多,比如調(diào)度層啟動加速、支持動態(tài)掛載用戶代碼等。這些無疑將為后來的使用者提供寶貴的借鑒意義。

正因為有以上創(chuàng)新和在BCI產(chǎn)品體系中的落地,在前不久召開的開源基礎設施峰會中,百度智能云團隊榮獲2019開源基礎設施峰會唯一超級用戶大獎。

此獎項代表著百度智能云Kata Containers獲得業(yè)內(nèi)頂級專家的認可,并在實踐中逐步走向成熟,成為該領域技術創(chuàng)新的先驅者。

效果顯著

使用Kata Containers帶來的收效是明顯的。無論是函數(shù)計算還是邊緣計算,抑或是其它場景,基于Kata Containers技術都帶來了極大的提升。

以百度智能云函數(shù)計算CFC為例,百度智能云CFC可以通過一個彈性資源池為眾多開發(fā)者提供共享的計算資源。在采用Kata Containers的虛擬機隔離模式之后,既保障了容器在多租戶環(huán)境中的安全隔離,同時也實現(xiàn)了對應用和用戶的不可見。

同樣,百度智能云容器實例BCI為百度內(nèi)部的大數(shù)據(jù)業(yè)務提供了強大的基礎架構支撐,幫助大數(shù)據(jù)部門構建起面向多租戶的Serverless數(shù)據(jù)處理平臺。 對于大數(shù)據(jù)部門的平臺研發(fā)人員,BCI通過與Kubernetes的集成,滿足平臺研發(fā)者使用成熟的Spark社區(qū)技術的訴求,而無需額外的學習成本,且不需要關注資源的管理和運維。

對于使用平臺的大數(shù)據(jù)開發(fā)者,基于BCI的大數(shù)據(jù)任務處理平臺提供了更加便捷的Spark使用模式,開發(fā)者只需要打包數(shù)據(jù)處理任務,提交至平臺,即可等待任務自動運行并獲取結果,完全無需關心資源的調(diào)度過程,并且不需要自行維護任何Spark基礎架構。

在這種多租戶的大數(shù)據(jù)平臺場景中,Spark服務的提供方希望盡可能提升資源利用率,同時提供滿足用戶大規(guī)模提交計算任務時的算力。 然而,傳統(tǒng)的Kubernetes集群模式很難具備足夠彈性,滿足這一需求。因此,無需維護服務器,且能在數(shù)秒內(nèi)快速啟動的容器實例就成為了平臺方的首選方案。

通過使用BCI平臺方的任務編排服務可以運行在自己的Kubernetes集群中,而用戶提交的任務則通過Virtual-Kubelet,調(diào)度用戶賬號中的BCI資源來運行,一方面平臺方的使用模式和傳統(tǒng)kubernetes沒有差異,另一方面平臺方無需為用戶任務提前準備資源,這無疑提升了資源利用率。

而Kata Containers則基于底層技術,讓用戶作業(yè)可以運行在隔離的系統(tǒng)內(nèi)核和隔離的網(wǎng)絡空間中,從而為任務執(zhí)行和數(shù)據(jù)提供了更高的安全性。 目前,基于Spark的百度流式計算服務BSC已經(jīng)集成BCI的Serverless容器能力,可以將原本搭建Kubernetes集群的資源成本降低40%~60%,同時還可以獲得大量寶貴的平臺搭建實踐經(jīng)驗。 總結全文,Kata Containers作為一種安全容器解決方案,在百度智能云的容器服務中扮演重要角色。

未來,百度智能云還將繼續(xù)深化對Kata Containers的使用,為用戶提供更優(yōu)質(zhì)的容器服務,為推進數(shù)字化轉型進程添磚加瓦。

極客網(wǎng)企業(yè)會員

免責聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準確性及可靠性,但不保證有關資料的準確性及可靠性,讀者在使用前請進一步核實,并對任何自主決定的行為負責。本網(wǎng)站對有關資料所引致的錯誤、不確或遺漏,概不負任何法律責任。任何單位或個人認為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識產(chǎn)權或存在不實內(nèi)容時,應及時向本網(wǎng)站提出書面權利通知或不實情況說明,并提供身份證明、權屬證明及詳細侵權或不實情況證明。本網(wǎng)站在收到上述法律文件后,將會依法盡快聯(lián)系相關文章源頭核實,溝通刪除相關內(nèi)容或斷開相關鏈接。

2019-11-26
大熱的Kata Containers技術,百度智能云是如何運用的?
因此,如何在充分發(fā)揮容器輕量化和敏捷性的同時,提高其容器隔離性來保障資源共享的安全,就成為百度智能云必須探索的重要課題。

長按掃碼 閱讀全文