關(guān)于Kata容器的那些事
譯文【51CTO.com快譯】我們開(kāi)始努力將Oracle Linux云原生環(huán)境與Kata容器(Kata Containers)整合起來(lái)時(shí),Kata容器對(duì)容器的安全邊界帶來(lái)的變化立即給我留下了印象深刻,我只想知道它是如何工作的。
本文試圖簡(jiǎn)要介紹關(guān)于Kata容器的那些事。
深入介紹Kata容器之前,你可能需要了解Linux容器的簡(jiǎn)要?dú)v史。
1.Kata容器是什么?
Kata容器是一個(gè)開(kāi)源項(xiàng)目,社區(qū)致力于使用輕量級(jí)虛擬機(jī)來(lái)構(gòu)建安全的容器運(yùn)行時(shí)環(huán)境,這些虛擬機(jī)的感覺(jué)和性能如同容器,但是使用硬件虛擬化技術(shù)作為第二層防御,提供更強(qiáng)大的工作負(fù)載隔離。
Kata容器源自英特爾Clear Containers和Hyper RunV項(xiàng)目。Kata容器使用現(xiàn)有的CPU功能(比如英特爾VT-X和AMD-V™),以便多個(gè)容器在同一個(gè)主機(jī)上運(yùn)行時(shí),將它們更有效地隔離開(kāi)來(lái)。每個(gè)容器可以在自己的虛擬機(jī)中運(yùn)行,并有自己的Linux內(nèi)核。由于虛擬機(jī)之間的邊界,一個(gè)容器應(yīng)該無(wú)法訪問(wèn)另一個(gè)容器的內(nèi)存(虛擬機(jī)管理程序+EPT/RVI)。
runc是Linux上的運(yùn)行時(shí)規(guī)范參考實(shí)現(xiàn);它生成容器時(shí),使用標(biāo)準(zhǔn)的Linux內(nèi)核功能,比如AppArmour、capabilities(7)、控制組、seccomp、SELinux和命名空間(7),以控制權(quán)限和進(jìn)出容器的數(shù)據(jù)流動(dòng)。Kata容器通過(guò)將容器包裝在虛擬機(jī)中對(duì)此進(jìn)行了擴(kuò)展。
2.我何時(shí)應(yīng)使用Kata容器?
runc是最常見(jiàn)的容器運(yùn)行時(shí)環(huán)境,是Docker™、CRI-O和Kubernetes®的默認(rèn)系統(tǒng)。Kata 容器為你提供了另一種選擇,它為混合使用或多租戶環(huán)境提供了更強(qiáng)大的隔離。 Kubernetes worker節(jié)點(diǎn)能夠同時(shí)使用runc和Kata容器,因此不需要專用硬件。
為了提高容器內(nèi)的通信效率并減少資源使用開(kāi)銷,Kata容器在一個(gè)虛擬機(jī)中執(zhí)行Kubernetes pod的所有容器。
決定何時(shí)使用runc、何時(shí)使用Kata容器取決于你自身的安全策略和狀況。影響何時(shí)需要更高級(jí)別的隔離的一些因素包括如下:
- 映像的來(lái)源———受信任vs不受信任。
- 該映像是內(nèi)部生成還是從公共注冊(cè)中心下載?
- 容器中的內(nèi)容
- 帶來(lái)競(jìng)爭(zhēng)優(yōu)勢(shì)的內(nèi)部軟件
- 容器處理的數(shù)據(jù)集(公共vs機(jī)密)
在虛擬環(huán)境中工作可能會(huì)影響性能,因此建議進(jìn)行針對(duì)工作負(fù)載的測(cè)試,以評(píng)估對(duì)環(huán)境的影響程度(如果有的話)。
3.Kata容器如何工作?
安裝Oracle Linux云原生環(huán)境的Kubernetes模塊時(shí),runc和Kata容器都與CRI-O一同部署,CRI-O為Kubernetes和容器運(yùn)行時(shí)環(huán)境之間提供了必要的支持。
Kata容器使用一種經(jīng)過(guò)高度優(yōu)化、專門(mén)調(diào)整的Linux內(nèi)核來(lái)引導(dǎo)虛擬機(jī),并結(jié)合最小化的用戶空間,以支持容器操作,它們共同提供快速初始化機(jī)制。
為了創(chuàng)建Kata容器,Kubernetes用戶必須先創(chuàng)建一個(gè)RuntimeClass對(duì)象。之后,Pods或Deployment可以引用RuntimeClass表明要使用的運(yùn)行時(shí)環(huán)境。Using Container Runtimes說(shuō)明文檔(https://docs.oracle.com/en/operating-systems/olcne/runtimes/kata-pod-create.html)中附有示例。
Kata容器旨在提供“感覺(jué)和性能如同容器的輕量級(jí)虛擬機(jī)”;你的開(kāi)發(fā)人員無(wú)需知道其代碼在虛擬機(jī)中執(zhí)行,也無(wú)需更改工作流程即可收到成效。
原文標(biāo)題:Kata Containers: What, When and How,作者:Mark Cram
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】