写点什么

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

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

    阅读完需:约 5 分钟

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

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:004045

评论

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

KubeCon China 2025 | 与KubeEdge畅聊毕业经验与创新未来

华为云原生团队

云计算 容器 云原生

鸿蒙 NEXT 应用签名机制有何变化?如何生成并配置签名证书?

巴库一郎

鸿蒙 开发工具 HarmonyOS HarmonyOS NEXT 实践分享

三类不同身份的“开发者”,在昇腾CANN的土壤上种下了繁荣之花

Alter

打造多模态交互新范式|彩讯股份中标2025年中国移动和留言平台AI智能体研发项目

彩讯股份300634

AI时代的“数据之困”,什么是AI-Ready Data

MatrixOrigin

数据库 HTAP AI Agents

龙蜥开发者说:我的龙蜥开源之旅 | 第 32 期

OpenAnolis小助手

龙蜥社区 龙蜥开发者说

秒懂 AI Agent:落地局限与产品解析

Techinsight

智能体 agent 智能体评估

低代码与AI的医药行业适配性实践:从技术融合到数智化转型的深度解析

量贩潮汐·WholesaleTide

低代码

英特尔推进技术创新,以规模更大的封装满足AI应用需求

E科讯

技术视角:AI Agent 落地局限与产品实现

Techinsight

智能体 Agents AI 智能体 智能体评估

立足数字人文,深化历史叙事|科学智能赋能人文社科领域研究

ModelWhale

科学智能 人文社科 山东大学 AI4S

西南会议 | 2025 Altair 区域技术交流会即将在成都盛大举行!

Altair RapidMiner

人工智能 AI HPC 数字孪生 CAE

京东高薪“抢人”,刘强东杀向携程腹地

趣解商业

京东 携程 酒旅

不是做大模型,而是落在执行闭环,酷开智能体思路浮出水面

业界

五分钟搭建属于你的AI助手:Ollama+DeepSeek+AnythingLLM深度整合教程

量贩潮汐·WholesaleTide

人工智能 DeepSeek

通义灵码带你玩转 MCP 最佳实践(合辑,持续更新中)

阿里云云效

通义灵码 MCP

你了解Java线程池原理吗?

不在线第一只蜗牛

Java 算法

TortoiseSVN使用-权限配置

刘大猫

人工智能 svn 权限控制 tortoiseSVN 权限配置

揭秘:AI Agent落地难在哪,产品又咋样?

Techinsight

智能体 AI 智能体

华为仓颉语言初识:并发编程之同步机制(下)

IT小码哥

鸿蒙 HarmonyOS HarmonyOS NEXT

NJet Portal 应用门户管理介绍

通明湖

扎根业务,这个618商业智能体先跑起来

脑极体

AI

全议程硬核公布!龙蜥邀您共同探索面向泛在智算场景的操作系统技术

OpenAnolis小助手

AI 操作系统 龙蜥社区 龙蜥meetup

Dify实战案例:MySQL查询助手!嘎嘎好用

王磊

商品中心—B端建品和C端缓存的技术文档(二)

电子尖叫食人鱼

架构

通义灵码带你玩转 MCP 最佳实践(合辑,持续更新中)

阿里巴巴云原生

通义灵码 MCP

ETL中图表统计分析模版组件使用

谷云科技RestCloud

数据处理 ETL 数据集成 图表统计

一体系数据平台的进化:基于阿里云 EMR Serverless Spark的持续演进

阿里云大数据AI技术

云计算 Serverless 数据分析 数据处理 数据库 大数据

iOS 26 新增实时翻译:基于端侧并向第三方开放接口;Neuralink 和 Grok 使渐冻症患者重新「发声」丨日报

声网

2025年Java面试行情变了?技术不达标,如何快速逆袭拿高薪?

程序员高级码农

Java Java 面试 Java 面试题

2025 深度洞察:AI Agent 落地的短板有哪些

Techinsight

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