【锁定直播】字节、华为云、阿里云等技术专家讨论如何将大模型接入 AIOps 解决实际问题,戳>>> 了解详情
写点什么

边缘上的容器化

  • 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/

公众号推荐:

2024 年 1 月,InfoQ 研究中心重磅发布《大语言模型综合能力测评报告 2024》,揭示了 10 个大模型在语义理解、文学创作、知识问答等领域的卓越表现。ChatGPT-4、文心一言等领先模型在编程、逻辑推理等方面展现出惊人的进步,预示着大模型将在 2024 年迎来更广泛的应用和创新。关注公众号「AI 前线」,回复「大模型报告」免费获取电子版研究报告。

AI 前线公众号
2021-11-26 09:521873

评论 1 条评论

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

网络攻防学习笔记 Day117

穿过生命散发芬芳

网络安全 8月日更

我的微信业务架构图

白开水又一杯

#架构实战营

我的学生管理系统

白开水又一杯

#架构实战营

02. 到底什么是人工智能

数据与智能

人工智能

太厉害了,终于有人把TCP-IP协议整合成864页学习笔记了

Java~~~

Java 架构 面试 TCP 网络

学生管理系统架构设计

晓波

架构实战营

让 KAS 给 GitOps 插上腾飞的翅膀

极狐GitLab

Kubernetes 极狐GitLabs

架构实战打怪升级day01

yphust

Go- 字符串、切片和数组的使用

HelloBug

数组 字符串 Go 语言 切片

关于开发视图

编程三昧

8月日更 开发视图

架构实战之微信业务架构|学生管理系统

Nico

架构实战营

阿里P8整理的《百亿级并发系统设计》实战教程,实在是太香了

Java~~~

Java 架构 面试 多线程 高并发

你最想了解的红队实战攻防技术,来了

网络安全学海

黑客 网络安全 信息安全 WEB安全 安全漏洞

微信业务架构和学生管理系统架构设计

王家辉

架构实战营模块一作业-初识架构

娜酱

#架构实战营

微信业务架构&毕设学生管理架构选择

Sky

架构实战营

Ubuntu Server 20.04 搭建安装Kubernetes

玏佾

Kubernetes k8s文档 k8s资源 #k8s

美团年货-2020年(记录)

春秋易简

Cron调度任务入门

devpoint

crontab 8月日更

微信业务架构图&毕业设计之学生管理系统(model1)

消失的子弹

微信 架构图

微信业务架构图&学生管理系统设计思路

刘琦Logan

Vue进阶(七十):了解 webpack 的 hash、chunkhash、contenthash

No Silver Bullet

Vue 8月日更

Vue进阶(七十一):webpack 插件实现自动抽取 css 主题色样式一键切换

No Silver Bullet

Vue 8月日更 主题色

Go语言,深入了解 select 实现原理

微客鸟窝

Go 语言 8月日更

游戏开发者的通关之旅,华为AGC for Games带来了什么?

脑极体

吃透这份Github点赞120k的Spring全家桶笔记Offer拿到手软

Java~~~

Java spring 架构 面试 Spring Cloud

【架构实战营作业】模块一:微信业务架构图&学生管理系统

聆息

大专的我狂刷29天“阿里内部面试笔记”最终直接斩获十七个Offer

Java~~~

Java 架构 面试 JVM 多线程

学习-1

4anonymous

读书笔记 -《数据密集型应用系统设计》-索引

KayTin

四面字节跳动Java研发岗,最终拿下Offer,只有努力,方能成功

Java~~~

Java 架构 面试 微服务 架构师

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