AICon上海|与字节、阿里、腾讯等企业共同探索Agent 时代的落地应用 了解详情
写点什么

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

评论

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

SD-WAN如何解决企业跨国组网难题

Ogcloud

SD-WAN SD-WAN组网 SD-WAN服务商 跨国组网 SD-WAN国际专线

“融为本,数为源,智为力”开启财务数智化转型华章

用友智能财务

财务 企业数智化 企业数智化转型

BTC矿工转向AI数据:普通人如何低成本布局AI赛道

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 NFT开发 公链开发

工作上个的好搭子——通义灵码测评分享

穿过生命散发芬芳

通义灵码

【论文速读】| RobustKV:通过键值对驱逐防御大语言模型免受越狱攻击

云起无垠

开源可视化工具对比:JimuReport VS DataEase

JEECG低代码

数据可视化 报表 数据大屏 报表工具 仪表盘设计器

我用豆包MarsCode IDE 做了一个 CSS 权重小组件

Trae

CSS 程序员 AI

快递鸟电子面单批量打印API接口Demo免费下载

快递鸟

快递物流 电子面单

淘宝店铺商品全览:揭秘淘宝店铺所有商品API接口的无限商机

代码忍者

API 接口 pinduoduo API

DriveDx for mac(mac磁盘健康检测和监控工具) v1.12.1激活版

小玖_苹果Mac软件

PingCAP 跻身 Forrester Wave 报告,成为唯一连续两次上榜的中国数据库厂商

先锋IT

【JIT/极态云】技术文档--应用变量

武汉万云网络科技有限公司

低代码

软件系统国产化以后,应用是否需要0-1开发?

FinFish

小程序容器 小程序容器技术 纯血鸿蒙 信创操作系统

【JIT/极态云】技术文档-- Word模版

武汉万云网络科技有限公司

低代码

解锁亚马逊购物新境界:深度探索API接口——从商品详情到评论分析,再到关键字搜索实战指南

代码忍者

API 接口 pinduoduo API

Navicat Premium 15 for Mac(数据库开发工具) v15.0.36中文激活版

小玖_苹果Mac软件

淘宝关键词搜罗神器:深入探索淘宝商品搜索API接口

代码忍者

API 接口 pinduoduo API

前端页面测试如何定位漏测代码

Hi-CodeCaptain

软件质量 测试覆盖率 精准测试 前端代码 前端覆盖率

强到连何同学都抄袭的ASCII-generator是什么鬼

安全乐谷

Python OpenCV 开源、 image-to-text image-to-image

BetterDisplay Pro Mac(显示器管理工具) v2.0.11激活版

小玖_苹果Mac软件

制造业生产遇到“瓶颈”,MES系统帮您重新赋能!

积木链小链

制造业 mes

使用 NGINX 和 NGINX Plus 实现负载均衡(第 2 部分)

NGINX开源社区

负载均衡 读书笔记

淘宝京东商品详情页接口

tbapi

淘宝API接口 京东API接口 淘宝商品详情接口 京东商品详情接口

AE 3D粒子系统插件:Trapcode Particular for Mac 激活版

你的猪会飞吗

mac软件下载 Mac破解软件

DApp、链游与交易所的盈利点解析:如何在区块链生态中挖掘财富?

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

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