NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

边缘上的容器化

  • 2021-11-26
  • 本文字数:2444 字

    阅读完需:约 8 分钟

边缘上的容器化

像 Docker 这样的应用容器是云原生增长的主要推动力。不过,尽管云原生开发范式已被证明是非常流行的,但是由于应用容器需要大量的计算资源,将云原生基础设施扩展到大型数据中心之外就变得困难了。


比如,Docker 不支持实时操作系统(real-time operating systems,RTOS),而只支持 POSIX 系统。在像智能工厂和智能汽车这样的边缘网络和设备上,行业生态系统和供应商网络决定了应用必须从多个独立的供应商“组合”。举例来说,一个典型的电动汽车有 100 多个厂商为汽车的不同部分编写软件组件。为汽车 OEM 提供一个安全、高效、实时的运行环境,对各供应商和厂商进行软件集成具有重要意义。现在已经有了一些在边缘实时操作系统上支持应用容器的尝试。


VxWorks 是商用实时操作系统,应用于飞机和航天器等关键任务系统。VxWorks 容器是最近的一项倡议(2021 年),它支持在 VxWorks 实时操作系统上遵循 OCI 的轻量级容器。但是,Docker 方法并不适用于边缘的实时操作系统。


从根本上说,Docker 并不具有实时性,因为它假定了很多底层操作系统服务的可用性。对于实时操作系统来说,一个更好的运行时方式是高级字节码虚拟机。这样的虚拟机比 Docker 更轻、更快。它们提供了基于功能的安全沙箱,几乎不考虑底层操作系统服务,同时,在前端支持多种编程语言。WebAssembly 有着广泛的行业支持和轻量级设计,这似乎就是复杂边缘应用的完美虚拟机运行时间。


WebAssembly 的另一个有趣之处在于 WebAssembly 程序的正确性通常可以与 seL4 本身一样得到正式验证。因此,它适用于关键人物系统,如汽车操作系统。

WasmEdge 和 seL4

seL4 操作系统是一种经过正式验证的高安全性和实时性的微内核操作系统。它目前越来越多地用于自动驾驶汽车和无人机,在这些地方,安全性和实时性非常重要。seL4 操作系统是一种不遵循 POSIX 的微内核,因此对于运行类似 Docker 的容器尤其具有挑战性。而 WebAssembly 则可以对操作系统进行很大程度的抽象化,并向开发者提供一套统一的编程语言和 SDK。


WasmEdge Runtime 是 CNCF 托管的高性能的开源 WebAssembly 运行时。将其作为 微服务无服务器函数插件的运行时使用在云原生基础设施中。除标准的 WebAssembly 规范外,WasmEdge 支持扩展 API,这些 API 与云原生用例相关,比如网络套接字基于 TensorFlow 的推理、数据库存储等等。WasmEdge 支持 Rust 和 JavaScript 作为前端语言,可以作为插件或者嵌入式函数嵌入到 RustGo、Python 和 Node.js 主机应用中。


与“边缘容器”用例最相关的是,WasmEdge 是一种兼容 OCI 的运行时,Docker 工具和 Kubernetes 可以对其进行管理和协调。在这项工作中,我们构建了一个 WebAssembly 管理代理,用于 seL4 和 WasmEdge。可以让 WebAssembly 字节码应用在 seL4 实时操作系统上部署和执行。


官方说法是,seL4 只支持用 c/c + + 编写的应用程序。有了 WasmEdge Runtime,开发者现在可以使用任何 WebAssembly 语言来编写 seL4 实时操作系统应用程序,包括 Rust、 Swift、 AssemblyScript 和 JavaScript。这可能是 seL4 开发者体验的一个重大改进。

总体设计

seL4 微内核可充当虚拟机监控器(Hyperviser)。它可以在相同的硬件上并行启动 seL4 实时操作系统和一个 Linux 操作系统(称为客户操作系统)。Linux 客户操作系统具有完整的文件系统、网络、用户账户、shell 和 CLI 的功能和工具,但是它并非实时的。seL4 方面是实时的,但它是无头(headless)的。我们的方法是在客户 Linux 中运行 WasmEdge 代理。在客户 Linux 中,我们可以上传并存储 WasmEdge 字节码文件,然后使用代理热部署并使用安装在 seL4 中的 WasmEdge 运行器来执行字节码。该架构如下所示:


这种代理和运行器架构允许我们将客户 Linux 的易用性与 seL4 的健壮性、安全性和实时性能相结合。


这种设计提出了一种有趣的可能性。在 seL4 上,我们也许会运行一个成熟的 Kubernetes pod,在客户操作系统中管理和编排 WasmEdge 应用。这是该团队积极研究的一个领域。

示例 WebAssembly 应用

