当前位置: 首页 > 科技观察

工业物联网的容器化方法

时间:2023-03-18 11:38:06 科技观察

容器化方法为跨物理计算资源的系统操作和维护带来优势。在IT世界中,企业可以利用容器技术将计算工作负载与其运行的计算基础架构分离。例如,这允许将计算硬件视为一种实用程序,允许跨机架部署多个工作负载并根据需要扩展硬件资源(例如核心处理器、内存和存储设施)。跨硬件资源使用多个软件工作负载可以更有效地利用硬件投资并提高对硬件故障的鲁棒性。通过允许可以更新集中式容器配置然后将其推送到执行环境的场景,这使得软件工作负载本身的维护和发展变得更加容易。应用于传统企业IT的容器化技术已经成为现代云计算技术的关键使能器。虚拟机一般来说,容器可以被认为是轻量级的虚拟机。一个完整的虚拟机可以完全模拟宿主机上的目标硬件层,包括CPU指令集、外围设备集等。虚拟机具有很强的可移植性,但是在宿主机内部模拟目标计算机的方方面面会产生很大的开销.与被模拟的目标机器相比,这实际上需要对主机进行过度规范。在许多情况下,这种级别的仿真是不必要的。基于管理程序的虚拟化比完整的虚拟机需要更少的主机资源。管理程序为每个执行环境提供底层硬件的私有视图,但它主要绑定到底层主机体系结构,因此通过将硬件体系结构限制为主机体系结构,它确实获得了一些额外的效率。在工业物联网(IIoT)应用程序中,通常不需要完整虚拟机或管理程序提供的抽象和隔离级别。容器不是完整的虚拟机,而是在主机的约束和架构内运行。这样,容器就可以与宿主机的CPU架构和底层操作系统(内核)进行接口,从而直接共享宿主机的硬件和内核资源。容器依赖于宿主机的底层操作系统,但可以封装和提供上层操作系统(用户空间)的一部分。这允许针对一组固定的版本化操作系统资源构建和运行容器内的应用程序。分区大多数系统管理员或UNIX应用程序开发人员可能熟悉“依赖地狱”的概念,它使所有系统资源都可供应用程序运行。在配置为在同一服务器上运行的所有应用程序之间维护多个应用程序依赖关系通常是一项棘手且乏味的任务。容器允许每个应用程序将一组受控的依赖项与应用程序捆绑在一起,以便这些应用程序可以独立拥有稳定的执行环境,与同一服务器上的其他容器化应用程序进行分区和隔离。为了方便起见,甚至应用程序更新也经常打包部署为容器更新。因此,容器在目标机器上的应用程序组件之间提供了强大的分区。增强的安全性由于容器是在容器引擎的上下文中执行的,因此它可以通过约束容器引擎本身来增强对应用程序的安全策略和约束。例如,在Linux托管环境中,使用“cgroups”、进程空间隔离、文件系统控制、内核级强制访问控制等机制,可以对运行在这些控制下的容器引擎进行限制,例如限制内存、CPU使用率、对文件系统特定部分的访问、对网络资源的访问,或仅允许某些预先批准的内核操作子集。通过容器引擎的机制实施这些约束会强制实施此类安全控制,即使封闭的应用程序不知道或合作参与这些控制。这与现代IT安全最佳实践是一致的。容器就像应用程序一样,可以对它们进行签名和身份验证以分发到计算节点,并且可以在容器引擎的强加密下进行身份验证。编排系统现代容器化系统还包括编排系统或与编排系统互操作。编排系统提供了将容器分派给主机并确定将哪些容器分派给哪些主机的方法。此外,大多数编排系统允许应用配置来参数化容器并支持管理指标/仪表板来监控系统。在大规模协调容器的部署、配置和操作时,编排系统必须具备这些功能。容器化方法和优势在构建和维护容器方面,一些系统比其他系统具有更多的功能和特性。容器总是可以手工构建,但开源生态系统中通常有工具和材料可以帮助实现这一点。现代系统通常允许容器从参考容器的组合/库中派生。这些库促进重用,利用生态系统,并允许快速开发和部署容器。简而言之,容器化消除了以受控方式配置应用程序及其执行环境以有效利用底层硬件计算资源的挑战。容器带来了分区、安全和编排的好处。这种方法比完整的虚拟机更便宜,并且仍然会导致操作系统/用户空间组件的重复。为工业物联网(IIoT)采用容器化方法尽管容器化技术主要是为传统企业IT开发的,但为工业物联网(IIoT)采用类似方法具有明显的相似性和优势。需要考虑的一件事是将部署容器的工业物联网(IIoT)主机的类型,这通常需要考虑用例、未来证明和投资回报(ROI)。在某些情况下,这可能是一个高价值的安装,保护边缘节点的高性能计算资源,类似于部署在企业数据中心的服务器。在其他情况下,需求可以证明在该边缘节点分配成本较低且功能较弱的机器是合理的。在功能齐全的工业物联网(IIoT)部署中,可能存在与不同类别的边缘硬件关联的不同资产层。如何经济地启用相关规模的每一类资产可以迅速成为选择边缘节点硬件和架构的重要驱动因素。另一件需要考虑的事情是如何利用容器的分区属性,即沙盒。您是否在边缘部署包含所有应用程序功能的单体容器?或者您是否希望通过将应用程序组件隔离到单独的空间/单独的容器中来获得更好、更可靠的状态?例如,通过划分边缘功能,可以将更多的权限授予容器。其工作是定期读取、评估和报告警报的应用程序组件可以被授予只读权限以与边缘资产进行交互。旨在对边缘资产执行软件升级的应用程序将需要更多权限,但可以应用不同的基于角色的安全性来与应用程序交互。这种架构可以映射为一种分层的安全方法,在这种方法中,可以围绕托管在同一边缘节点上的不同应用程序正交地约束强大的权限执行和角色映射。此外,能够分离应用程序组件可以导致更健壮的实现,其中一个应用程序的行为(或不当行为)不会直接影响另一个应用程序。这种方法还允许将增量增强功能轻松添加到边缘设备。应用程序组件之间的交互是另一个考虑因素。由于应用程序是分离的,因此需要为单独的应用程序实施进程间通信(IPC)方案/远程过程调用(RPC)方案以在边缘节点内进行交互。此类进程间通信(IPC)场景/远程过程调用(RPC)场景也应经过身份验证和控制,以仅允许经过批准的交互。请注意,典型的容器化解决方案不提供这些机制。容器化解决方案的安全特性与现代操作系统设计和现代安全最佳实践一致。通过在操作系统级别设计控制和策略,您可以更好地限制安全漏洞对系统的潜在影响。用于验证和验证在边缘运行的应用程序组件的机制也与现代安全态势所需的方法一致。编排在工业物联网(IIoT)中具有明显的价值。绝对有必要利用一种以受控和集中的方式管理工业物联网(IIoT)边缘节点群的方案,以管理、版本化、维护容器化应用程序组件并将其推送到边缘。与传统IT环境不同,这里的挑战是为特定边缘设备分组和编排容器。容器工作负载必须映射到边缘设备的特定物理部署,因为这些设备直接绑定到本地资产。编排系统不能选择任何硬件来运行容器,但需要足够灵活以轻松定位特定边缘节点。编排解决方案也可能不足以完全管理IIoT系统,因为需要管理或提供主机系统的其他注意事项(网络接口、VPN、安全凭证、蜂窝调制解调器等)。这些资源通常由主机操作系统直接管理,并且仅供容器使用。工业物联网(IIoT)平台的传统方法将此功能封装在设备管理下,其中托管在设备中的容器/应用程序的管理可能是一个统一的设备。托管子集。您还需要考虑选择开源或闭源容器引擎,因为维护它可能取决于第三方。对第三方技术的持续支持、容器中的自定义应用程序、不断发展的功能以及与不同协议栈和云的集成是其他考虑因素。