如何利用Lambda新功能极简地构造无服务器 Web 应用?5 月 11 日,告诉你答案~ 了解详情
写点什么

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

  • 2020 年 7 月 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 年 7 月 14 日 08:002825

评论

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

“半监督”、“自监督”怎么用?| 算法深度剖析与实战分享

网易易盾技术团队

AI 算法 算法实践 实践案例 深度半监督

浅谈B端产品的表单元素设计

LigaAI

产品经理 UI 产品设计与思考

Java的函数式接口

中原银行

Java 函数式接口 中原银行

网络抓包实战03——TCP/IP协议栈:数据包如何穿越各层协议

青春不可负,生活不可欺

搭建企业私有GIT服务

IT视界

git

架构实战营 - 模块 6- 作业

carl

Redis入门五:主从复制

打工人!

redis 主从复制 6月日更

强化学习 | COMA

行者AI

人工智能

区块链如何赋能智慧城市

CECBC

从零开始学习3D可视化之物体选择

森友小锘

大前端 可视化 程序媛 3D可视化 数字孪生

从渗透测试小白到网络安全大佬的成长之路

学神来啦

Linux 运维 网络安全 渗透测试

网络抓包实战05——深入浅出连接关闭

青春不可负,生活不可欺

指挥中心情指勤一体化解决方案,河北公安情指勤一体化建设

13823153121

clickhouse 通过 SummingMergeTree优化查询

张sir

Clickhouse

接口全面重构TypeScript ,让uni-app 具备出色的基础音视频能力

ZEGO即构

typescript uni-app 音视频

虚拟货币监管再加码:央行约谈部分金融机构 要求切断支付链路

CECBC

信息安全与网络安全的关系

网络安全学海

程序员 网络安全 安全 信息安全 渗透测试

【MindSpore有奖活动】资讯内容宝藏多,编译安装试一波!

Geek_6cdeb6

算法有救了!GitHub上神仙项目手把手带你刷算法,Star数已破110k

Java架构师迁哥

鉴释×CSDN丨国内外操作系统生态差异在哪?

鉴释

操作系统

🌏【架构师指南】分布式技术知识点总结(中)

浩宇天尚

分布式架构 架构师技能 分布式技术 6月日更

新华三商用终端新品全系入市,重塑办公极致体验

科技热闻

ES6 迭代器简述

编程三昧

JavaScript 大前端 ES6 迭代器

5分钟速读之Rust权威指南(二十八)RefCell<T>

码生笔谈

rust

一文带你了解什么是HTTP协议

网络安全学海

网络安全 安全 信息安全 HTTP 渗透测试

微服务到底是什么?spring cloud在国内中小型公司能用起来吗?

Java架构师迁哥

产业互联网时代的数字化转型与创新

CECBC

dubbogo 社区负责人于雨说

apache/dubbo-go

dubbo dubbo-go dubbogo

网络抓包实战04——深入浅出连接建立

青春不可负,生活不可欺

值得收藏的15个JavaScript语句

devpoint

JavaScript array 6月日更

英特尔宋继强:异构计算的关键一环,先进封装已经走向前台

新闻科技资讯

Krustlet:使用Rust开发的kubelet,用于运行WASM工作负载_DevOps_Christian Melendez_InfoQ精选文章