您当前的位置:首页 > 电脑百科 > 程序开发 > 容器

Wasm的野心:取代K8s,不如结合K8s

时间:2023-11-07 13:24:12  来源:51CTO  作者:

作者丨B. Cameron GAIn

编译丨诺亚

出品 | 51CTO技术栈(微信号:blog51cto)

虽然WebAssembly (Wasm)已被证明在浏览器和某些有针对性的服务器部署中可以很好地工作,但允许开发人员“一次部署,随处部署”的标准化组件模型尚未实现。

当开发人员可以将代码加载到 Wasm 模块中,并将其同时部署在能够运行 CPU 指令集的各种环境和设备类型中时,这一愿景就会实现。更具体地说,开源社区在努力开发 Wasi,致力于在许多方面将Wasm模块连接到组件的标准接口或API。但是,我们还没有到那一步。

然后是 Kube.NETes。

容器和 Kubernetes 环境已基本准备好进行 Wasm 模块部署,而 Wasm 模块也已基本准备好在 Kubernetes 上部署。尽管有传言说 Wasm 有朝一日可能会取代容器——甚至是 Kubernetes——但一个非常好的结合WebAssembly和Kubernetes的契机正在出现。

1、将 Wasm 与 Kubernetes 结合使用的优势   

将 Wasm 与 Kubernetes 一起使用具有一些内在优势。例如:安全性。由于 Wasm 二进制文件的冷启动时间以毫秒为单位,而某些虚拟机的冷启动时间可能以分钟为单位,因此 Wasm 的安全模型实际上比容器和 Kubernetes 的安全模型要强一些。这是因为无法立即访问 linux 内核。

所有代码都是通过 Wasm 主机运行时中介的,这意味着你可以拦截所有的系统调用——至少在理论上是这样。换句话说,Wasm 可以在容器和 Kubernetes 集群中提供额外的安全层。   

目前还不能做到:点击一个简单的按钮就在 Kubernetes 上部署 Wasm 模块。但一些供应商,如 Fermyon,已经提供了在容器和 Kubernetes 上部署 Wasm 的无服务器服务。

这一进步很大程度上归功于对 Wasm 的容器支持,以及 Docker 在 2022 年引入了对 Wasm 的 beta 支持。从那时起,它就成为 Kubernetes 支持高度分布式部署的主要推动者,并允许用户随意启动和关闭由 Wasm 模块组成的应用程序。

Containerd的使用也起着重要作用,container shim是有助于将容器与运行时代码集成的进程。

Fermyon联合创始人兼首席执行官Matt Butcher提到:“微软和许多其他公司将Wasm shim(就像Spin shim)添加到containerd项目中所做的工作是在Docker桌面版和许多Kubernetes发行版上解锁Wasm的原因。”

Butcher说,Docker Desktop和Microsoft Azure AKS都率先展示了如何做到这一点。最近,他指出,Civo 在其 Kubernetes 产品中引入了支持,“这表明大大小小的云提供商正在促进向 WebAssembly 的转变”。

2、Wasm 和 OpenShift

其他软件制造商和服务提供商也正在登上契合Wasm 的 Kubernetes 列车。其中包括红帽,它已经在调整 OpenShift 以适应 Wasm 模块并支持 Ferymon 的 Spin。红帽将 Wasm 视为一种有趣的跨平台开发方法,并为相关的上游社区做出了贡献。

红帽首席软件工程师 Ivan Font介绍,截至今天,Kubernetes 提供了运行基于 Wasm 的工作负载所需的编排和基础设施,这为现有的 Kubernetes 投资提供了额外的灵活性。

截至目前,红帽的平台中还没有 Wasm 的产品化。但该公司表示,它将继续与其他供应商和社区合作,根据用户组织的需求开发其潜力。

红帽正在开发 Spin 以在 OpenShift 上运行,并为 Wasi(Wasm 和组件接口)和 WasmEdge 的开发做出贡献,WasmEdge 是为云原生(当然是 Kubernetes)、边缘和去中心化应用程序创建的可扩展 Wasm 运行时。根据 WasmEdge 文档,WasmEdge 还为无服务器应用程序、嵌入式功能、微服务、智能合约和物联网设备提供支持。   

就目前而言,红帽的 OpenShift 默认使用 WasmEdge,因为 Fedora Linux 发行版已经支持了一个红帽包管理器(RPM),并且红帽为 Wasm 提供了额外的支持。