WasmEdge 可以在 seL4 上运行任何 WebAssembly 字节码应用程序。本演示中的 WebAssembly 应用程序样本是由 C 和 Rust 源代码编译而成。


  • nbody-c.wasm 是一个用 C 语言对 N 体问题进行数值逼近的程序。然后,它从 C 语言编译成 WebAssembly 字节码。

  • hello.wasm 是一个 Rust 程序,用于返回字符串到控制台。

修补用于 wasme/dge 运行器的 seL4

seL4 中的标准库不支持 WasmEdge 运行器开箱即用。为了增加、开启或更新一些重要特性,我们需要对这些库进行修补。使用这些补丁构建了定制的 seL4 版本。


模拟器演示

构建脚本 实现了构建 seL4 发行版的自动化,其中包括补丁库、 WasmEdge 运行程序、一个客户 Linux 操作系统(Ubuntu 20.04)和 WasmEdge 代理(称为 WasmEdge_emit)。


构建脚本要求 Ubuntu 20.04 系统安装有开发者工具。点击此处可以看到这个系统需要的 apt 软件包的完整列表。


完成了定制的 seL4 发行版之后,我们就可以在 QEMU 模拟器中运行它了。在 seL4 中,登录到客户 Linux 操作系统的命令 shell,上传并保存 WebAssembly 字节码文件,然后运行 wasmedge_emit 来部署并运行这些 WebAssembly 文件。该演示会带你走完全程。你可以观看视频,了解它的操作!GitHub Action 日志显示了成功构建任务的控制台输出,而构件包含了构建结果。你只需下载构建到你自己的 Ubuntu 20.04 机器上的构件,然后启动模拟器,运行 seL4 上的 WebAssembly 程序。

未来计划

本文演示了如何使用模拟器来管理和执行 seL4 上的应用。下一步是在真实的硬件上运行 WasmEdge 应用程序。WasmEdge 的主要特点之一是可扩展性。从共享的本地库向 WasmEdge 添加主机函数 API 很容易,这样 WasmEdge WebAssembly 字节码程序就可以访问硬件,如 GPIO 引脚、摄像头、USB 连接器、I/O 板和 GPU。请继续关注 seL4 上 WasmEdge 的更多用例演示!


原文链接:


https://www.cncf.io/blog/2021/11/11/containerization-on-the-edge/

公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2021-11-26 09:521885

评论 1 条评论

发布
用户头像
这一股浓浓的机翻味
2021-12-29 18:43
回复
没有更多了
发现更多内容

计算机操作系统基础(十五)---使用fork系统调用创建进程

书旅

php laravel 操作系统 进程 线程’

架构师训练营第五章总结

吴吴

阿里巴巴、百度、美团都在用的 Spring Cloud 微服务架构

java通天架构哪吒

Spring Cloud SpringCloud

UC Token即将强势登陆

Geek_116789

第五周总结

秦宝齐

课程作业

架构师训练营第五周作业

王铭铭

架构师训练营第五周总结

sunnywhy

架构师训练营 第五周 基于虚拟节点的一致性Hash算法作业

且听且吟

极客大学架构师训练营

架构师训练营第5周作业

时来运转

IOTA架构实战:大数据即时多维查询引擎构建【视频】

易观大数据

大数据 架构模式 查询引擎 数据算法

第五周总结

Acker飏

极客大学架构师训练营

分布式技术总结

LEAF

Intellij IDEA必备插件,提高效率的“七种武器”

码农神说

面试 IDEA idea插件

分布式缓存 - 第五周总结

孙志平

第5周总结

娄江国

极客大学架构师训练营

架构师训练营第五章作业

吴吴

「架构师训练营」Week5作业

Frank Zeng

MQ 核心概念

陈皮

架构师训练营第5周总结

时来运转

负载均衡(Load Balance)

陈皮

架构师训练营第五周总结

王铭铭

基于领域驱动设计的业务中台架构设计

冯文辉

中台 业务中台 领域驱动设计 DDD

架构师训练营Week 05 学习总结

Frank Zeng

架构师训练营第 5 周作业——一致性Hash算法

在野

极客大学架构师训练营

Week 05 学习总结

卧石漾溪

极客大学架构师训练营

【架构师训练营】第五周总结

Mr.hou

极客大学架构师训练营

互联网中的缓存

陈皮

陈芳,高考之后我要学计算机专业,将来干IT发财了,我就娶你!

张小方

程序员 面试 薪资 毕业

【架构师训练营】第五周作业

Mr.hou

极客大学架构师训练营

「架构师训练营」第五周作业

旭东(Frank)

算法 极客大学架构师训练营 哈希 一致性哈希

架构感悟5-算法之美

旭东(Frank)

架构 算法 感悟 极客大学架构师训练营

边缘上的容器化_服务革新_Second State、FutureWei_InfoQ精选文章