写点什么

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

评论

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

3D点云数据集在3D数字化技术中的应用

数据堂

浪潮海岳低代码平台inBuilder开源社区版特性推荐系列-第一期

inBuilder低代码平台

开源 低代码 实操

【分布式技术专题】「OSS中间件系列」Minio的文件服务的存储模型及整合SpringBoot客户端访问的实战指南

码界西柚

分布式 OSS Minio 三周年连更 SpringBoot-Starter

如何为 Databend 添加新的系统表

Databend

软件测试 | 程序报错不要慌

测吧(北京)科技有限公司

测试

软件测试 | 接口测试工具的不足

测吧(北京)科技有限公司

测试

IPP SWAP孵化器LP算力系统开发技术

薇電13242772558

区块链

人工智能(AI)行业如此烧钱,离真正商业化还有多远,如果不商业化还能走多远? | 社区征文

迷彩

人工智能 AIGC 生成式AI 三周年征文 三周年连更

【转载】亚信科技亮相2023移动云大会,“数智云网”助力行业转型发展

亚信AntDB数据库

AntDB AntDB数据库

推开“任意门”,华为全屋智能正在实现一代科幻迷的童年梦想

脑极体

人工智能 全屋智能

Kubernetes Gateway API 深入解读和落地指南

北京好雨科技有限公司

Kubernetes 云原生 rainbond 企业号 5 月 PK 榜 Gateway API

推荐6个我经常逛的“小网站”,嘿嘿嘿!!!

引迈信息

程序员 低代码 摸鱼 JNPF 文案

软件测试 | Django开发环境

测吧(北京)科技有限公司

测试

YApi自动生成接口文档

Liam

Postman 接口文档 API YAPI 文档生成

加快推进数智化转型,引领盐行业高质量发展

用友BIP

Flink API的4个层次

阿泽🧸

flink 三周年连更

MobPush 厂商通道SDK集成指南

MobTech袤博科技

数智化转型再加速,低代码开发助力企业转型

加入高科技仿生人

低代码 数智化 数字转型 数智转型

John Schulman:强化学习与真实性,通往TruthGPT之路

OneFlow

软件测试 | Requests库

测吧(北京)科技有限公司

测试

ebpf-linux 安全“双刃剑”

统信软件

Linux Kenel

蚂蚁安全科技 Nydus 与 Dragonfly 镜像加速实践 | 龙蜥技术

OpenAnolis小助手

开源 dragonfly 操作系统 龙蜥技术 镜像加速

ChatGPT+私有数据=智能知识库+个性化AI

BeeWorks

什么是人工智能领域模型的 temperature 参数?

汪子熙

人工智能 机器学习 深度学习 三周年连更

数据库中的 Schema 变更实现

KaiwuDB

线上直播 KaiwuDB Schema 锁表

iOS MachineLearning 系列(11)—— 自然语言之词句相似性分析

珲少

大企业必读!五大纳税申报难题解析

用友BIP

IP 地址是如何被创建和管理的?

海拥(haiyong.site)

三周年连更

聊点技术 | 全新功能,让Bonree ONE变得更强

博睿数据

可观测性 智能运维 博睿数据 Bonree ONE ONE有引力

PostgreSQL JDBC 开发指导

攻城狮

postgresql JDBC 驱动程序

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