V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
mightybruce
V2EX  ›  Kubernetes

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

  •  
  •   mightybruce · 316 天前 · 1461 次点击
    这是一个创建于 316 天前的主题,其中的信息可能已经有所发展或是发生改变。
    wasm 和 wasi 目前就看到一些边缘计算场景有用上,尽管 docker 创建者力捧 wasm, 但是 krustlet 无容器运行 wasm 的项目已经停止更新了。最近 WASI 预览 2 正式发布。

    https://mp.weixin.qq.com/s?__biz=MzI5ODk5ODI4Nw==&mid=2247542560&idx=1&sn=c001f1ce4f90e6fac3fb3a1941f8988c&chksm=ec9f2840dbe8a156aa4bcf213beb1027d3996af6e6e8efc463e96913a8c59366bcf2cfeff00c
    9 条回复    2024-03-05 15:14:24 +08:00
    thet
        1
    thet  
       316 天前
    目前接口太少了,只能做一些 demo
    flyqie
        2
    flyqie  
       315 天前 via Android
    能科普下 wasm 在 k8s 上的作用吗?

    对 wasm 的用途理解还局限在浏览器上。
    mightybruce
        3
    mightybruce  
    OP
       315 天前
    @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
        4
    mightybruce  
    OP
       315 天前
    在 Web 上,WebAssembly 使用浏览器提供的现有 API 。WebAssembly 系统接口( WASI )的创建填补了 WebAssembly 和运行在浏览器外部的系统之间的空白。这使非浏览器系统能够利用 WebAssembly 的可移植性,使 WASI 成为在分发时具有可移植性和在运行负载时具有隔离性的良好选择。
    qq135449773
        5
    qq135449773  
       315 天前
    正好最近也在研究关于 wasm 替代容器化技术这块的内容。

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

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

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

    依照官网给的信息还是没太理解这个用法。
    mightybruce
        6
    mightybruce  
    OP
       315 天前   ❤️ 1
    @qq135449773 如果是基于 java 来做, 就不要研究了,java 社区对这个关注不高,远远没有成熟度。
    wasi 目前支持的比较好的是 rust ,其次是 c++ 和 go 。
    容器的资源隔离 wasi 是可以做到的。
    qq135449773
        7
    qq135449773  
       314 天前
    @mightybruce #6 那么这三个语言,哪个都能直接编译到对应平台的二进制上,除了放在浏览器里为什么还需要 wasm 呢
    ExplodingFKL
        9
    ExplodingFKL  
       281 天前
    跑 JIT / 解释最后也会变得和 JVM / V8 一样 ...
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3109 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 04:47 · PVG 12:47 · LAX 20:47 · JFK 23:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.