大熱的Kata Containers技術(shù),百度智能云是如何運(yùn)用的?

原標(biāo)題:大熱的Kata Containers技術(shù),百度智能云是如何運(yùn)用的?

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

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

今年4月,Kata Containers被OpenStack基金會(huì)董事會(huì)正式宣布為OpenStack基金會(huì)的頂級(jí)開源基礎(chǔ)設(shè)施項(xiàng)目。

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

初識(shí)Kata Containers

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

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

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

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

(Kata Containers原理)

提高性能的同時(shí)保證安全性是難題

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

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

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

在不斷地學(xué)習(xí)過程中,練就了以Kubernetes為中心的容器技術(shù)方向的強(qiáng)大掌控力。

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

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

(傳統(tǒng)容器架構(gòu))

Kata Containers,更好的選擇

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

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

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

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

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

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

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

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

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

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

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

那么為何冷啟動(dòng)性能這么重要呢?

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

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

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

業(yè)務(wù)啟動(dòng)時(shí)間優(yōu)化對(duì)比

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

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

正因?yàn)橛幸陨蟿?chuàng)新和在BCI產(chǎn)品體系中的落地,在前不久召開的開源基礎(chǔ)設(shè)施峰會(huì)中,百度智能云團(tuán)隊(duì)榮獲2019開源基礎(chǔ)設(shè)施峰會(huì)唯一超級(jí)用戶大獎(jiǎng)。

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

效果顯著

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

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

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

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

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

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

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

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

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

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

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

長按掃碼 閱讀全文