物聯網關鍵技術:云原生容器技術在邊緣計算中的應用
何為云原生
隨著云計算的應用普及,最近幾年,云原生技術(Cloud Native)的概念很火。Pivotal公司的Matt Stine于2013年首次提出云原生的概念;云原生的具體含義在過去的幾年中也在不斷發生變化。最近Pivotal官網對云原生的概念概括為4個要點:DevOps、持續交付、微服務、容器。

云原生的概念組成
符合云原生架構的應用應該是這樣的:采用以kubernetes(k8s)和容器(docker)為代表的技術對應用進行容器化部署;基于微服務架構提高應用的靈活性和可維護性;借助敏捷方法、DevOps支持持續迭代和運維自動化;利用云平臺設施實現彈性伸縮、動態調度、優化資源利用率。
云原生技術在邊緣計算
如前文《物聯網關鍵技術:邊緣計算》所述,邊緣計算技術已廣泛應用于物聯網應用中,已在云計算領域實踐多年的各種云原生技術,也可引入到邊緣計算的場景中。
在邊緣計算場景中應用云原生技術,可以為邊緣計算帶來很多好處:
- 體驗:云原生技術以統一的標準,實現在邊緣基礎設施上和云上一致的體驗。
- 魯棒:基于云原生技術的邊緣容器能力,能保證弱網、斷網的自治性,提供有效的自恢復能力
- 運維:在海量邊、端設備上實現應用的大規模批量交付、運維和管控
- 安全:提供安全的工作負載運行環境,以及流量控制、網絡策略能力,有效提升邊緣服務和邊緣數據的安全性
依托云原生領域強大的社區和廠商支持,云原生技術對異構資源的適用性逐步提升。在物聯網領域,云原生技術已經能夠支持多種 CPU 架構和通信協議,并實現較低的資源占用,這意味著云原生技術不僅僅可以應用在云端,還可以應用在邊緣網絡及終端設備上。
目前已經有不少廠商在進行云原生邊緣計算的嘗試,并有了部分成功案例。適用于邊緣計算的云原生容器技術主要可分為微虛機(MicroVM)和沙箱(Sandbox)兩大類。
微虛機技術
所謂的微虛機是指可以在容器環境下運行的虛擬機,這樣既可以服用容器化的便利,輕量,同時又考慮了虛擬機的隔離安全性。亞馬遜AWS的Firecracker、OpenStack基金會的Kata Container以及VMWare的vSphere Integrated Containers都屬于微虛機技術。
Firecracker是一種利用 KVM 的虛擬化技術,專門用于創建和管理多租戶容器以及基于函數的服務。 可以在幾分之一秒內在非虛擬化環境中啟動輕量級微虛擬機,充分利用傳統虛擬機提供的安全性和工作負載隔離,同時兼具容器的資源效率。通過 RESTful API 控制 Firecracker 進程,可精確控制同一臺計算機上數千個微虛機使用的網絡和存儲資源。
Kata Containers是由OpenStack基金會管理,但獨立于OpenStack項目之外的容器項目。Kata Containers能夠支持不同平臺的硬件 (比如x86-64,arm等),符合開放容器規范(OCI:Open Container Initiative),同時還可以兼容k8s的 容器運行時接口規范(CRI:Container Runtime Interface)。這意味著Kata Container可以和容器生態的各種已有產品兼容,如docker、k8s等。

Docker引擎以前啟動容器使用runc,現在可以換成kata了。
Kata Container可以當做docker的一個插件,可以通過docker命令啟動Kata Container。Kata最大的亮點是解決了傳統容器共享內核的安全和隔離問題,辦法就是讓每個容器運行在一個輕量級的虛擬機中,使用單獨的內核。

k8s也使用kata取代runc創建容器
k8s傳統創建pods的方法默認也是使用 runC 創建容器,現在是使用kata container先創建一個虛擬機,在虛擬機中再創建pods,這樣就更安全。
沙盒技術
沙箱不同于傳統的容器以及微虛機,容器是通過namespace跟cgroup實現資源隔離,微虛機則是通過虛擬化技術實現資源隔離,而沙箱技術是通過對系統調用的劫持以及重定向,進而實現資源隔離的。Google公司的gVisor就屬于此類技術。
gVisor在內核之外實現了一個“內核進程”,叫做“哨兵”(Sentry),它能夠提供大部分 Linux 內核的系統調用。用戶進程的大部分系統調用都被轉化為對這個“哨兵”進程的訪問。

傳統系統調用和gVisor沙箱系統調用的對比
Google 將 gVisor 定位為“Sandbox”,而不是安全容器,主要因是 Sentry 還不能完全代替 Linux 系統內核,部分系統調用還是要轉接到 Host Kernel 上。
gVisor 其能夠為容器進程提供安全的隔離措施,同時繼續保持遠優于虛擬機的輕量化特性。而且gVisor還能夠與Docker及Kubernetes實現集成,從而在生產環境中更輕松地建立起沙箱化容器系統。
總結
隨著微虛機、沙箱等輕量級容器技術的出現,使得容器對系統資源的要求進一步降低,非常適合于資源有限的邊緣場景中應用,將邊緣計算資源容器化,用云端一致的方式來進行資源管理。