边缘计算工作负载:虚拟机,容器还是裸机?
我们生活在一个连接和智能设备的时代。随着智能设备数量的增长,数据的增长迅速达到了新的高度。这些数据从终端用户到达云或数据中心后再进行处理、存储和其他分析操作,因此,当访问时必定会带来延迟和带宽问题。正如Nati Shalom在他的博客文章中写道" 什么是边缘计算?",边缘计算实质上是将处理能力转移到网络边缘,更接近数据源。这使组织能够在访问数据速度和消耗带宽的方面获得显著优势。
由于边缘扮演着至关重要的角色,因此考虑边缘工作负载运行的基础架构技术同样重要。
为边缘工作负载提供技术
我们已经看到基础架构技术的整个范式转变,从物理服务器开始,一直到虚拟机(VM)的诞生,现在最新的是容器。尽管VM在过去十年左右的时间里做得很好,但与VM相比,容器提供了固有的优势。它们也是运行边缘工作负载的理想选择。
下图描述了与VM相比容器的工作方式。
每个虚拟机在共享管理程序(软件或固件层)之上运行独特的操作系统,从而实现"硬件级虚拟化"。相反,容器运行在物理基础架构之上并共享相同的内核,从而导致"操作系统级虚拟化"。
这个共享操作系统以MB为单位保持容器的大小,使它们非常"轻"和灵活,将启动时间减少到几秒钟,相比之下,VM却需要几分钟。此外,由于容器共享相同的操作系统,操作系统管理员的管理任务(修补,升级等)也会减少。另一方面,在容器的情况下,如果内核漏洞会使整个主机关闭。但是如果攻击者在到达VM内核之前,只是通过主机内核和管理程序进行路由,则VM仍然是更好的选择。
今天,许多研究正在朝着实现将裸机功能带入边缘工作负载的目标而进行。Packet就是这样一个组织,致力于实现满足低延迟和本地处理需求的独特主张。
虚拟机或裸机上的容器?
CenturyLink对在裸机和虚拟机上运行Kubernetes集群进行了一项有趣的研究。对于此测试,使用名为netperf的开源实用程序来测量两个群集的网络延迟。
由于物理服务器没有管理程序作为开销,因此结果与预期一致。在裸机服务器上运行的Kubernetes和容器显着降低的延迟; 实际上,比在VM上运行Kubernetes时低三倍。此外,与裸机相比,当在VM上运行集群时,CPU消耗明显更高。
所有边缘工作负载都应该在裸机上运行吗?
虽然数据库,分析,机器学习算法和其他数据密集型企业应用程序是在裸机上运行容器的理想选择,但在VM上运行容器有一些优势。与裸机环境相比,在VM中可以轻松实现开箱即用的功能(例如从一个主机到另一个主机的工作负载运动,在出现任何问题时回滚到先前的配置,软件升级等)。
因此,如前所述,轻量级且快速启动/停止的容器非常适合边缘工作负载。在裸机或VM上运行时总会有一个权衡。
公有云和边缘工作负载
大多数公有云(包括Microsoft Azure和Amazon)都提供容器即服务(CaaS)。两者都是建立在现有基础架构层之上的,基于虚拟机,从而提供边缘计算所需的可移植性和灵活性。
AWS还推出了"Greengrass"作为软件层,将类似云的功能扩展到边缘,从而实现本地信息的收集和执行。
让我们看看它是如何工作的。
Greengrass Group包含两个组件。第一个是Greengrass内核,用于在本地执行AWS Lambda,消息传递和安全性。第二个是IoT,支持SDK的设备,通过本地网络与Greengrass核心进行通信。如果Greengrass内核与云失去通信,它仍会保持与本地其他设备的通信。
企业采用和所涉及的挑战
由于容器提供的速度,密度和灵活性,它们是最热门技术之一。安全性可能会给企业在容器上采用边缘工作负载带来障碍。其中两个主要问题是:
• 拒绝服务:一个应用程序运行时可能会消耗大部分的操作系统资源,从而剥夺了其他应用程序继续运行所需的最低限度资源,最后迫使操作系统关闭。
• 利用内核:容器共享相同的内核,因此如果攻击者能够访问主机操作系统,他们就可以访问主机上运行的所有应用程序。
前进之路:最新动态
在基础设施技术的各种发展中,总部位于纽约的创业公司Hyper正在努力提供VM和容器领域的最佳产品。使用HyperContainers(如Hyper调用它),我们看到两者之间的融合。它提供了容器的速度和灵活性,即能够在不到一秒的时间内以最小的资源占用空间启动实例。同时,它提供VM的安全性和隔离性,即通过硬件强制隔离来防止容器的共享内核问题。
本文来自云栖社区合作伙伴"SDNLAB",原文链接:https://yq.aliyun.com/articles/625871?spm=a2c4e.11153940.bloghomeflow.217.204a291arW997Y