容器化方法為跨物理計算資源的系統(tǒng)的運(yùn)行和維護(hù)帶來了優(yōu)勢。在IT世界中,企業(yè)可以利用容器技術(shù)將計算工作負(fù)載與運(yùn)行它們的計算基礎(chǔ)分離。例如,這允許將計算硬件視為實用程序,從而允許在跨機(jī)架上部署多個工作負(fù)載,并根據(jù)需要擴(kuò)展硬件資源(例如核心處理器、內(nèi)存和存儲設(shè)施)。
跨硬件資源采用多個軟件負(fù)載可以更有效地利用硬件投資,并提高應(yīng)對硬件故障的穩(wěn)定性。通過允許可以更新集中式容器配置,然后將其推送到執(zhí)行環(huán)境的方案,從而使軟件工作負(fù)載本身的維護(hù)和演化更加容易。應(yīng)用于傳統(tǒng)企業(yè)IT的容器化技術(shù)已成為現(xiàn)代云計算技術(shù)的關(guān)鍵推動力。
虛擬機(jī)
在通常情況下,可以將容器視為輕量級虛擬機(jī)。完整的虛擬機(jī)能夠完全仿真主機(jī)上的目標(biāo)硬件層,其中包括CPU指令集、外圍設(shè)備集等。虛擬機(jī)具有很高的可移植性,但由于在主機(jī)內(nèi)模擬目標(biāo)計算機(jī)的各個方面而導(dǎo)致大量開銷。與要模擬的目標(biāo)計算機(jī)相比,這實際上要求對主機(jī)進(jìn)行過度指定。在許多情況下,這種仿真水平是不必要的。
基于虛擬機(jī)監(jiān)控程序的虛擬化所需的主機(jī)資源少于完整的虛擬機(jī)。虛擬機(jī)管理程序為每個執(zhí)行環(huán)境提供了基礎(chǔ)硬件的私有視圖,但是大多數(shù)情況下它都綁定到基礎(chǔ)主機(jī)架構(gòu),因此通過將硬件架構(gòu)限制為主機(jī)架構(gòu),它確實獲得了一些額外的效率。在工業(yè)物聯(lián)網(wǎng)(IIoT)應(yīng)用程序中,通常不需要由完整虛擬機(jī)或虛擬機(jī)管理程序提供的抽象和隔離級別。
容器并不是完整的虛擬機(jī),而是在主機(jī)的約束和架構(gòu)下運(yùn)行。這樣,容器能夠與主機(jī)的CPU架構(gòu)和低級操作系統(tǒng)(內(nèi)核)接口,從而直接共享主機(jī)的硬件和內(nèi)核資源。
容器取決于主機(jī)的底層操作系統(tǒng),但是可以封裝并提供高層操作系統(tǒng)(用戶空間)的一部分。這允許在容器內(nèi)的應(yīng)用程序被構(gòu)建并針對一組固定的版本化操作系統(tǒng)資源進(jìn)行固定運(yùn)行。
分區(qū)
大多數(shù)系統(tǒng)管理員或UNIX應(yīng)用程序開發(fā)人員可能熟悉“依賴地獄”的概念,這使所有系統(tǒng)資源可用以使應(yīng)用程序運(yùn)行。在配置為在同一服務(wù)器上運(yùn)行的所有應(yīng)用程序之間維護(hù)多個應(yīng)用程序依賴關(guān)系,這通常是一項棘手且乏味的工作。容器允許每個應(yīng)用程序?qū)⒁唤M受控的依賴項與應(yīng)用程序捆綁在一起,以便這些應(yīng)用程序可以獨立地具有穩(wěn)定的執(zhí)行環(huán)境,并與同一服務(wù)器上的其他容器化應(yīng)用程序進(jìn)行分區(qū)和隔離。為了方便起見,甚至應(yīng)用程序更新也經(jīng)常打包和部署為容器更新。因此,容器在目標(biāo)機(jī)器上的應(yīng)用程序組件之間提供了強(qiáng)大的分區(qū)。
增強(qiáng)安全性
由于容器是在容器引擎的場景中執(zhí)行的,因此它可以通過約束容器引擎本身來增強(qiáng)對應(yīng)用程序的安全性策略和約束。例如,在Linux托管環(huán)境中,使用“cgroups”,進(jìn)程空間隔離、文件系統(tǒng)控件、內(nèi)核級強(qiáng)制訪問控件之類的機(jī)制,可以強(qiáng)制限制容器引擎在這些控件下運(yùn)行,例如限制內(nèi)存、CPU使用率、對文件系統(tǒng)特定部分的訪問、對網(wǎng)絡(luò)資源的訪問,或僅允許某些事先批準(zhǔn)的內(nèi)核操作子集。
通過容器引擎的機(jī)制施加這些約束,即使封閉的應(yīng)用程序不知道或不合作參與這些控制,也施加了這樣的安全控制。這與現(xiàn)代IT安全最佳實踐一致。
容器與應(yīng)用程序類似,可以對其進(jìn)行簽名和身份驗證,以便將內(nèi)容分發(fā)到計算節(jié)點,并且可以在容器引擎的強(qiáng)加密下進(jìn)行身份驗證。
編排系統(tǒng)
現(xiàn)代的容器化系統(tǒng)還包括編排系統(tǒng)或與編排系統(tǒng)互操作。編排系統(tǒng)提供了將容器分派到主機(jī),并確定要將哪些容器分派到哪些主機(jī)的方法。此外,大多數(shù)編排系統(tǒng)允許應(yīng)用配置以參數(shù)化容器,并支持管理指標(biāo)/儀表板以監(jiān)視系統(tǒng)。當(dāng)需要大規(guī)模協(xié)調(diào)容器的部署、供應(yīng)和操作時,編排系統(tǒng)必須具備這些功能。
容器化方法和收益
在構(gòu)造和維護(hù)容器方面,某些系統(tǒng)比其他系統(tǒng)具有更多的功能和特性。容器總是可以通過人工建造的,但是開放源代碼生態(tài)系統(tǒng)中經(jīng)常有工具和材料可以幫助實現(xiàn)這一目標(biāo)。現(xiàn)代系統(tǒng)通常將允許容器從參考容器的組成/庫中派生。這些庫可促進(jìn)重用,利用生態(tài)系統(tǒng),并允許快速開發(fā)和部署容器。
概括而言,容器化方案消除了以受控方式配置應(yīng)用程序及其執(zhí)行環(huán)境以有效利用基礎(chǔ)硬件計算資源的挑戰(zhàn)。容器帶來了分區(qū)、安全性和編排的好處。該方法比完整的虛擬機(jī)便宜,并且仍然導(dǎo)致操作系統(tǒng)/用戶空間組件的重復(fù)。
利用工業(yè)物聯(lián)網(wǎng)(IIoT)的容器化方法
盡管容器化技術(shù)主要是為傳統(tǒng)企業(yè)IT開發(fā)的,但是為工業(yè)物聯(lián)網(wǎng)(IIoT)采用類似方案具有明顯的相似之處和優(yōu)勢。
要考慮的一件事是要在其中部署容器的工業(yè)物聯(lián)網(wǎng)(IIoT)主機(jī)的類型,這通常需要考慮用例、未來驗證和投資回報率(ROI)。在某些情況下,這可能是一個高價值的安裝,保證邊緣節(jié)點的高性能計算資源,類似于部署在企業(yè)數(shù)據(jù)中心的服務(wù)器。在其他情況下,需求可以證明在該邊緣節(jié)點分配的成本較低且能力較低的機(jī)器是合理的。在功能齊全的工業(yè)物聯(lián)網(wǎng)(IIoT)的部署中,可能會有不同層次的資產(chǎn)與不同類別的邊緣硬件相關(guān)聯(lián)。如何在相關(guān)規(guī)模上經(jīng)濟(jì)地啟用每一類資產(chǎn),可以很快成為選擇邊緣節(jié)點硬件和體系結(jié)構(gòu)的重要驅(qū)動因素。
要考慮的另一件事是如何利用容器的分區(qū)屬性,即沙箱。是否在邊緣部署了一個包含所有應(yīng)用程序功能的整體容器?還是希望通過將應(yīng)用程序組件隔離到單獨的空間/單獨的容器中來獲得更好、更可靠的姿態(tài)?
例如,通過在不同容器之間劃分邊緣功能,可以為一個容器授予更多特權(quán)??梢允谟杵涔ぷ魇嵌ㄆ谧x取、評估和報告警報的應(yīng)用程序組件以只讀特權(quán),以便與邊緣資產(chǎn)進(jìn)行交互。打算在邊緣資產(chǎn)上執(zhí)行軟件升級的應(yīng)用程序?qū)⑿枰嗵貦?quán),但是可以應(yīng)用不同的基于角色的安全性來與該應(yīng)用程序進(jìn)行交互。
該架構(gòu)可以映射為分層的安全性方法,在該方法中,可以將強(qiáng)大的權(quán)限強(qiáng)制執(zhí)行和角色映射正交約束在同一邊緣節(jié)點上托管的單獨應(yīng)用程序周圍。此外,能夠分離應(yīng)用程序組件可以導(dǎo)致更健壯的實現(xiàn),其中一個應(yīng)用程序的行為(或錯誤行為)不會直接影響另一個應(yīng)用程序。這種方法還允許輕松地向邊緣設(shè)備添加增量增強(qiáng)功能。
應(yīng)用程序組件之間的交互是另外一個考慮因素。由于應(yīng)用程序是分離的,因此將需要實現(xiàn)進(jìn)程間通信(IPC)方案/遠(yuǎn)程過程調(diào)用(RPC)方案,以使單獨的應(yīng)用程序在邊緣節(jié)點內(nèi)進(jìn)行交互。此類進(jìn)程間通信(IPC)方案/遠(yuǎn)程過程調(diào)用(RPC)方案也應(yīng)進(jìn)行身份驗證和控制,以僅允許批準(zhǔn)的交互。需要注意,典型的容器化方案并未提供這些機(jī)制。
容器化方案的安全功能與現(xiàn)代操作系統(tǒng)設(shè)計和現(xiàn)代安全最佳實踐一致。通過設(shè)計操作系統(tǒng)級別的控制和策略,可以更好地限制安全漏洞對系統(tǒng)的潛在影響。驗證和認(rèn)證在邊緣運(yùn)行的應(yīng)用程序組件的機(jī)制也與現(xiàn)代安全態(tài)勢所要求的方法一致。
編排方案在工業(yè)物聯(lián)網(wǎng)(IIoT)中具有明確的價值。絕對有必要利用一種用于以受控和集中方式管理工業(yè)物聯(lián)網(wǎng)(IIoT)邊緣節(jié)點群的方案來管理、版本化、維護(hù),并將容器化的應(yīng)用程序組件推送到邊緣。
與傳統(tǒng)的IT環(huán)境不同,這里的挑戰(zhàn)是將針對特定邊緣設(shè)備的容器進(jìn)行分組和協(xié)調(diào)。容器工作負(fù)載必須映射到邊緣設(shè)備的具體物理部署,因為這些設(shè)備直接綁定到現(xiàn)場資產(chǎn)。編排系統(tǒng)無法選擇任何硬件來運(yùn)行容器,但是需要足夠靈活以輕松地針對特定邊緣節(jié)點。
編排方案可能也不足以完全管理工業(yè)物聯(lián)網(wǎng)(IIoT)系統(tǒng),因為需要管理或提供主機(jī)系統(tǒng)的其他注意事項(網(wǎng)絡(luò)接口、VPN、安全憑證、蜂窩調(diào)制解調(diào)器等)。這些資源通常由主機(jī)操作系統(tǒng)直接管理,并且僅可供容器使用工業(yè)物聯(lián)網(wǎng)(IIoT)平臺的傳統(tǒng)方法在設(shè)備管理下封裝了這一功能,設(shè)備中托管的容器/應(yīng)用程序的管理可能是統(tǒng)一設(shè)備管理的子集。
還需要考慮選擇開放源代碼或封閉源容器引擎,因為維護(hù)它可能依賴于第三方。對第三方技術(shù)的持續(xù)支持、在容器中自定義應(yīng)用程序、不斷發(fā)展的功能,以及與不同的協(xié)議棧和云計算集成是其他需要考慮的因素。
評論