我們現在正式開始吧先謝謝大家參與今天的CNCF網頁會今天的我們的題目是AWS如何利用Firecracker和Firegate在Amazon EKS裡面運行不服務器的COVERNATIC SPORT今天我是今天的主持人我是CNCF的Developer DiWangeles首先歡迎今天的延長者莫子源莫子源是AWS解決方案架構成正式開始前線簡單說明一些今天的網頁會的大概參與的方式簡單來講今天的外面拿的方式參與者是無法以語音溝通的要是在收聽等下的延講的圖要是有問題就是有提問的可以使用裡面的Q&A就是提問的就是把問題放在裡面那麼在我們那個往後的就在後面的那個環節我們有一個大部分的那個環節那麼大概那個時間就是延長者可以一起處理大家的感興趣的問題另外問明了往後完成之後的我們會把那個視頻跟那個材料也會放到CNCF的外面的那個網站另外也會在CNCF微信裡面來分享好現在我們歡迎就是講解莫子源開始今天的那個演講謝謝莫子源時間交給你了好好的Hello那個大家上午好感謝來參加這次CNCF的這個 webinar那今天呢我給大家帶來這個 topic其實可能比較稍微硬核一點是關於一個 Kubernetes的一個 serverless容器計算平台那的介紹裡面包括了這個AWS Firecracker的一個虛擬機和Amazon EKS就是我們AWS托管的 Kubernetes以及相對應的 serverless的這個計算平台那我剛剛那個主持人也介紹了我是來自AWS的解決方案架構是莫子源那我在加入AWS之前呢一直比較專注這個CNC包括容器 Kubernetes然後OpenStack這些的這個底層的這些研究所以今天這一塊內容呢可能是自己比較擅長的領域吧所以就盡可能的跟大家多介紹一些這是今天主要的這個會議程那其實在開始介紹這些開源項目產品和服務之前我會花一點時間給大家補習一下這個虛擬化和容器的一些基礎知識這樣便於大家更好的理解同時呢我會重點介紹 Firecracker這個全新的 Hypervisor以及Farget這樣一個serverless的容器平台的計算平台就是無服氣價格的就是說你不用去管理底層的這個服務器資源同時Farget我們去年Reinvent發布了一個對EKS就是 Kubernetes的一個知識然後這一塊我會做一些介紹然後因為CNCF是一個開源的項目組織那我也會介紹一下我要這個安全安全容器的這個上time的一些開源的這個方案和實現包括AWS自己使用的Firecracker Container還有一些比較流行的Cutter Container以及WaveWox的Ignite甚至Wox VMM這樣的產品方案那Firecracker其實它的這個單詞的中文意識其實是一個暴主我們用的那個燃放那個鞭炮那AWS比較有意思把自己研發的Hypervisor都取得比較名字比較帶火藥味之前我們的EC2虛擬機用的這個Hypervisor因為我們叫Nitro它就是消基的意思火藥的成分OK那首先呢我想先還是花一點時間跟大家講一下什麼是虛擬機其實這個概念我相信所有人都應該已經知道但是我今天可能想要強調一點就是通常來說我們的虛擬機是對一個完整的物理計算機系統的一個模擬仿真包括這個指令級的這個包括指令級的部分也包括周邊的這些外設從這個鼠標鍵盤到顯示器但是我們今天要介紹這個Firecracker呢會和通常的虛擬機不太一樣我們一般叫它叫做這個Micro VM就是說清新虛擬機它並不是對一個這個計算機的一個完整的模擬仿真它只模擬了運行這個容器或者其他這個無浮氣計算任務所必須的這個組件一回我會具體介紹那Firecracker呢其實它是屬於一個VMM叫Hypervisor是對這個提供這個虛擬機抽象的這樣一個應用軟件然後其實這個虛擬機和虛擬化技術有非常長久的歷史早在這個這個可能六七十年代的這個大型機Unix就有直到這個兩千年左右那Wandmau和Zen才把這個這樣技術呢帶到了X86環境得到大規模的這個使用那到如今的絕大部分主流的這個虛擬化技術呢都會採用到一個基於硬件輔助的這麼一個虛擬化的技術包括最為流行的這個Pumil KVMHypovryWindows上使用的這個虛擬化環境那同時AWS呢自己也實現了兩個這個Hypovrys一個是Nitro就是我們的EC2使用的這個虛擬化環境還有一個就是我們今天介紹的主角FarquakerOK那那接下來呢我會減來介紹一下KVM現在已經成為這個虛擬化的一個絕對的一個主流的技術尤其是對各個雲平台而言那它其實是Linux操作系統大概是6.22.6.20這個版本之後Linux裡面內建的一個虛擬化的一個Hypovrys的一個工具集那可以通過這個KVM的輕鬆構建自己這個Hypovrys那它相對於Zen這樣的一些傳統的虛擬化技術很大的不一點是它沒有這個它卸足這個現代化的這個CPU像類似VTX這樣的技術提供了一些這個特權指令這個實現然後減少了大大降低了對這個就是傳統虛擬化對Hypovrys的這個依賴而且它它也沒有完整的一個PVE的一個實現然後這樣的好處就是說我不再不再需要去修改這樣一個guest就是說虛擬機面的操作系統來使它能夠實現這個虛擬化那像Firecracker這樣的Hypovrys它會通過就是VertiO這樣的驅動去實現這個PVE就是半虛擬化半虛擬化能夠提升這樣的IO的這樣一個速度然後還有一大好處它把設備的這個訪人設備訪人就是模擬這個鍵盤屬標這個USBPCI這樣的硬件這個功能交給USB的一個進程去實現通常使用QAMU這個工具去進行訪這也是目前開源卷最主流的這樣一個方案那AWS並不是基於這樣的開源的QAMU這樣的開源的模擬去去實現的因為它有很多這個問題我後面也會講到我們構建了兩棵不同的NITRO是把這個設備的訪人offload到了我們專用的一個PCIe的這樣一個硬件卡上去實現那今天要介紹Flycracker它就是也不太一樣它是什麼呢它是只訪真了這樣一個最簡單就是說運行這個容器所必須的最基礎的這個硬件設備比如說它有了驅動包括網絡快生組的磁盤網還有socket用於通訊的這樣一些最基礎的硬件它是基於這個開源的Cross SVM項目上面進行開發的Cross SVM會負責跟這個KBM交互然後設備的訪證還有一些硬的這個響應會有Flycracker這個VMM去實現OK那其實前面的這些只是可能稍微有一點灰色啊沒關係這個容器這一塊大家應該就相對熟悉一些了它其實也算一種虛擬化的一個技術只不過我們通常說它是一個Operation System Level的這樣一個技術虛擬機這種傳統虛擬化是System Level的一個技術那它其實可能大家不一定了解的就是說它其實也是有幾十年的這樣一個歷史可能從六七十年代就有了最初的出行就是Satch RouteSatch Route它是對這個不同的這個操作系統用戶這些目錄空間的這樣一個隔離在後來發展到Bread FreeBSD的Gel到OpenVzOpenVz在早期的時候一些VPS的這個供應商那非常流行然後在Linux上的LXC容器到現在使用的這個Lib Container那Docker Lib Container的話提供了六種不同的這個這個隔離的技術那其實已經相對非常成熟了同時呢其實Docker以及這個Container DCSF的Container D項目的這個出現呢其實非常重要的它大大的推進了這個容器技術這個補給簡化了容器的這個生命周期管理同時建立的這個OCR包括後面的這個CR也形成了一套標準的這個容器操作包括鏡像之類的一個規範所以這幾年的這個容器可謂是大紅大紫吧OK那其實這張圖前面內容剛說了就可能比較抽象眼那這張圖呢我就是我比較直觀的把直接在服務器上裸金屬的這種方式運行和訓練機有容器這種方式運行一個應用的這個層次那畫出來了其實在直接服務器上直接部署那其實大家就通常知道也必須也面臨到的問題就是各個應用之間會存在這個資源的這個相互搶占更更難更麻煩的是很多依賴甚至是相互衝突的我們需要花大量的時間去解決這樣的依賴問題所以對於現代化的這種複雜的IT環境來說尤其是為服務架構下這個環境那基本上以這個裸金屬方式去佈置運用是不太可取的就是非常麻煩難以運位也不太利於這個快速疊帶那訓練機其實就是提供了一個最好的一個隔離環境那每個應用它享受自己獨立的這個操作系統獨立內核然後你可以有獨立的這個依賴的依賴庫環境那容器呢它的隔離力度要低一些它會去跟虛擬機不同式它會去共享內核那這樣也是帶來了一定的這個風險那一旦出現這個就是應用的一些操作不當導致的這個泄露或者說內核的這個崩潰都會造成很嚴重的這個影響面Blast radio那容器和虛擬機呢我們可以從這個不同方面去去比較一個是資源隔離的這個級別那容器容器的隔離力度要遠遠低於這個虛擬機那同時呢它暴露的這個攻擊面也更大就是很多比如基於容器的這個運輔商那他不支持在容器裡面運行Strace之類的命令因為有為了這個有潛在這個安全風險那它會屏蔽一些系統級的這個調用那當然好處也很明顯就是說它有非常快的這個啟動速度和這個敏捷的這種應用場景然後有非常非常低的這個開銷那基本上在以前想發掘這種輕量級虛擬機誕生之前那在一台服務器上運行數千個虛擬機簡直是不可想像的事情那ok相應的虛擬機呢其實比較大的一個好處就是因為剛也說了不共享內核其實故障域也就隔離了而且就是說虛擬化的穩定性也是非常的這個高基本上如果沒有沒有這個很劇烈的這個工作負擔情況下那一個虛擬機能穩定運行幾年都是沒有問題的那所謂 serverless計算呢就是說我們在雲原生的這個環境所倡導的一種這個計算模式吧它是基於無服務器的方式去大建的這個計算平台就是說你作為這個用戶我就專注於我的應用開發就好了不再去把這個經歷從運為這個服務器管理服務器中間釋放出來但是我們想要做好這個serverless的這個計算呢我們其實需要一個新的一個全新的一個環境去承載這樣的這個像容器Docker這樣機裝箱這樣的這種應用那其實firecracker呢就成為我們為了打造這樣一個全新的serverless的這樣一個計算平台所從最底層開發的一個這樣一個hypervisor那他他能夠去適應任何這個需要現代化的現代化容器化的這樣一個應用serverless的計算呢其實總結起來主要有這個平台主要有三方面的這個需求第一個是安全性AV因為一旦使用serverless那整個的底層的這個計算環境服務器這些資源都要交給託管的雲服務商去打理那這樣的話他的安全性就像相當於要雲服務商去提供保證了而且對於AWS這樣的雲服務商來說安全永遠是擺在所有的需求裏面擺在第一位的因此其實傳統的這種容器容器的這樣的隔離技術可能就不能適應這個嚴苛的這樣一個安全需求同時serverless的這個工作負載呢他往往可能是彈性的有時候甚至只是比如像Alarb Slam這樣的計算平台那他的很多這個計算任務呢是事件驅動的那可能一個事件就是一個外部的一個點擊訪問那他可能處理的時間呢只有幾十毫秒所以你必須要做到這種好秒級的這個啟動才能最大限度的去利用他的這個資源同時serverless呢因為這個這個不同的這個計算任務他的這個運行時間的這個不確定性他的這個資源的這個如何高效的利用也是成為了一個比較難的一個問題就是怎麼樣實現好這個資源的恆步提升這個利用率從而降低這個成本實現資源的最大負用就是比自己拖管服務器的方式節省成本也是這個serverless計算的一個重要的一個課題吧ok那基於這樣一個背景的Alarb S就是設計這個firecracker當然他是為容器工作負債專門構建的一個開源的一個hypervisor那這是一個簡單的一個抽象的一個架構圖那firecracker虛擬機呢是跑在這樣一個taballio的一個裸金屬服務器上面的那在firecracker裡面呢可以運行直接以這個就是說直接當作一個普通的虛擬機去運行操作系統這個是沒有問題的那也可以運行serverless的這樣的容器任務我們有一個叫firecracker task的東西還可以運行像lambda這種函數式計算的這樣一個function那也可以直接運行這樣一個容器那在一台服務器上呢我們可以這個去同時運行數千個規格不一樣的這樣的輕量級虛擬機我們叫micro vm然後這些micro vm呢是通過基於kvm的這樣一個硬件的虛擬化技術去做隔離從而保證多租戶的安全那這張圖呢就是說相對於我們一個micro vm內部的一個其實一個大概的一個視力那其實那大家可以看到在每一個運行的一個應用呢它其實都是享有這樣獨立的一個guestOS因為它還是一個虛擬機那這些應用呢你可以直接運行在虛擬機上也可以像剛我們說的這個方式把它運行在容器裡面沒有問題那每個這個應用之間的都是通過虛擬化的方式去做的這個隔離那hypervisor呢就是我們的這個hyper crapper總結一下hyper crapper在這個無敷計算的這樣一個成景下的這個優勢第一個是安全安全我們一會會詳細的介紹第二部分呢是這個速度因為它是一個輕量化的虛擬機這樣它的啟動時間是非常非常的快那我們可以看到單個vm啟動時間只有4毫秒那那算上這個操作系統的這樣一個引導時間的話也不過125毫秒的這樣一個時間那相比於這個容器呢並沒有很大的就並沒有多少這個overhead和掠視但是比起虛擬機動輒分中級的這個啟動時間那是快了非常多因為像ok那這最後一點呢就是它是一個能夠適應AWS雲這樣一個環境的一個能夠在大規模環境下產生像能提升經濟效益的這樣一個技術因為它有一個非常小的一個overhead它內存的overhead其實只有5兆然後每台實力像在AWS的AX3這樣的Balmatter機型上的能夠同時運行4000台這樣的輕量機虛擬機Micro-VM那這是Five Cracker的一個整體設計那每個Micro-VM呢可以是任意的CPUCPU內存的一個配比它對於操作系統來說呢它只是一個用戶空間的一個進程那有這個操作系統宿主機操作系統的內核去做調度這個與其他的KBM的虛擬機是一致的ok右邊這張圖呢是它大概的一個架構其實其實架構上非常簡單就是實現了簡單的這個Gvertile的網絡和存儲然後會有一部分的這個Red Limit這個線流的這麼一個這個功能ok然後還有Metadata提供一些Metadata原數據的這樣一個特性然後我值得一說的就是說Restful API這一塊Restful API這一塊其實大家如果熟悉傳統的KBM的這個虛擬機的話包括Zen大家會知道一般的這個與這個虛擬機就是Hypervisor這個交互是通過Libvert這樣的這個SDK去這個庫去訪問還有使用XML這樣的複雜的這樣一個編排文件那它相比於那的話這個Restful來說會顯得非常的笨重難用那Restful這個API其實就提供了為管理這個虛擬機提供了很大的一個便利那我看到有有這個參會者提了這些問題我可能會在Cutter container那部分我會在最後做一個對比和這個unicornGVS這些都會有然後Farcracker在裸金屬上運行會遇到什麼限制這個不會有任何限制大家有問題的話我在後面會留出專門的這個答疑時間那最後我大概簡單說幾個Farcracker的功能特性第一個它是G-RAS原開發的然後它是通過API-2.0許可證去完全開源的一個項目同時它能夠良好的支持這個資源的超分還有一點我剛剛沒說的就是說它除了這個不的strap很快它的這個從snapshot恢復的速度也非常的快這個就對韓數式計算特別特別有用同時它的啟動速度也非常快每秒鐘可以啟動150多個這個蓄力機OK那接下來我會其實重點介紹一下Farcracker是如何提升安全性於這個資源利用率的它是怎麼實現的其實容器在容器的這些安全隱患熟知但是其實即便是使用虛擬化的這個技術那其實也面臨了很多的這個安全隱患虛擬機也不是真正安全的就我印象特別深的就是大概1516年那一會兒爆出一個很大的一個關於QMU的一個漏洞那這個叫獨業漏洞那可以利用這個漏洞虛擬機會發生這個第一世界就可以訪問到在統一台速度機上運行的其他租庫的這個虛擬機的這樣一個資源而這個漏洞呢竟然是由一個軟盤的對就是那個30年前大家用的那個軟區的控制器反正這麼一個軟軟區控制器存在一個緩衝器洩漏的一個一出的一個bug導致的那這個就是很難讓人接受的一個事情因為對於現代化的一個IT應用它其實根本就不可能需要用到軟盤這樣一個硬件設備但是呢QMU它號稱是可以反正任何的這樣一個硬件設備那它也提供了對軟區的相應的這個支持但是呢提供支持的背後呢其實並沒有給我們這個真正的用戶帶來什麼這個價值反而呢造成了很多這個漏洞的這樣一個隱患那當時我是去維護了很多OpenStack的這樣一個資源池那我們不得不去打派一台一台服務器打派打完派還得告訴那個客戶說你們必須重啟一下服務器然後重啟一下虛擬機來預防這樣一個漏洞其實這個是不是很讓人接受的事情而且就是這樣的漏洞其實也是每年都會有頻繁出現的那基於此呢因為QMU在這個其實開源界的安全的口碑其實不是太好那AWS就直接從最底層的開始直接用RUS的語言開發了一個全新的VMM和那個Firecracker那了解RUS的語言人都知道一個內存安全的一個語言它可以顯示的就是說標記每一部分是內存是safe或者onsafe的這樣如果是safe的話那如果這段代碼存在任何這個訪問越界的這個可能性那它都是編譯不過去的那我們利用這個feature呢就開發了它的外台就是磁板網絡IO和內存模型這一部分那這一部分呢其實就沒有這個緩成去溢出這樣的風險了從根上避免了同時它提供了一個簡單且高效而且的一個並發控制的特性那我們利用這特性的開發了VCPU的現成包括IO Walker的這一部分同時呢它的垃圾回收跟夠遠不一樣它是手動管理那對於hypervisor這種對性能要求到極致的應用來說呢那肯定是手工管理類存是最合理合適的同時呢我們也做了很多的這樣一些設計來消除安全隱患其實最典型的就是說我們緊模擬了非常少的這個就是反正非常少的這個device model就是硬件設備它就舉個例子就是說我們支持的這個鍵盤就只包含了一個按鍵就是開機關機鍵因為其實我們正常與容器的這個交互其實並不需要依賴這樣一個鍵盤的同時消除了gasl host的gasOS和host kernel之間的這個直接交互那不同的虛擬機進程之間呢我們也其實實現了一個居約set comp一些gelar的技術實現了這個殺箱級的這個隔離這就是大概的一個示意圖大家可以看到中間上面這部分MMO是 memory mapping的這個IO那比較現代化一點的還有高性能的這個設備呢都會使用這種方式去與這個操作系統去銀銷戶就是把這個設備的設備空間印射到這個內存地址空間那我們用這種方式基於這個KVM最主流的這個Virtual IO的一個伴訊率化的技術實現了快存屬和網絡那分別對應到速主機上面呢就是一個QHunt2的這個文件和一個tab就是二進製的這樣一個網絡訪問了一個劇柄吧這個其實跟KVM是一致的同時對於像串口像我們的那些鍵盤石中這樣的傳統的這個硬件設備呢我們是採用PIO的方式然後去在FileCrasher上實現了這個Device Model那因為我們只模擬了有限的這個設備就基本上就是圖中這樣一些設備所以這個FileCrasher會非常簡單非常輕量級同時我們也實現了在對於這個VM和VM之間使用KVM做一個訊理化的編接同時在數據操作系統上也做了這個GISACCOMJALER的這樣一個隔離這樣呢就是說提供了一個最大的一個安全性的一個保證接下來呢我介紹一下這個Farget就是AWS的無服務器容器計算平台Farget我們有兩個其實有兩個產品線一個是針對Combinatis就是拖管了拖管的CombinatisEKS這個是去年剛剛發布的同時呢更早的時候呢我們已經在ECS上面就是AWS自己開發的這樣一個容器編排的平台用的都是LAVERY都是AWS自己的這樣的服務有點類似Docker Swarm的這樣一個編排的平台那其實上面運行Farget也非常長的這樣一個時間了我們所以這方面有兩個版本那今天我們介紹只是Fargeton EKS這是我們就是亞馬遜的這個CTOWarner Wolvers博士那他對於這個Farget的這樣一個定位其實他其實我們開發這個東西的這個需求其實都是源於這個用戶用戶希望我們用戶作為開發者肯定希望我專注於寫我的代碼然後讓代碼跑起來運行能夠快速的去部署發辦就行了其實並不希望去操心底層的這個服務器的資源的這個管理還有一些複雜的這個配置那這些東西其實就去交給這個Farget去完成了Farget總體上的一個設計原則大概是這樣的就是剛剛也說過安全一直是首要的首要的頭等大事保障客戶工作負債的這個安全接下來我們才會考慮就提供這個就是雲原生的這樣一個可靠性和可伸縮性這個也是說雲相對於傳統的這個這個最大的這樣一個優勢最後我們達到這兩點以後會希望不斷的提高這個資源利用率這樣運行效率提高資源利用率那我們就能降低這樣的成本降低成本以後我們就能一個你更低的這個價格去回饋最終的用戶我們其實大家要了解發給的話也會發現我們在引入了這樣的技術以後價格會做相應的這個降價調整ok接下來我會介紹一下這個發給他on eks那eks我今天不會過多的介紹我大概說一下這個選擇這個lbs拖管的這個eks運行couple優勢第一個他是適合生產工作負債的那不管是控制平面還是數據平面我們都是遵照這個多個可用區三個或以上的這個可用區做了一個高可用的一個設計同時呢我們提供了一個sla的一個保證然後我們還有很大一點不同的就是說我們是對couple環境的任何的這個改動都是會提交upstream到上游社區的保證與原生的couple一致因此我們有大量的os s項目的這個空線那包括大家平時用的這個網絡啊或者load balanceingress插件大家都可以去看到同時更多的這個好處是能夠與AWS很多原生的這個功能去做幾層比如使用im去管理使用一開死的幾大好處那這個是一開死整體的一個架構啊上面是其實是master node的部分我們把注意力集中大塗的這個下部分那對於生產上的工作節點呢其實我們就有三類了一個是你自己管理的這樣一個walker node我們叫managed node還有一個呢由AWS管理的那能夠方便的一件升級的這樣的托管的walker node那這兩種呢還是傳統EC2方式在EC2上運行容器的這種運行炮的這種方式那對於右下角呢就是我們今天的主角發給的這種模式在這個模式裡面你看不不再能夠看到EC2的這樣一個虛擬機你也無法訪問的是個完全托管的啊你你不需要管理任何walker node的一種subless的運行方式那這是選擇發給的去運行我們的pods的一個這個比較大的好處一方面你不需要改變任何現有這個pods他他能夠兼容完百分之百兼容庫姆雷斯上你已經運行的工作負債工作流然後跟這些服務去協同工作啊同時呢我們能夠以最快速的時間因為他不用再啟動新的這個walker node所以你可能可以一個非常快速的時間去啟動這個pods而且這些pods是可以跨可容區高可用啊部署的那每個pods呢也都足夠也都是享受這個啊這個虛擬化帶來了這樣一個安全運行安全隔離的這樣一個環境然後因為我們能夠快速的啟動pods那我就可以讓這些業務變得啊很完全的彈性化然後嗯這些pods呢也會按照實際所消耗的資源去付費其實就是一個啊秒級的一個計費同時網絡和安全這一部分呢與之前並沒有變化那我們的每一個pods呢都能享受獨立的Eni就是我們的獨立的這個網卡享受這個安全組帶來了這個隔離啊網絡和安全這一塊也不會有任何的這個啊體驗上的變化啊這是大概的一個啊架構啊這邊我大概就啊快速過一下這是一個控制平面啊我們注意的一點是啊如果我需要綠運行發給的這樣一個pods的話我需要定一個profile然後啊定一個schedule的一個label呢我們會去選擇不同的吊鍍器默認吊鍍器還是schedule這種方式那也有發給的新的一個吊鍍器那可以啊以subless的這樣一個方式去吊鍍運行啟動這個pods同時監控這個pods啊提供這個運行報告嗯ok那接下來呢我們會介紹一下啊這個剛剛說的是這個剛剛圖是這個啊這個是控制平面那接下來呢會講一下這個啊使用firecracker運行這個容器的這樣一個數據平面那這一個啊數據平面的項目呢啊它也是一個開源的一個項目啊啊啊首先firecracker呢能夠運行firecracker上呢啊運啊使用firecracker呢能夠降低這個數據平面的開銷那在以前這個方式運行方式呢啊每一個pods為了實現這個訓練化級別的隔離我們需要單獨啟動一個EC2然後在EC2裡面再去部部署AWS的這個啊發蓋的Agent起到一個類似Dock Engine這樣的一個作用那其實overhead會比較大因為即便是發蓋的一個Agent它用的這個資源消耗也會要啊也會有一定的這個資源開銷那有了firecracker以後呢發蓋的Agent可以拿到這樣的啊速主機上面呢那對於啊每一個pods裡面來說呢啊那每一個micro vm裡面呢只要運行這個容器自己的這些pods容器這些東西那發蓋Agent剛說拿到了這個啊速主機上面這樣呢這個overhead就資源的開銷就變得很小然後同時也實現了一個多出戶的一個功能同時呢啊同時呢剛之前的這種方式呢因為大家知道AC2的這個實力的這個資源啊其實規格以後呢我們就可以靈活的運行不同大小的這個容器然後啊把他們混布在一臺服務器上這樣呢就能提高這樣的利用率那像右邊這邊綠色的這個剩餘空間以前可能就沒有辦法利用到那現在呢我們就可以把它利用起來去運行啊其他新的這個容器啊這樣就提高了這個資源利用率這樣就可以成本更低啊從回饋這個客戶ok呃這邊會講一下這剛一個呃FivecrackerKalandy的一個實現原理啊那傳統的這個方式呢我們會呃在虛擬機裡面運行比如啊像Dock Engine或者在AWS呃包括Farget 1.4版本之後呢我們會使用Farget的Agent的作為一個Provision然後他會去與呃container D呃做加護container D呃會有一些呃shame然後最終啟動容器的呢是一個Wrong C的這樣一個容器這是啊傳統方式那在新的data plan裡面呢那我們可以看到我們把這個container D呃這一部分呢其實拿到了呃呃snapshotter呃大家熟悉container D的話呃會知道就是給這個用來給這個容器提供這個呃鏡像的這個呃功能的這樣一個模塊那他可以這個Device Mode或者呃Device Matter或者是Native的方式呃提供鏡像給container這部分拿到了外面呃運行時呢我們也拿到了外面呃然後這個部分呃使得呢我們呃能夠把這樣一個呃VM Linux的這個依樣一個ELF的一個可樂鏡像打包上一個qcon2格式的KBM的虛擬機鏡像來提供這樣一個呃microVM也就是Gaps的OS然後呃這個firecracker runtime呢和虛擬機內部的一個firecracker agent呃會通過套接字呃就是Virtail的Vsoc套接字進行這個交互這樣我們這些運行ROMC容器的這樣一個請求呢呃就能夠被正確的轉發到了容器內部然後還是通過ROMC的方式呃去啟動這樣一個呃容器那這樣大家就可以看到把這些組件都拿到虛擬機外部以後呢呃overhead是一個呃microVM只有5兆的這樣一個overhead這樣一個原因了呃那這一部分的內容呢詳細的介紹呢大家都可以在tthub開源項目中呃去看到有詳細的這個文檔介紹ok那呃firecracker是我們AWS自己的一個實現呃那也是我們就是我們在呃對於社區呢其實卡塔container也是一個非常流行的這樣一個項目這一塊呢我就會介紹呃firecracker和卡塔container這樣一個關系那如果關注卡塔container的朋友可能了解到在1.5版本之後那卡塔container呢它有兩種不同的roundtime一種是傳統呢這個基於qmailkvm的這樣一個roundtime那剛如果說了也說了它的不一樣的地方它可能有一些它因為不是呃針對severless原生的一個hyperwise那它可能overhead會更大同時有一些安全一塊但是呢它相對於firecracker它能夠實現的功能多一些所以就是說你可以使用firecracker作為roundtime也可以使用qmail作為roundtime但是嗯有部分的這個cli的這個feature呃可能使用firecracker呃模擬了僅僅模擬了比較有限的這個呃設備和硬件那其實從這樣架構圖上大家就可以看到就是呃卡塔container它其實呃本身並不直接提供這個虛擬機它依賴firecracker或者qmail那更多呢它是一個container地和這個呃針對虛擬機之間的一個呃中間鍵那它也會負責去構建這樣的虛擬機的這個操作系統內核啊鏡像啊這些呃部分這是卡塔container和firecracker這樣一個關係但是呃卡塔container其實會相對比較複雜一點那它overhead可能要比firecrackercontainer地呃要大一些就是當然當然好處就是它兼容這個呃cli兼容oci那目前還不完全支持這兩個標準所以就是嗯各有取捨啊那還有一個叫wave ignite的這樣一個呃工具是由wave walks開源的呃這個的工具呢其實就是它我不知道大家有沒有用過vagrant它其實是呃類似vagrant的一個呃一個工具但是一模一樣的呃這樣一個體驗它能夠呃支持這個darker的這樣一個呃鏡像那一段但是呢會以一個firecracker虛擬機的這樣一個方式去運行那就說它並不是在呃firecracker虛擬機裡面通過run cia或者是kata run time去起這樣的容器它還是一個虛擬機但是它的兼容呃類似darker這樣的一個API然後也能夠兼容darker這樣鏡像最好很好的彌補了vagrant的這個不足因為vagrant它是呃不兼容darkerimage的當對應的還有一個類似darkercompose它一個呃編排的工具叫fotoloss那firecrub可以利用呃這是上面的這個呃大概的一個架構然後最後兩分鐘我大概總結一下吧其實呃可能今天時間稍微有點趕啊我大概說一下就是呃現代化的其實這樣一個呃運行時並不是說只有firecracker firecracker康德利呃一種方案其實呃在業界那呃像ware i在windows上有呃hcs是基於hyper b的這個容器呃阿里巴巴有poach那有visphereintegrativecontainer包括最近也發布了這個visphere 7發布了projectpacific呃這樣的項目呃剛剛我們也介紹了卡塔container呃hyper round b呢像在呃容器round time這些呢是基於micro vm的一個方式呃那谷歌呢他的思路可能不太一樣他有一個呃gviso的話呃他不是採用micro vm的這樣一個方式呃他沒有去實現這個device model他更多的是把這個呃系統的這個system call去呃結實掉然後放在sandbox這個問題那unikernel這種微內核的方式也是呃比較主流呃比較流行的一個呃方案他就是只打包你運行應用必須要的cernel的這個模塊從而減小這個呃攻擊面呃我想說的一點就是其實現在方案非常多但是其實呃我覺得呃其實做的最有競爭力的一個之一吧說呢第一個他是呃在大規模的這個生產環境上是得到了驗證的然後同時呢他是呃沒有基於任何現成的這樣一個hypervisor是從零打造了一個專用的一個hypervisor我都非常呃呃強演的這個數據同時也是開源的呃這樣一個項目所以呃我覺得大家也是呃這個firecracker把firecracker呃當作一個呃選擇方案之一吧嗯然後同時呢我在介紹另外一個比較有意思的一個項目因為我剛開始也說了這個呃firecracker只是針對serverize的工作負擔那我假設我希望呃也獲得這樣firecracker這樣的一個高安全性但是我就是通過這個firecracker項目我們AWS又復發了另外一個呃項目叫RASVMM他把虛擬化裡面用到的不同的這個功能模塊像樂高一樣你可以呃以這個插件的形式去呃組合起來比如firecracker不只是PCIe那你需要PCIe的話你可以找一個PCIe的一個模塊把它拼起來呃包括國內的很多這個呃有商用包括這個像intel這樣的公司也都參與到了這樣一個項目你可以通過這個項目打造一個呃安全高下跟通用的一個呃還好吧那同時如果大家對這個呃firecracker呃因為其實我剛剛介紹都是很多都是理論部分如果想動手實踐一下我大家可以記一下這個呃 url就是我會有一個handzone的一個好幾個實驗呃大家通過實驗就能夠更直觀的感受到firecracker這個技術那如果想使用這個體驗這個amazeks發給的話那只需要去呃註冊呃AdaBS這個呃帳號然後通過eks卡頭這樣的一個命令就能夠很快創建一個知識呃呃這個發給的這樣一個eks的一個這個環境先我今天的內容大概就到這然後我去呃做一下這個答疑吧用最後對謝謝呃呃指揮員的很精彩演講啊呃你們可能現在時間還有一兩分鐘啊這樣子你可以先看看Q&A裡面看看有哪一些你能就是選擇回答哈謝謝啊好的那第一個問題是呃呃發給上不支持continental insight這個是我們最近的一個發布在前幾天吧不到半個月之前吧半個月或者最多一個月之前呃最新的這個發給的1.4版本支持了這個continental insight的這個監控呃他是通過那個在那個嗯就是呃呃continental d 下面在新增了一個sham專門用於監控的呃然後實現的呃然後看到continental的對比我們介紹了其實呃定位不太一樣呃發發cracker container d呃是一個發cracker專用的一個類似continental卡達continental的東西啊這個是呃不太一樣然後啊 ok下一個問題呃呃bottle rocket啊大家提的這個問題都非常的這個高高大上啊bottle rocket是我們提供的一個呃基於一個這個操作系統那其實是發cracker這個是一個呃hypervisorhypervisor和操作系統什麼樣的關係呢首先我們的如果你想運行呃比如說運行wubuntu或者運行或者運行這個呃bottle rocket你需要把這個東西和這個打包成一個qclqcon2格式的一個鏡像同時把這個carnal呃打包進去又會有一個carnal文件什麼東西以後我們就呃能夠啟動不同的發cracker去啟動不同的這樣一個呃操作系統那那bottle rocket和比如wubuntus這樣操作系統區別在於呢它是呃專門針對容器工作負載呃去設計的一個呃這個一個呃操作系統它是基於的工作負達去做rolling的這樣一個upgrade或者downgrade好吧呃有時間的那個關係可能我們只能回答到現在啦謝謝呃謝謝呃謝謝呃呃呃呃呃呃呃呃呃呃呃呃希望大家很很很很很很呃喜歡今天的那個環節啦謝謝大家拜拜好的謝謝大家嗯拜拜Christine we are ready tostop the recordingthank you