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

云栖号资讯:【点击查看更多行业资讯】
在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来!

Deis Labs 发布了 Krustlet ,一个用 Rust 开发的开源 Kubernetes kubelet,用于在 Kubernetes 中运行 WebAssembly 工作负载。在某种程度上,Krustletz 5 T m 的初始版本是一种概念验证,因为u ) % D N 9 %它还不支持 Pod 事件或 Init 容器等特性4 o P G @ 0 P R F。应用程序必须实现 WebAssembly 系统接口(WASI),因为 Krustlet 只支持 WebAssembly 容r , | * t 8 C (器。

WebAssembly,也称为 WASM,是一种二进制格式,用于] $ z U -栈式虚拟机。它对执行速度进行了优化,占用空间^ a Y ^ a Z小,也是一种开放的 Web 标准。WASM 以其在浏览器方面的应用 (如微软的 Blazor 框架) 而闻名,不过 Mozilla 最近推出了 WASI@ - , ,这样就可以让编译器以这个接口作为编译目标,而不是操作系统。在服务器端支持 WASM 为用户提供了另一种 Docker 之外的容器运行时选择,而这就是 Krustlb d [ F 6et 所提供的。
; X n外,Lin Clark 在 Mozilla 博客上解释说,从安全的角度来看,“如果调用一个需要访问文件的函数,必须传入一个带有权限限制的文件描述符”。WASI 可用于构建只有显式权限的沙箱环境,从而提高了容器的安全性。

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

图片来源: StS ^ a ? R Zandardizing WASI: A system interface to run WebAssembly outside the web .
Krustlet 的初始版本支持基本的 Pod 生命周期、用于露出 Pod 或容器U ` P - L D D字段的 API 、环境变量和宿主卷、secrets 或 configMaps。不过,Kurstlet 还没有准备好投入生产使用。例如,Krustlet 不支持 ARM 处理器、Init 容器、云提供商数据卷、Poa j i m I Qd 事件、Pod Condition,并且只支持部分在 Windows 上运行。此外,Krustlet 通过提供程序与给定的运行时发生交互,支持 waSCC 和 WASI (支持的 WASM运行时在不断增加)3 U Q A B T

实际上,K( % + 3 vubelet 是使用 Rust 实现的一种 Kubernetes kubelet。它监听 Kubernetes API,以获取新的 Pod 请求(在集群中运行基于 WASI 的应用程序),只要请求* ^ K R k事件与节点选择器是匹配的。因此,要在 Krustlet 节点上运行应用程序,用户可以使用l ! h y y e taints、toley o Arations 和节点选择器。此外,用户必须为应用程序生成 WebAss2 L j E m x | ; oembly 二进制文件。如果应用程序是用 C 语言开发的,就用 clang ,如果应用程序是用 Rust 开发的,就用 cargo 。然后,用户必须使用 w@ t .asm-to-oci 打包,并将容器镜像推送到容器注册v 2 E / # } k中心。要部署应用程序,用户需要定义一个 Kubernetes 清单,其中包含 tolerations,如下所示:

apiVersion: v1
kind: Pod
metadata:5 q Z e C % i
name: wasm-app
spec:
containers:
- name: w} o R tasm-app
image: registry/wasm-app:v1.0.0
toleraE - `tions:
- key: "krustlet/arch"
operator: "Equal"
value: "wasm32-wasi"
effect: "NoExecute"

一个构建、推送和部署应用程序到 Kurstlet 节点的典型工作流如下:

clang main.c -o demo.wasm
wasm-to-oci push demo.wasm registry/wasm-app:v1.0.0
kubectl apply -f wasm-app.yaml

对于想要在现有 Kubernetes 集群中使用 Krustlet 的人,该项目为他们提供了指南,包括如何在不同集群部署 (如 Azure Kube9 z ! G w U K 0rnetes Service(AKS)、AmazW A b ! @ R y h xon Elastic Kubernete] h i vs Service(EK; x * E WS)、MicU G 7 5 W f E zroK8s、Minikube 等) 中启动工作节点。

Krustlet 的开发非常活跃,每个版本都有一个完整的问题列表,他们计划接下来解决这些问题。例如,Krustlet 的最新版本是 v0.3.0 ,在这个版本中,用户可以看到有哪些新特性、接下来会有什么以及他, r W [们计划修复的已知问题列表。对于即将发布的版本,Krustlet 正在努力为网络、云存储卷提供程序和一些 Pod Condition 等提供支持。

【云栖% ` . n / k :号在线课堂】每天都有产品技术专家分享!
课程地址:https://yqh.aliyun.com/zhibo

立即加入社群,与专家面对面,及时了解课程最新动态!
【云栖号在线课堂 社群】https{ L Z & % x m Y://c.tb.cn/F3.Z8gvnK

原文发布时间:2020-07-14
本文作者:Christian Melendez
本文来自:“InfoA 9 8Q”,了解相关信息可以关注“InfoQ”