写点什么

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

评论

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

日志搜索与取证分析工具

运维有小邓

日志分析 日志监控 日志管理 日志审计

YashanDB数据库安全机制全解析,保障企业数据无忧

数据库砖家

YashanDB数据库安全加固的五大关键策略

数据库砖家

AI 语音转贴纸,儿童打印机 Stickerbox 融资 700 万美元;Spatial AI 发布第一人称真实世界数据集丨日报

RTE开发者社区

YashanDB数据库安全策略及其企业级防护机制详解

数据库砖家

多模一库——架构简化,能力翻倍

KaiwuDB

数据库 KaiwuDB 分布式多模数据库

广汽昊铂首获时速120公里L3高速测试牌照,高阶智驾迈入实用化新阶段

科技汇

普通人如何免费使用Gemini3-Pro大模型?

王磊

AI Compass前沿速览:Gemini 3、Grok 4.1、GPT-5.1、千问、Lumine-3D开世界AI智能体

汀丶人工智能

YashanDB数据库安全漏洞防护与最佳实践

数据库砖家

EMR Serverless Stella 1.0 技术分享:StarRocks企业级版本内核重大突破

阿里云大数据AI技术

阿里云 OLAP LakeHouse StarRocks Stella

有哪些好用的优化PPT的AI?5个主流工具盘点

职场工具箱

效率 PPT 办公软件 AI工具 AI生成PPT

YashanDB数据导入性能优化的实用技巧

数据库砖家

YashanDB数据库安全防护的十大措施解析

数据库砖家

YashanDB数据库安全漏洞防范的核心措施

数据库砖家

在 RTE2025 大会,我看到了 AI 语音如何让机器学会「与人相处」丨社区来稿

RTE开发者社区

YashanDB数据导入导出高效实践技巧

数据库砖家

不只做语音,ElevenLabs 推出图像和视频生成平台;博通推出语音 AI 芯片,实现端侧 TTS 和实时翻译丨日报

RTE开发者社区

市场份额超40%,百度智能云位居中国全栈AI云市场第一

新消费日报

YashanDB数据加密技术及其应用场景分析

数据库砖家

YashanDB数据库安全审计的高级实践指南

数据库砖家

为PDP-11/44安装84MB硬盘的复古计算实践

qife122

PDP-11 硬盘安装

腾讯云工具指南:25腾讯全球数字生态大会特辑

ToB行业头条

告别查询超时!SLS物化视图的核心原理与使用场景,开发者必看!

阿里巴巴云原生

阿里云 云原生 日志服务

YashanDB数据库安全机制的核心保障分析

数据库砖家

YashanDB数据库安全机制详解及企业实用指南

数据库砖家

石油天然气行业OT/ICS安全:守护全球经济命脉的关键防线

qife122

工业控制系统 关键基础设施

用最纯粹的白话,解析 AI Memory

老纪的技术唠嗑局

agent memory #OceanBase

YashanDB数据访问控制策略与权限管理实战

数据库砖家

YashanDB数据库安全策略及关键防护措施指南

数据库砖家

YashanDB数据库安全合规策略与风险管理实务

数据库砖家

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