“但是,你可以使用任何一个,因为两个 WebAssembly 运行时都在朝着类似的方向发展,”Font 说。“它们都专注于边缘,并具有人工智能功能等。”

要将特定工作负载作为基于 Wasm 的工作负载运行以在 OpenShift 上执行,你目前需要指定一个注解,指示你要执行的操作。此执行是在容器内完成的,但它具有独特的特征。

当 Wasm 应用程序被打包时,它只是镜像中的一个模块。这意味着开放容器计划 (OCI) 容器映像不包含任何外部依赖项或完整的操作系统文件系统。因此,图像大小非常小,因为它们只包含你的 Wasm 模块。Font 说,这通常适用于容器,而 OCI 是这方面的标准。

Butcher 说,Fermyon 一直在与 KWasm 的创建者 Liquid Reply 以及红帽合作,以在 OpenShift 的 Wasm 功能和基于容器的 Kubernetes 发行版之间实现一定程度的对等。他说,这种合作“从企业级AKS延伸到微型K3”。

3、更多适用于 Wasm 和 Kubernetes 的工具即将到来 

开发人员将有更多的工具可用于在 Kubernetes 集群上构建和部署应用程序,Civo 的现场首席技术官兼云原生计算基金会大使 Saiyam Pathak如是认为。

“如果你有一个 Kubernetes 集群,你可以简单地再添加一个负载,使它为WebAssembly做好准备。”Pathak 说。

Pathak 说,这个过程很简单:它包括确保一切都配置正确,包括重新启动 containerd、编辑 containerd .normal 文件以及在该特定节点上使用 Wasm 运行时。然后它就可以运行你的 Wasm 工作负载了。

Pathak说:“这太棒了,因为你现在可以使用过去10年一直使用的相同工具和部署过程,将最新的WebAssembly技术用于你的下一组应用程序。无论你是构建 API 还是扩展你的应用程序,你都可以在同一个基础设施和 Kubernetes 集群中使用 WebAssembly,以及 Docker。”    

Kasten 提供 Kubernetes 数据管理平台和灾难恢复支持,它着眼于 Wasm 在其 Kasten K10 平台的技术能力和支持客户方面的实用性。Wasm 不是数据移动支持的综合解决方案,但它是 Kasten 正在为 Kubernetes 寻找的东西,因为 Kasten 正在探索如何在 K10 中使用 Wasm。

“作为一个 Kubernetes 原生应用,我们正在研究如何利用 WebAssembly 来简化和使事情更快、更高效、更安全:你从 Wasm 本身获得的所有好处,”Veeam 全球现场首席技术官、Kasten 的所有者 Michael Cade还提到:“但 WebAssembly 是一切的答案吗?也不是。”

相比之下,虚拟机也不是万能的,Cade说:“如果我有一张物理硬件卡,在一台物理机器上,在我最重要的应用服务器上,我可能会虚拟化它,也可能不会。如果没有,我永远无法将其容器化。”

WebAssembly 蓬勃发展的地方,尤其是对于 Kubernetes 来说,是围绕着三个“S”(speed, security,support):速度、安全性以及大多数 Web 前端服务器或 Web 模块已经支持。

4、RunWasi:进步的催化剂

开源 RunWasi 项目的进展可能会成为 Wasm-on-Kubernetes 部署的催化剂。RunWasi 的创建是为了通过 containerd 在 Wasm 模块中支持 Wasm 运行时。

运行时的部署过程是使用 containerd shim完成的,RunWasi 提供必要的代码。这些shim将 Wasm 模块从 containerd 编排到部署代码的低级运行时。

以下列表显示了流行的 Wasm containerd shim,由 Microsoft 的 Deis Labs 提供:

  • Lunatic,一个受 Earlang 启发的运行时,用于快速、健壮和可扩展的服务器端 Wasm 应用程序。
  • Spin,一个用于构建和运行无服务器 Wasm 应用程序的开发者工具。
  • Slight,一个基于Wasmtime 的运行时,用于运行使用 SpiderLightning (WASI-Cloud-Core) 功能的 Wasm 应用程序。
  • Wasm Workers Server,一个在 Wasm 之上开发和运行无服务器应用程序的工具。

