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