写点什么

Krustlet:使用 Rust 开发的 kubelet,用于运行 WASM 工作负载

  • 2020-07-14
  • 本文字数:1475 字

    阅读完需:约 5 分钟

Krustlet:使用Rust开发的kubelet,用于运行WASM工作负载

AI 大模型超全落地场景&金融应用实践,8 月 16 - 19 日 FCon x AICon 大会联诀来袭、干货翻倍!

Deis Labs发布了Krustlet,一个用 Rust 开发的开源 Kubernetes kubelet,用于在 Kubernetes 中运行 WebAssembly 工作负载。在某种程度上,Krustlet 的初始版本是一种概念验证,因为它还不支持 Pod 事件或Init容器等特性。应用程序必须实现WebAssembly系统接口(WASI),因为 Krustlet 只支持 WebAssembly 容器。


WebAssembly,也称为 WASM,是一种二进制格式,用于栈式虚拟机。它对执行速度进行了优化,占用空间小,也是一种开放的 Web 标准。WASM 以其在浏览器方面的应用(如微软的Blazor框架)而闻名,不过 Mozilla 最近推出了WASI,这样就可以让编译器以这个接口作为编译目标,而不是操作系统。在服务器端支持 WASM 为用户提供了另一种 Docker 之外的容器运行时选择,而这就是 Krustlet 所提供的。


此外,Lin Clark 在Mozilla博客上解释说,从安全的角度来看,“如果调用一个需要访问文件的函数,必须传入一个带有权限限制的文件描述符”。WASI 可用于构建只有显式权限的沙箱环境,从而提高了容器的安全性。



图片来源: Standardizing WASI: A system interface to run WebAssembly outside the web.


Krustlet 的初始版本支持基本的Pod生命周期、用于露出 Pod 或容器字段的API、环境变量和宿主卷、secrets 或 configMaps。不过,Kurstlet 还没有准备好投入生产使用。例如,Krustlet 不支持 ARM 处理器、Init 容器、云提供商数据卷、Pod 事件、Pod Condition,并且只支持部分在 Windows 上运行。此外,Krustlet 通过提供程序与给定的运行时发生交互,支持waSCCWASI(支持的 WASM运行时在不断增加)。


实际上,Kubelet 是使用 Rust 实现的一种 Kubernetes kubelet。它监听 Kubernetes API,以获取新的 Pod 请求(在集群中运行基于 WASI 的应用程序),只要请求事件与节点选择器是匹配的。因此,要在 Krustlet 节点上运行应用程序,用户可以使用 taints、tolerations 和节点选择器。此外,用户必须为应用程序生成 WebAssembly 二进制文件。如果应用程序是用 C 语言开发的,就用clang,如果应用程序是用 Rust 开发的,就用cargo。然后,用户必须使用wasm-to-oci打包,并将容器镜像推送到容器注册中心。要部署应用程序,用户需要定义一个 Kubernetes 清单,其中包含 tolerations,如下所示:


apiVersion: v1kind: Podmetadata:  name: wasm-appspec:  containers:    - name: wasm-app      image: registry/wasm-app:v1.0.0  tolerations:    - key: "krustlet/arch"      operator: "Equal"      value: "wasm32-wasi"      effect: "NoExecute"
复制代码


一个构建、推送和部署应用程序到 Kurstlet 节点的典型工作流如下:


clang main.c -o demo.wasmwasm-to-oci push demo.wasm registry/wasm-app:v1.0.0kubectl apply -f wasm-app.yaml
复制代码


对于想要在现有 Kubernetes 集群中使用 Krustlet 的人,该项目为他们提供了指南,包括如何在不同集群部署(如 Azure Kubernetes Service(AKS)、Amazon Elastic Kubernetes Service(EKS)、MicroK8s、Minikube 等)中启动工作节点。


Krustlet 的开发非常活跃,每个版本都有一个完整的问题列表,他们计划接下来解决这些问题。例如,Krustlet 的最新版本是v0.3.0,在这个版本中,用户可以看到有哪些新特性、接下来会有什么以及他们计划修复的已知问题列表。对于即将发布的版本,Krustlet 正在努力为网络、云存储卷提供程序和一些 Pod Condition 等提供支持。


如果社区开发者对学习或参与贡献感兴趣,可以在GitHub上发布问题,或者每周一加入Zoom每周电话会议


原文链接


Krustlet: a kubelet Written in Rust to Run WebAssembly Workloads in Kubernetes


2020-07-14 08:003636

评论

发布
暂无评论
发现更多内容

10 张图打开 CPU 缓存一致性的大门

小林coding

缓存 cpu 操作系统 计算机

30 岁的码农人生 ——人生至暗时,你依然能窥见光明

cxuan

程序员 程序人生 感悟

为你总结了N个真实线上故障,从容应对面试官!

AI乔治

Java 架构 GC

Vidyo的技术特点都有哪些?

dwqcmo

音视频 集成架构 解决方案 智能硬件

如何在微信公众号图文中插入外链

Ceelog

微信公众号

32个问题,学习Java虚拟机的运行时数据区

AI乔治

Java 架构 JVM JVM虚拟机原理

实用!8个 chrome插件玩转GitHub,单个文件下载小意思

程序员小富

GitHub

什么是动态代理

Rayjun

Java 动态代理

谈谈贪官污吏

空山

记一次Jvm参数调优实战

AI乔治

Java 架构 JVM 编程思维 jvm调优

它可能是分布式系统中最重要的枢纽

架构师修行之路

分布式 微服务 注册

来自阿里面试官的Java面试连珠炮,让你自由发挥你能撑到哪一步?

Java架构之路

Java 程序员 架构 面试 编程语言

英特尔老矣,尚能“转”否?

脑极体

AES加密模式

Mars

AES

谷歌朝南,华为朝北

脑极体

LeetCode题解:47. 全排列 II,回溯,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

中国银行前行长李礼辉:区块链技术优势与产业前景

CECBC

区块链 数字货币

阿里巴巴专属著作超赞,就是名字起得有点狂“成神之路”???

Java架构师迁哥

分布式系统使用网关到底是好还是坏?

架构师修行之路

分布式 微服务 网关

系统从初期到支撑亿级流量,都经历了哪些架构的变迁?

冰河

分布式 微服务 系统架构 SOA 垂直架构

区块链助力跨省、零材料办理 成都武侯打造“中国政务服务第一链”

CECBC

区块链

一文读懂GaussDB(openGauss) 的六大关键技术特性

华为云开发者联盟

数据库 数据 存储

即构SDK10月迭代:新增多款语音音效、外部采集码流控制及Android SDK 最低支持操作系统版本调整

ZEGO即构

android RTC

你有时间吗?

池建强

时间

可视化数据科学中的概率分布以帮你更好地理解各种分布

计算机与AI

学习 数据科学

今天你的idea崩了吗?分享6种“白嫖”正版idea的途径,真香定律

小Q

学习 架构 面试 开发 IntelliJ IDEA

新基建下区块链基础设施建设

CECBC

区块链

如何生成 Flink 作业的交互式火焰图?

Apache Flink

flink

求职时这样回答问题你就输了!来自IT类面试官视角的深度解读

华为云开发者联盟

面试 软件开发

【JSRC小课堂】Web安全专题(一)认证缺失和认证缺陷漏洞

京东科技开发者

WEB安全

算法学习1-- 数组常见问题

菜鸟小sailor 🐕

算法和数据结构

Krustlet:使用Rust开发的kubelet,用于运行WASM工作负载_DevOps & 平台工程_Christian Melendez_InfoQ精选文章