在 10 月初的 Docker 年度用户大会上,软件培训师 Nigel Poulton 展示并描述了他如何使用 Spin 作为 Wasm 框架,在Wasm模块中为应用程序创建Wasm工件,然后将其打包到 Docker 容器中。他还描述了如何设置一个多节点 Kubernetes 集群,其中包含一个控制平面节点和两个工作线程。

至关重要的是,Poulton 描述了他如何拥有“运行这些 Wasm 工作负载所需的软件,而且都是简单的容器化的东西”。

参考链接:

https://thenewstack.io/can-kubernetes-solve-webassemblys-component-challenges/



Tags:K8s   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
我们一起聊聊K8s定时备份MySQL并发送到指定邮箱
边车容器(sidecar):边车容器就是与主容器一起在一个pod中运行的容器,为业务容器赋能,共享一个网络空间,所以可以用127.0.0.1:3306连接主容器的数据库。一、背景:一开始的初衷是,想...【详细内容】
2023-12-29  Search: K8s  点击:(72)  评论:(0)  加入收藏
升级就崩溃,K8s需要LTS版本!
Kubernetes集群不是在升级,就是在升级的路上。而对于维护K8s集群的团队来说,最担心的莫过于,系统因为K8s升级而引发了服务器大规模崩溃。想象一下,K8s升级发生在某个晚上,突然某...【详细内容】
2023-12-05  Search: K8s  点击:(214)  评论:(0)  加入收藏
k8s部署维护问题汇总
集群问题系统Error: unknown flag: --etcd-quorum-read删除service 里面的相应字段start request repeated too quickly for kube-apiserver.service查看是不是有之前的进程...【详细内容】
2023-11-30  Search: K8s  点击:(193)  评论:(0)  加入收藏
五分钟 k8s 实战-滚动更新与优雅停机
当我们在生产环境发布应用时,必须要考虑到当前系统还有用户正在使用的情况,所以尽量需要做到不停机发版。所以在发布过程中理论上之前的 v1 版本依然存在,必须得等待 v2 版本启...【详细内容】
2023-11-30  Search: K8s  点击:(237)  评论:(0)  加入收藏
五分钟 K8s 实战-应用探针
今天进入 kubernetes 的运维部分(并不是运维 kubernetes,而是运维应用),其实日常我们大部分使用 kubernetes 的功能就是以往运维的工作,现在云原生将运维和研发关系变得更紧密了...【详细内容】
2023-11-27  Search: K8s  点击:(181)  评论:(0)  加入收藏
Kubernetes创始人发声!K8s在被反噬!
Kubernetes 变得太复杂了,它需要学会克制,否则就会停止创新,直至丢失大本营。Kubernetes 联合创始人Tim Hockin 罕见发声。在今年的 KubeCon 上,他建议,Kubernetes 核心维护者应...【详细内容】
2023-11-27  Search: K8s  点击:(156)  评论:(0)  加入收藏
K8s-服务网格实战-配置 Mesh(灰度发布)
在上一篇 k8s-服务网格实战-入门Istio中分享了如何安装部署 Istio,同时可以利用 Istio 实现 gRPC 的负载均衡。今天我们更进一步,深入了解使用 Istio 的功能。从 Istio 的流量...【详细内容】
2023-11-08  Search: K8s  点击:(339)  评论:(0)  加入收藏
Wasm的野心:取代K8s,不如结合K8s
作者丨B. Cameron Gain编译丨诺亚出品 | 51CTO技术栈(微信号:blog51cto)虽然WebAssembly (Wasm)已被证明在浏览器和某些有针对性的服务器部署中可以很好地工作,但允许开发人员“...【详细内容】
2023-11-07  Search: K8s  点击:(375)  评论:(0)  加入收藏
在本地 K8s 中轻松部署自签 TLS 证书
随着互联网的飞速发展,安全性日益成为我们关注的焦点。HTTPS 已从一项奢侈的技术逐渐成为现代网络交互的标准。它不仅仅是保护信息的重要工具,更是实现信任和品质的象征...【详细内容】
2023-11-03  Search: K8s  点击:(254)  评论:(0)  加入收藏
K8s-服务网格实战-入门Istio
背景终于进入大家都比较感兴趣的服务网格系列了,在前面已经讲解了: 如何部署应用到 kubernetes 服务之间如何调用 如何通过域名访问我们的服务 如何使用 kubernetes 自带的配...【详细内容】
2023-11-01  Search: K8s  点击:(230)  评论:(0)  加入收藏
▌简易百科推荐
Docker 和传统虚拟机有什么区别?
我有一个程序员朋友,他每年情人节都要送女朋友一台服务器。他说:“谁不想在过节当天收到一台 4核8g 的服务器呢?”“万一对方不要,我还能留着自己用。” 给他一次过节的机会,他能...【详细内容】
2024-03-26  小白debug  微信公众号  Tags:Docker   点击:(11)  评论:(0)  加入收藏
掌握Docker网络驱动程序:优化容器通信
Docker为在容器内包装、交付和运行应用程序提供了一个强大的平台,从而彻底改变了容器化。网络是容器化的重要组成部分,Docker提供了各种网络驱动程序来支持容器之间的通信以...【详细内容】
2024-03-22    51CTO  Tags:Docker   点击:(10)  评论:(0)  加入收藏
Containerd容器管理
Nginx 指定容器名称 使用 ctr container create 命令创建容器后,容器并没有处于运行状态,其只是一个静态的容器。容器基本操作容器基本操作主要是 ctr image 命令,查看命令帮...【详细内容】
2024-03-20  云原生运维圈  微信公众号  Tags:容器   点击:(13)  评论:(0)  加入收藏
如何基于Docker镜像逆向生成Dockerfile
引言你是否曾经遇到过一个想要使用的 Docker 镜像,但却无法修改以适应你的特定需求?或者你可能发现了一个喜欢的 Docker 镜像,但想要了解它是如何构建的?在这两种情况下,将 Docke...【详细内容】
2024-03-07  云原生运维圈  微信公众号  Tags:Docker   点击:(22)  评论:(0)  加入收藏
Kubernetes是什么?主要特点是什么?
Kubernetes是什么?Kubernetes,也称为K8s,是一个开源的容器编排系统,由Google首次开发和维护。它允许容器化的应用程序在集群中自动部署、扩展和管理。Kubernetes提供了一种容器...【详细内容】
2024-02-01    简易百科  Tags:Kubernetes   点击:(153)  评论:(0)  加入收藏
我们一起聊聊容器资源自愈
在企业实际在使用容器这类资源的时候,除了技术本身,要考虑的其他问题也会很多。企业管理的容器有千千万万,出于效率考虑,对于有特殊需求的容器如何进行批量创建和管理呢,这就需要...【详细内容】
2024-01-30  匠心独运维妙维效  微信公众号  Tags:容器   点击:(47)  评论:(0)  加入收藏
Docker与Docker Compose入门:释放你应用部署的威力
今天给大家介绍一项强大而有趣的技能,那就是使用 Docker 和 Docker Compose 来释放你的应用部署的威力!无论你是一名开发人员还是系统管理员,掌握这个技能都将为你的工作带来巨...【详细内容】
2024-01-17  waynblog  微信公众号  Tags:Docker   点击:(65)  评论:(0)  加入收藏
Docker镜像与容器的交互及在容器内部执行代码的原理与实践
Docker作为一种流行的容器技术,已经成为现代应用程序开发和部署的重要工具。在Docker中,镜像是构建和运行容器的基础,而容器则是基于镜像创建的可执行实例。Docker镜像与容器的...【详细内容】
2024-01-10  编程技术汇  今日头条  Tags:Docker   点击:(76)  评论:(0)  加入收藏
如何在 Ubuntu 上安装 Docker
使用 Docker 意味着开启一个新的计算领域,但如果你刚刚开始使用 Docker,安装可能看起来是一项艰巨的任务。在 Ubuntu 上安装 Docker 有两种推荐的方法: 从 Ubuntu 的仓库安装 D...【详细内容】
2024-01-04    Linux中国  Tags:Docker   点击:(124)  评论:(0)  加入收藏
从Kubernetes的探针到DevOps
今天在群里又看有人问如何设置 Kubernetes 的探针,感觉要补充的话太多了,结合我们在一些 DevOps 项目中痛苦的体验,今天一劳永逸的全部说完,此外,也为大家展现一下为什么 DevOps...【详细内容】
2023-12-27  云云众生s  微信公众号  Tags:Kubernetes   点击:(114)  评论:(0)  加入收藏
站内最新
站内热门
站内头条