wasm 要做到哪些方面才能取代容器运行时来被 kubernetes 调度

300 天前
 mightybruce
wasm 和 wasi 目前就看到一些边缘计算场景有用上,尽管 docker 创建者力捧 wasm, 但是 krustlet 无容器运行 wasm 的项目已经停止更新了。最近 WASI 预览 2 正式发布。

https://mp.weixin.qq.com/s?__biz=MzI5ODk5ODI4Nw==&mid=2247542560&idx=1&sn=c001f1ce4f90e6fac3fb3a1941f8988c&chksm=ec9f2840dbe8a156aa4bcf213beb1027d3996af6e6e8efc463e96913a8c59366bcf2cfeff00c
1442 次点击
所在节点    Kubernetes
9 条回复
thet
300 天前
目前接口太少了,只能做一些 demo
flyqie
300 天前
能科普下 wasm 在 k8s 上的作用吗?

对 wasm 的用途理解还局限在浏览器上。
mightybruce
300 天前
@flyqie wasm 通过 wasm 运行时 运行在各种操作系统上,wasm 运行时 比 容器运行时资源消耗更少,wasi 是用来让 wasm 和 操作系统交互的各种接口调用
k8s 运行 wasm 有两者方法
一种是兼容 Wasm 的组件替换本机 Linux 容器运行时, 使用 krustlet 代替 kubelet , ( krustlet 目前停止更新)
另一种解决方案是使用带有 Wasm 运行时的基本镜像,并手动调用编译后的二进制文件, 这种依然是依靠容器运行。

目前流行的几种 wasm 运行时 Wasmtime ( Rust ,JIT )、WAVM ( C/C++,JIT )、Wasmer ( Rust ,JIT )、Wasm3 ( C ,解释型)、WAMR (C, 解释型)。
go 编译器 以及 tinygo 都支持编译为 wasm 指令集架构的文件
mightybruce
300 天前
在 Web 上,WebAssembly 使用浏览器提供的现有 API 。WebAssembly 系统接口( WASI )的创建填补了 WebAssembly 和运行在浏览器外部的系统之间的空白。这使非浏览器系统能够利用 WebAssembly 的可移植性,使 WASI 成为在分发时具有可移植性和在运行负载时具有隔离性的良好选择。
qq135449773
299 天前
正好最近也在研究关于 wasm 替代容器化技术这块的内容。

但我翻了下 wasmer ,感觉还是没太理解这东西到底怎么能替代 docker ?

比如我想去在服务器上运行 Java ,那么按照 docker 的思想,我应该先去写一个 Dockerfile ,去完成编译打包优化镜像体积,然后分发镜像到服务器上,因为 docker 容器内部就是一个比较完整的 linux 环境,一切都很好去理解。

但是 wasm 方案如果想这么用的话应该怎么做?如何把我的 Java 项目打包成为 wasm 格式?

依照官网给的信息还是没太理解这个用法。
mightybruce
299 天前
@qq135449773 如果是基于 java 来做, 就不要研究了,java 社区对这个关注不高,远远没有成熟度。
wasi 目前支持的比较好的是 rust ,其次是 c++ 和 go 。
容器的资源隔离 wasi 是可以做到的。
qq135449773
299 天前
@mightybruce #6 那么这三个语言,哪个都能直接编译到对应平台的二进制上,除了放在浏览器里为什么还需要 wasm 呢
mightybruce
299 天前
ExplodingFKL
266 天前
跑 JIT / 解释最后也会变得和 JVM / V8 一样 ...

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1012995

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX