10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

边缘上的容器化

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

2021-11-26 09:522678

评论 1 条评论

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

AskTable 集成 Databend:结构化数据的 AI 查询新体验

Databend

NFT 的叙事正在改变:看懂 NFT 的进化路径

NFT Research

NFT NFT\ web3、

HarmonyOS5云服务技术分享--账号登录文章整理

莓创技术

HarmonyOS5云服务技术分享--账号关联开发指南

莓创技术

AI 极客低代码平台快速上手 -- 设计领域类

华哥的全栈次元舱

Java Python vuetify 纯血鸿蒙 AIGC低代码平台

火山引擎发布豆包·语音播客模型,秒级生成“真人对话”播客

新消费日报

Sentieon文献解读-使用 Sentieon ctDNA 分析管道高精度、高效地处理 UMI 数据集

INSVAST

umi 肿瘤测序 Sentieon 基因变异检测 生信分析服务

HarmonyOS5云服务技术分享--匿名登录功能指南

莓创技术

详解鸿蒙仓颉开发语言中的日志打印问题

幽蓝计划

快来认领你的开源任务!开源之夏 - 可观测项目发布!

阿里巴巴云原生

阿里云 云原生 可观测

数据湖和数据仓库的区别

镜舟科技

数据仓库 数据湖 数据存储 大数据分析 湖仓一体

HarmonyOS5云服务技术分享--登录邮件功能整理

莓创技术

HarmonyOS5云服务技术分享--ArkTS开发函数

莓创技术

从运维告警到业务决策:可观测性正在重新定义企业数据基础设施

观测云

可观测性

HarmonyOS5云服务技术分享--手机号登录教程

莓创技术

HarmonyOS5云服务技术分享--退出登录文档问题

莓创技术

HarmonyOS5云服务技术分享--ArkTS开发Node环境

莓创技术

信创堡垒机助力政企IT系统实现IT运维国产化

行云管家

数字化 信创 堡垒机

乘云数字荣获“鑫智奖·2025专家推荐TOP10优秀解决方案”奖项

乘云数字DataBuff

数字化转型 故障定位 金融数字化 业务监控

HarmonyOS5云服务技术分享--自有账号对接AGC认证

莓创技术

使用 LangChain + Higress + Elasticsearch 构建 RAG 应用

阿里巴巴云原生

阿里云 云原生 Higress

用户反馈如何帮助企业实现降本增效?

Feedalyze

效率工具 产品经理 用户体验 产品运营 用户反馈

游戏盾功能与技术解析

网络安全服务

游戏开发 服务器 手游 DDoS 攻击 游戏盾

高敏感数据行业怎么定义?需要用到堡垒机吗?

行云管家

网络安全 堡垒机 高敏感数据

MRP都搞不好,何谈生产管理过关!

积木链小链

数字化转型 智能制造 生产管理

反而是一个一个的客户教会了我如何接单

程序员郭顺发

AI极客低代码平台快速上手--创建应用

华哥的全栈次元舱

Java Python vuetify 纯血鸿蒙 AIGC低代码平台

JManus - 面向 Java 开发者的开源通用智能体

阿里巴巴云原生

spring 阿里云 云原生

Flink CDC 3.4 发布, 优化高频 DDL 处理,支持 Batch 模式,新增 Iceberg 支持

Apache Flink

大数据 flink Flink CDC

Solana 上的Vibe Coding(氛围式编程)正崛起

PowerVerse

AI web3 DePIN

HarmonyOS5云服务技术分享--云函数创建配置指南

莓创技术

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