• [热门活动] Kuasar社区开源之夏2024课题已上线!华为云导师与你共探多沙箱容器运行时
    开源之夏介绍开源之夏是由中国科学院软件研究所“开源软件供应链点亮计划”发起并长期支持的一项暑期开源活动,旨在鼓励在校学生积极参与开源软件的开发维护,培养和发掘更多优秀的开发者,促进优秀开源软件社区的蓬勃发展,助力开源软件供应链建设。Kuasar多沙箱容器运行时项目开源之夏2024课题已上线!这个夏天,期待与同学们一起开启多沙箱容器运行时技术之旅。▍Kuasar社区介绍CNCF Kuasar 多沙箱容器运行时项目(https://github.com/kuasar-io/kuasar)于2023年4月在KubeCon + CloudNativeCon Europe上由华为云、中国农业银行以及openEuler社区、WasmEdge社区和Quark Containers社区联合发起,并于2023年12月成为云原生计算基金会(CNCF)官方项目。Kuasar融入了各企业和社区在容器运行时领域的前沿探索、技术积累和生产实践,开源至今受到业界的广泛关注和支持,数十位来自外部企业、高校的开源爱好者参与开发贡献和积极落地应用,Kuasar正以开源创新的姿态促进云原生产业发展。▍Kuasar社区开源之夏2024课题已上线课题一 vmm类型Pod支持使用youki库创建容器项目编号:240110284项目难度:进阶/Advanced项目社区导师:abel-von(华为云)导师联系邮箱:fshb1988@gmail.com项目简述:Kuasar可以创建轻量级虚拟机(vmm)类型的Pod,并在虚拟机内创建容器示例。当前做法是虚机内的vmm-task进程调用runc命令行进行创建,存在一定的性能开销。Youki(containers/youki: A container runtime written in Rust (github.com))是一个使用rust语言编写的容器运行时,同样遵循OCI规范。本课题希望可以实现在vmm-task进程里调用youki库(注意,是库不是命令行)的接口进行容器生命周期管理。项目链接:https://summer-ospp.ac.cn/org/prodetail/240110284?lang=zh&list=pro课题二 使用tracing库增强组件可观测性项目编号:240110286项目难度:基础/Basic项目社区导师:burning(华为云)导师联系邮箱:burning9699@gmail.com项目简述:追踪(tracing)技术通常被用于业务逻辑执行情况的分析和问题定位,方便开发测试人员了解框架、找出瓶颈、分析问题,Rust也有类似的库:tokio-rs/tracing: Application level tracing for Rust. (github.com) 。本课题期望通过引入该库,实现对vmm-sandboxer和vmm-task请求调用情况的可视化,提高系统可观测性。项目链接:https://summer-ospp.ac.cn/org/prodetail/240110286?lang=zh&list=pro▍开源之夏面向哪些学生?本活动面向年满 18 周岁的高校在校学生。暑期即将毕业的学生,只要申请时学生证处在有效期内,就可以报名活动。中国籍学生参与活动时需提供身份证、学生证、教育部学籍在线验证报告(学信网)或在读证明。外籍学生参与活动时需提供护照,同时提供录取通知书、学生卡、在读证明等文件用于证明学生身份。▍我可以在开源之夏获得什么?结识开源界小伙伴和技术大牛获得社区导师的专业指导,与开源项目开发者深度交流丰富项目实践经验,提升项目开发技能为学习方向提供参考,为职业发展积累人脉通过结项考核的学生将获得结项奖金和结项证书(基础难度税前8000元RMB,进阶难度税前12000元RMB),更有机会获选优秀学生▍学生参与关键时间点4月30日-6月4日期间,学生可以通过开源之夏官网(https://summer-ospp.ac.cn/)注册、与导师沟通项目并提交项目申请。对Kuasar社区开源之夏课题感兴趣的同学,可以通过本文上方导师邮箱,提前联系导师沟通课题需求,找到最适合自己的课题方向,您也可以添加社区小助手微信k8s2222,回复Kuasar进入社区技术交流群或了解社区课题。添加社区小助手微信k8s2222回复Kuasar了解课题申报或进入社区技术交流群学生在开源之夏课题参与期间,通过线上工作的形式完成课题,相关项目结项需要在9月30日前以 PR 的形式提交到Kuasar社区仓库中并完成合并,结项的同学根据项目难度获得结项成果及奖金,并有机会获选主办方优秀学生。▍进一步了解Kuasar作为多沙箱容器运行时项目,Kuasar在保留传统容器运行时功能的基础上,与Containerd社区一起推动新的沙箱接口统一标准,并通过全面Rust化以及优化管理模型框架等手段,进一步降低管理开销,简化调用链路,灵活扩展对业界主流沙箱技术的支持。此外,通过支持多安全沙箱共节点部署,Kuasar可以充分利用节点资源、降本增效,为用户提供更安全高效的沙箱场景解决方案。Kuasar项目全景图南向沙箱方面,Kuasar已支持基于轻量级虚拟化技术的安全容器沙箱(Cloud Hypervisor、Qemu、StratoVirt),基于新兴的WebAssembly沙箱(WasmEdge、Wasmtime),基于进程级虚拟化的App Kernel沙箱(Quark)以及基于内核的原生普通容器沙箱(runC);北向引擎方面,Kuasar已与Containerd联合构建最新的沙箱接口标准,并共同推动该标准在Containerd v2.0版本的完整实现。此外,轻量级容器引擎iSulad项目也已经完成与Kuasar项目的深度集成,支持在openEuler 23.09创新版本上一键部署。CNCF Kuasar社区期待与同学们一起开启开源之夏2024,这个夏天,来自华为云的大咖导师将与您携手作战,一起推动云原生领域容器运行时技术的探索、创新和发展。
  • [公告] Kuasar成为CNCF官方项目,探索容器运行时新纪元!
    北京时间12月20日,云原生计算基金会(CNCF)正式接纳多沙箱容器运行时项目 Kuasar(cid:link_0)。Kuasar的加入,极大地推动了云原生领域容器运行时技术的探索、创新和发展。作为CNCF首个多沙箱容器运行时项目,Kuasar于2023年4月在KubeCon + CloudNativeCon Europe上由华为云、中国农业银行以及openEuler社区、WasmEdge社区和Quark Containers社区联合发起。Kuasar融入了各企业和社区在容器运行时领域的前沿探索、技术积累和生产实践,开源至今受到业界的广泛关注和支持,已收获900多个GitHub Star和70多个Fork,数十位来自外部企业、高校的开源爱好者参与开发贡献和积极落地应用,Kuasar正以开源创新的姿态促进云原生产业发展。“WebAssembly正在快速成为云原生技术栈的一个关键部分,Kuasar深度集成了高性能、轻量级的WasmEdge沙箱,Kuasar的加入使得WebAssembly生态和CNCF生态联系更加紧密,未来WasmEdge和Kuasar将共同推动在大模型、边缘计算和函数计算等领域的发展。”—— WasmEdge项目创始人  Michael Yuan“openEuler社区在Kuasar项目发布之初就率先完成与Kuasar多沙箱生态的对接,推出基于iSulad + Kuasar + StratoVirt的极速轻量安全容器解决方案。未来openEuler社区将继续深化与CNCF社区项目的合作,为用户提供更轻量、更安全、更多样的容器化底座。”—— openEuler技术委员会主席  胡欣蔚“Kuasar项目融入了华为云在容器运行时领域多年的积累,结合了社区合作伙伴的实践经验。成为CNCF官方项目,表明了Kuasar社区开放治理的决心,致力于为企业和开发者提供厂商中立、多方协作的开放环境,促进各种沙箱技术的商用成熟,为用户带来极致体验。”—— CNCF官方大使  华为云云原生开源团队负责人  王泽锋“云原生场景多样化促进了多种沙箱技术的蓬勃发展,沙箱技术接入北向生态成为普遍需求,Kuasar推动了Containerd中沙箱技术标准的统一,提供了多种沙箱技术实现,为CNCF的容器运行时板块注入了新鲜活力。”——  CNCF官方大使  Containerd社区维护者  蔡威▍Kuasar项目介绍为了满足企业在云原生场景下的诉求,业界出现了多种沙箱容器隔离技术。然而,应用云原生的沙箱技术仍面临挑战。一方面,各类云原生场景对沙箱提出更高要求,单一沙箱无法同时满足用户云上业务对安全隔离、极速低噪、标准通用等多个维度的要求,企业面临云原生业务场景全覆盖问题;另一方面,支持多类沙箱带来运维压力显著上升,当前业界沙箱技术对接容器运行时的实现缺乏统一开发框架,因此关键日志、重要事件、沙箱管理逻辑等均存在差异,新引入沙箱的同时运维压力陡增。Kuasar在保留传统容器运行时功能的基础上,与Containerd社区一起推动新的沙箱接口统一标准,并通过全面Rust化以及优化管理模型框架等手段,进一步降低管理开销,简化调用链路,灵活扩展对业界主流沙箱技术的支持。此外,通过支持多安全沙箱共节点部署,Kuasar可以充分利用节点资源、降本增效,为用户提供更安全高效的沙箱场景解决方案。▲ Kuasar项目全景图南向沙箱方面,Kuasar已支持基于轻量级虚拟化技术的安全容器沙箱(Cloud Hypervisor、Qemu、StratoVirt),基于新兴的WebAssembly沙箱(WasmEdge、Wasmtime),基于进程级虚拟化的App Kernel沙箱(Quark)以及基于内核的原生普通容器沙箱(runC);北向引擎方面,Kuasar已与Containerd联合构建最新的沙箱接口标准,并共同推动该标准在Containerd v2.0版本的完整实现。此外,轻量级容器引擎iSulad项目也已经完成与Kuasar项目的深度集成,支持在openEuler 23.09创新版本上一键部署。▍未来可期此次CNCF正式将Kuasar接纳为官方项目,将极大促进Kuasar上下游社区生态构建及合作。Kuasar将持续探索云原生容器运行时领域技术创新,在企业数字化、云原生转型过程中发挥作用,让基于Kuasar的多沙箱容器运行时方案融入更广泛的云原生技术生态。作为CNCF亚洲唯一创始成员、白金会员,华为云在CNCF贡献量、Kubernetes社区和Istio社区的代码贡献量持续多年稳居亚洲第一,已向CNCF贡献了业界首个云原生边缘计算项目KubeEdge、首个云原生批量算力项目Volcano、首个多云容器编排项目Karmada等多个重量级云原生开源项目,并持续开源Kurator、Kappital、Kmesh等创新项目,与全球云原生社区共同发展。Kuasar社区技术交流地址Kuasar官网:https://kuasar.io项目地址:cid:link_0Twitter: https://twitter.com/Kuasar_io添加社区小助手回复“Kuasar”进入技术交流群
  • [技术干货] 率先支持Kuasar!iSulad Sandbox API 简化调用链,可靠性倍增
    沙箱隔离技术是一种将进程有效隔离到独立环境中运行的技术。随着容器技术的兴起,沙箱隔离技术也在云原生领域中得到了广泛的应用。iSulad率先通过 Sandbox API 支持 Kuasar,提供高效和稳定的沙箱管理能力。然而,由于容器技术的历史原因,沙箱的概念在容器引擎和容器运行时中没有得到足够的支持。OCI 标准[1]未定义沙箱管理,导致容器引擎和容器运行时只能采用容器管理的方式管理沙箱,引发性能和稳定性问题,具体可参见Kuasar 系列文章[2]。事实上,容器领域一直在深入研究和探索引入沙箱管理接口的问题。举例来说,Containerd 社区于 2022 年 4 月将 Sandbox API 相关功能整合到主线[3],这一举措对 Containerd 内部沙箱管理逻辑进行了优化。然而,令人遗憾的是,它依然使用 OCI 标准接口来调用容器运行时以管理沙箱。2023 年 4 月 21 日,华为在 Kubecon+CloudNativeCon Europe 2023 云原生峰会上发布了多沙箱运行时 Kuasar[4],将沙箱管理逻辑引入了容器运行时。至此,Kuasar 成为第一个支持 Sandbox API 的容器运行时。容器引擎使用 Sandbox API 直接管理沙箱成为了可能。iSulad[5]也率先通过 Sandbox API 支持 Kuasar,提供高效和稳定的沙箱管理能力。openEuler 23.09 完成对 iSulad+Kuasar+StratoVirt 的集成,为用户提供了一个极速轻量的安全容器解决方案,具体可参见第二篇 Kuasar 系列文章[6]。Sandbox API 简介service Controller { rpc Create(ControllerCreateRequest) returns (ControllerCreateResponse); rpc Start(ControllerStartRequest) returns (ControllerStartResponse); rpc Platform(ControllerPlatformRequest) returns (ControllerPlatformResponse); rpc Prepare(PrepareRequest) returns (PrepareResponse); rpc Purge(PurgeRequest) returns (PurgeResponse); rpc UpdateResources(UpdateResourcesRequest) returns (UpdateResourcesResponse); rpc Stop(ControllerStopRequest) returns (ControllerStopResponse); rpc Wait(ControllerWaitRequest) returns (ControllerWaitResponse); rpc Status(ControllerStatusRequest) returns (ControllerStatusResponse); rpc Shutdown(ControllerShutdownRequest) returns (ControllerShutdownResponse); }Sandbox API 的引入解决了容器引擎和容器运行时之间由来已久的痛点问题[2]:引入 Sandbox 语义,增强了云原生架构上的连贯性削减 shim 进程的冗余,减小资源开销,加快启动速度缩短调用链,可靠性倍增消除 Pause 容器冗余统一沙箱接口使容器运行时支持多沙箱生命周期与管理 Sandbox API[7] 定义了容器引擎如何与容器运行时交互,其中 Controller Service 定义了沙箱的生命周期管理接口,包括创建 (Create) 、启动 (Start) 、停止 (Stop) 、等待退出 (Wait) 、状态查询 (Status) 、销毁 (Shutdown) 、平台信息查询 (Platform) 等。通过 Sandbox API,容器引擎能够直接对沙箱进行管理,无需通过 OCI 标准接口间接管理沙箱,提高了容器引擎的性能和稳定性。资源管理 Sandbox API 还定义了沙箱的资源管理接口,包括资源准备 (Prepare) 、资源清理 (Purge) 、资源更新 (UpdateResources) 等。容器引擎可以通过这些接口管理容器资源,例如在创建容器前准备资源,运行过程中更新资源,容器退出后清理资源。iSulad 新架构图1. iSulad 架构对比图在 Kuasar 发布以后,iSulad 第一时间采用了新的架构以支持 Sandbox API ,使得它能够通过 Kuasar 来直接管理沙箱。为保持已有版本的兼容性与稳定性,iSulad 只对 CRI V1 版本进行了重构升级,支持用户使用 Sandbox API 管理沙箱。CRI V1alpha 版本继续沿用 OCI 标准来处理沙箱管理请求。沙箱与容器的解耦 在新的架构中,iSulad 引入了 Sandbox 的语义,新增核心模块 Sandbox ,使其成为容器引擎的一等公民,实现了容器管理与沙箱管理的解耦。从云原生整体架构的角度看,容器编排组件、容器引擎和容器运行时之间的沙箱管理变得更加流畅和高效,形成了一个完整的沙箱管理链路。以 iSulad+Kuasar+StratoVirt 极速轻量的安全容器解决方案为例,iSulad 在北向接收来自 Kubernetes 的 CRI 请求,并创建 Sandbox 对象来处理 PodSandbox 相关调用,同时使用 Executor 模块来处理 CRI 的 Container 请求。在南向,使用 Controller 模块通过 Sandbox API 调用 Kuasar 的 Sandboxer 进程来管理沙箱,同时使用 Runtime 中的 Shim V2 模块来调用 Kuasar 的 Task 进程,实现了对 StratoVirt 虚拟机中容器的管理。沙箱控制器 图2. 沙箱控制器类图Sandbox API 的实现使 iSulad 能够直接通过 Controller 来管理沙箱,因此 Kuasar 容器运行时也无需创建 Pause 容器以兼容 OCI 标准,避免了 Pause 容器的冗余。在新架构中,Controller 模块的设计充分考虑了对原有沙箱管理功能的兼容性,即支持用户通过Sandbox 和 Controller 模块创建普通容器(Pause 容器)作为沙箱。如上图所示,Controller 模块对 Sandbox 提供了统一 Controller 接口,以及两种不同的实现:Sandboxer Controller 和 Shim Controller 。Sandboxer Controller 是对 Sandbox API 的封装,将用户对沙箱的管理请求通过 gRPC 接口转发给 Kuasar 的 Sandboxer 进程,从而使 Sandboxer 执行底层的沙箱管理逻辑。Shim Controller 兼容原有的基于容器管理的接口,将对 Sandbox 的管理请求转发给 Executor 模块,以便创建和管理基于 Pause 容器的沙箱。Shim Controller 的实现使用户能够在新的架构下继续使用 OCI 标准接口来管理沙箱,以兼容原有已部署的业务,确保功能的连续性。Sandbox 和 Controller 的详细设计可以参见 iSulad 社区的设计文档[8]。简化容器调用链 图3. 容器启动流程图在支持了 Sandbox API 以后,iSulad 的容器管理流程也发生了一些变化。上图以 iSulad+Kuasar+StratoVirt 解决方案为例,展示了 iSulad 从启动沙箱到启动容器的简化流程。在图中,Kuasar Task 充当虚拟机中的 init 进程,同时也是虚拟机沙箱内容器的管理进程。它向 iSulad 提供容器管理接口 Task API ,当前解决方案中的 Task API 接口的实现与 Shim V2 类似但又不完全相同。根据 Shim V2 规范,容器引擎会调用一个 Shim V2 的二进制,创建 Shim 进程并返回 Shim 地址,用于管理沙箱、容器和资源。然而,通过调用 Sandbox API,iSulad 不再需要通过 Shim 进程来管理沙箱。相反,Sandbox API 的 Start 接口会在启动沙箱后返回一个 Task 地址,使 iSulad 能够与虚拟机中的 Kuasar Task 进程直接通信,以管理容器的生命周期。这种设计消除 Shim 进程以减少了管理面的内存开销并缩短调用链,从而提高了整个解决方案的性能和稳定性。总结 Sandbox API 是 iSulad、Kuasar 和 StratoVirt 这三个组件构成的极速轻量的安全容器解决方案的核心纽带。通过 Sandbox API,容器引擎能够直接对沙箱进行管理,无需通过 OCI 标准接口间接管理沙箱,从而显著提高了容器引擎的性能和稳定性。Sandbox API 的引入,也为容器引擎和容器运行时之间的沙箱管理提供了一个标准化的接口,为容器领域的发展提供了新的可能性。当前 Sandbox API 的实现已经合入了 iSulad 社区的主线,用户可以通过 openEuler 23.09 体验这一全栈自研的极速轻量安全容器解决方案,具体可参见 Kuasar 系列文章[6]。openEuler 社区一直秉承开放、协作、共赢的理念,欢迎更多的开发者参与到 iSulad、Kuasar 和 StratoVirt 的建设中来,共同推动容器领域的繁荣发展。参考[1] OCI Runtime Spec: cid:link_3[2] iSulad+Kuasar:管理面资源消耗锐减 99% 的新一代统一容器运行时解决方案 :cid:link_5[3] Sandbox API : cid:link_4[4] 多沙箱容器运行时 Kuasar 技术揭晓!100% 启动速度提升,99% 内存开销优化 :cid:link_6[5] iSulad: cid:link_9[6] openEuler 23.09 一键部署基于 Kuasar 的极速轻量安全容器:cid:link_7[7] sandbox.proto: cid:link_1[8] iSulad Sandbox 设计文档:cid:link_2本文转载自openEuler,原文链接Kuasar社区技术交流地址Kuasar官网:https://kuasar.io项目地址:cid:link_8Twitter: https://twitter.com/Kuasar_io添加社区小助手回复“Kuasar”进入技术交流群
  • [公告] 【获奖公示】5.17号直播/DTSE Tech Talk丨NO.28:多沙箱容器运行时Kuasar开发上手实践
    <获奖名单>账号名 奖项名称 奖品名称hid_fss51f53kiqg_ln 视频号抽奖 开发者定制鼠标垫hid_xz84-2d6qhm7485 视频号抽奖 开发者定制鼠标垫hid_gzxlh0rqtnun8q6 视频号抽奖 开发者定制鼠标垫hw096380810 视频号抽奖 开发者定制鼠标垫csdn_zeke 报名转发 开发者定制鼠标垫hw81541353 优质提问 HDC开发者定制长袖圆领卫衣yaoyao15 分享问卷 HDC开发者定制短袖T恤shuyao25 分享问卷 HDC开发者定制短袖T恤Yvan1010 分享问卷 HDC开发者定制短袖T恤CSDN-weixin_65950231 分享问卷、问卷抽奖 HDC开发者定制短袖T恤、开发者定制双肩包/ 官网抽奖 开发者定制鼠标垫/ 官网抽奖 开发者定制鼠标垫linghz666 官网抽奖、老观众专属 开发者定制鼠标垫、DTT定制T恤hhshaha888 官网抽奖 开发者定制双肩包