作者

SuperEdge 开发者团队

概要

SuperEdge 是 一个开源的分布式边缘计算容器管理系统,用于管理多个云边区域中的计算资源和容器应用。 在当前架构中,这些资源和应用能够作为一个 Kubernetes 原生的资源进行管理。

然而在某些情况下,边缘设备通常需要一些更加轻量、性能更好的运行时。也需要减少以 GB 为单位的容器镜像,将容器的启动时间提升到到秒级甚至毫秒级,而基于虚拟机堆栈二进制指令格式的 WebAssembly 可以更好地处理这种情况。

WasmEdge 是一个轻量级、高性能和可扩展的 WebAssembly 运行时,适用于云原生、边缘和去中心化应用程序。它是当今发展最快的 Wasm 运行时,社区活跃度也相当的高。

运行简图

Superedge 最近支持了 Containerd,在边缘节点我们将让 Containerd 使用 crun 来支持 WasmEdge 运行时。也就是说,按照这些步骤后,你的边缘节点可以同时支持 OCI 容器和 WASM 容器。

安装 SuperEdge 边缘 K8s 集群

  • 下载安装包
arch=amd64 version=v0.7.0 && rm -rf edgeadm-linux-* && wget https://superedge-1253687700.cos.ap-guangzhou.myqcloud.com/$version/$arch/edgeadm-linux-containerd-$arch-$version.tgz && tar -xzvf edgeadm-linux-* && cd edgeadm-linux-$arch-$version && ./edgeadm

注意选择机器架构对应的安装包,这个安装包默认带 Containerd 容器运行时。

  • 创建边缘集群
./edgeadm init --kubernetes-version=1.18.2 --image-repository superedge.tencentcloudcr.com/superedge --service-cidr=10.96.0.0/12 --pod-network-cidr=192.168.0.0/16 --install-pkg-path ./kube-linux-*.tar.gz --apiserver-cert-extra-sans=<Master Public IP> --apiserver-advertise-address=<Master Intranet IP> --enable-edge=true --runtime=containerd

注意带 --runtime=containerd 参数,表示使用 Containerd 容器运行时, --runtime=dockerd 表示使用 Docker容器运行时。

  • Join 边缘节点
./edgeadm join <Master Public/Intranet IP Or Domain>:Port --token xxxx --discovery-token-ca-cert-hash sha256:xxxxxxxxxx --install-pkg-path ./kube-linux-*.tar.gz --enable-edge=true --runtime=containerd

详细可查看 SuperEdge 官方文档一键安装原生的k8s集群和边缘K8s集群

安装 WasmEdge 运行环境

安装 WasmEdge

在边缘节点上使用脚本便可很轻松安装 WasmEdge,在边缘节点执行如下脚本:

curl -sSf https://raw.githubusercontent.com/WasmEdge/WasmEdge/master/utils/install.sh | bash

安装 crun

crun 项目内置了 WasmEdge 支持,但是默认的 crun release 没有把 wasmedge 模块编译进去,目前需要手动从源代码构建支持 WasmEdge 的 crun 二进制。 首先,确保在您的 Ubuntu 20.04 上安装了 crun 依赖项。对于其他 Linux 发行版请参阅 crun 的 README。

sudo apt update
sudo apt install -y make git gcc build-essential pkgconf libtool \libsystemd-dev libprotobuf-c-dev libcap-dev libseccomp-dev libyajl-dev \go-md2man libtool autoconf python3 automake

接下来,编译和安装 crun:

git clone https://github.com/containers/crun
cd crun
./autogen.sh
./configure --with-wasmedge
make
sudo make install

配置 Containerd 使用 crun 运行时

这里我们给出需要配置 Containerd 文件 /etc/containerd/config.toml 原始配置和配置之后的差异,用户可以按对比进行修改。

cat > config.toml.diff << EOF
--- /etc/containerd/config.toml 2022-02-14 15:05:40.061562127 +0800
+++ /etc/containerd/config.toml.crun    2022-02-14 15:03:35.846052853 +0800
@@ -24,17 +24,23 @@max_concurrent_downloads = 10[plugins.cri.containerd]
-        default_runtime_name = "runc"
-    [plugins.cri.containerd.runtimes.runc]
+        default_runtime_name = "crun"
+    [plugins.cri.containerd.runtimes.crun]runtime_type = "io.containerd.runc.v2"
-      pod_annotations = []
+      pod_annotations = ["*.wasm.*", "wasm.*", "module.wasm.image/*", "*.module.wasm.image", "module.wasm.image/variant.*"]container_annotations = []privileged_without_host_devices = false
-      [plugins.cri.containerd.runtimes.runc.options]
-        BinaryName = "runc"
+      [plugins.cri.containerd.runtimes.crun.options]
+        BinaryName = "crun"# cni[plugins.cri.cni]bin_dir = "/opt/cni/bin"conf_dir = "/etc/cni/net.d"conf_template = ""+  [plugins."io.containerd.runtime.v1.linux"]
+    no_shim = false
+    runtime = "crun"
+    runtime_root = ""
+    shim = "containerd-shim"
+    shim_debug = false
EOF

最后重启下 Containerd 容器运行时

sudo patch -d/ -p0 < config.toml.diff
sudo systemctl restart containerd

创建 WASM 应用

我们将使用已经在 dockerhub 上的一个wasm示例镜像wasm-wasi-example。这里 wasm 镜像需要在镜像的Manfest文件中增加一个"module.wasm.image/variant":"compat"的 Annotation 让运行时区分出 wasm 和操作系统运行时,因此 docker build 功能是没法满足的,可以使用buildah来构建 wasm 镜像并 push 到任意 OCI 标准的镜像仓库中。

cat > wasmedge-app.yaml << EOF
apiVersion: v1
kind: Pod
metadata:annotations:module.wasm.image/variant: compatlabels:run: wasi-demoname: wasi-demo
spec:containers:- args:- /wasi_example_main.wasm- "50000000"image: hydai/wasm-wasi-example:with-wasm-annotationimagePullPolicy: IfNotPresentname: wasi-demohostNetwork: truerestartPolicy: Never
EOFkubectl create -f wasmedge-app.yaml

可用 kubectl logs wasi-demo 看到这个程序输出如下内容:

Random number: -1643170076
Random bytes: [15, 223, ... 106, 51]
Printed from wasi: This is from a main function
This is from a main function
The env vars are as follows.
The args are as follows.
/wasi_example_main.wasm
50000000
File content is This is in a file

未来

随着更广泛的边缘设备接入,更多的边缘场景覆盖的要求,SuperEdge 在边缘计算运行时不仅支持传统的 docker 和 containerd 等,现在还可以支持各种 WebAssembly 运行时(WasmEdge),也会持续为广大开发者创造充满想象力且无限可能的边缘计算和调度平台。

关于我们

更多关于云原生的案例和知识,可关注同名【腾讯云原生】公众号~

福利:

①公众号后台回复【手册】,可获得《腾讯云原生路线图手册》&《腾讯云原生最佳实践》~

②公众号后台回复【系列】,可获得《15个系列100+篇超实用云原生原创干货合集》,包含Kubernetes 降本增效、K8s 性能优化实践、最佳实践等系列。

③公众号后台回复【白皮书】,可获得《腾讯云容器安全白皮书》&《降本之源-云原生成本管理白皮书v1.0》

④公众号后台回复【光速入门】,可获得腾讯云专家5万字精华教程,光速入门Prometheus和Grafana。

⑤公众号后台回复【精选集】,可获得腾讯24位腾讯云专家精彩演讲——4万字《腾讯云技术实践精选集 2021》。

【腾讯云原生】云说新品、云研新术、云游新活、云赏资讯,扫码关注同名公众号,及时获取更多干货!!

SuperEdge: 使用WebAssembly扩展边缘计算场景相关推荐

  1. 边缘计算场景下云边端一体化的挑战与实践

    本文整理自腾讯云专家工程师王继罗在 2020年12月深圳 Qcon 大会上的分享内容--边缘计算场景下云边端一体化的挑战与实践 . 边缘计算想必大家都已经听过了,但是如何将业务扩展到边缘,从而实现更大 ...

  2. KubeEdge vs K3S:Kubernetes在边缘计算场景的探索

    作者 | Edge Captain 近期两个 Kubernetes 相关的软件 KubeEdge 和 K3S 分别开源,Kubernetes 开始在边缘计算场景探索应用. KubeEdge 是华为捐献 ...

  3. Kubernetes(简称K8s)将被带入到物联网边缘计算场景中

    作者:物女王(彭昭)      物联网智库 原创 最近在边缘计算领域,发生了一次具有非凡意义的合作,有可能以节点的身份被载入物联网史册. 两大著名开源组织,Linux基金会和Eclipse基金会正在合 ...

  4. 聚焦边缘计算场景,打造云边端一体化容器云平台

    随着大带宽.低延时.多连接的应用场景迎来爆发,CDN的技术底座不断向边缘演进.当前边缘计算已经成为企业关键增长要素,驱动全球企业级基础架构市场持续增长,为构建分布式云提供最直接.距离最近的算力支持. ...

  5. 边缘计算机大会,视美泰边缘计算盒新品首发,“双”旗舰惊艳亮相2021 GECC全球边缘计算大会,为边缘计算场景增添新-文章-数字音视工程网DAV01.COM...

    视美泰受邀参加此次盛会,在2021全球边缘计算大会现场携边缘计算盒"双"旗舰新品全球首次公开亮相,全方位展示突破性创新产品及技术解决方案,为现场各方来宾带来一场科技盛宴. 2021 ...

  6. 边缘计算k8s集群之SuperEdge

    什么是边缘计算 边缘计算,是指在靠近物或数据源头的一侧,采用网络.计算.存储.应用核心能力为一体的开放平台,就近提供最近端服务.其应用程序在边缘侧发起,产生更快的网络服务响应,满足行业在实时业务.应用 ...

  7. ​冲刺最后一公里——音视频场景下的边缘计算实践

    点击上方"LiveVideoStack"关注我们 近年来,边缘计算逐渐从未来风口变成了进行时,而内容分发这个天生与"下沉"密不可分的领域,在边缘计算实践中可谓一 ...

  8. SuperEdge正式成为CNCF沙箱项目,腾讯云携手六家厂商在边缘计算领域踏入新篇章

    刚刚获悉,分布式云原生边缘容器开源项目SuperEdge通过了全球顶级开源基金会云原生计算基金会(CNCF)技术监督委员会评定,正式成为CNCF 沙箱项目.这不仅意味着SuperEdge得到了云原生开 ...

  9. 2022云原生网络趋势 | K8s托管整个基础设施、多云、边缘计算、安全等场景,将云原生网络带向新战场

    云原生技术在飞速发展的过程中不断地进入更多的行业和领域,作为云原生网络发展的见证者.亲历者,Kube-OVN Team对大量用户的技术选型.应用场景.落地实践经验进行分析,看到了一套不同于以往的网络发 ...

最新文章

  1. html5搜索框美化,CSS美化的漂亮搜索框
  2. IOS怎么判断网络连接
  3. “跟着菜鸟一起学R语言” 现已更名为“数据志”
  4. UIImageView加上圆角
  5. Python文件读写时的换行符与回车符
  6. 【Python】Tkinter图形界面设计(GUI)
  7. 使用QHttp与C#编写的服务端交互(编译环境mingw)
  8. 扩展欧几里得算法(双六游戏)
  9. 爬虫入门之urllib库详解(二)
  10. python网络编程相关
  11. FreeMarker语法之表达式(二)
  12. 数据库篇——学生基本信息录入系统
  13. 虚拟机usb服务器,VM虚拟机支持USB启动的方法
  14. SYN cookie
  15. 应用html的DIV+CSS制作牛顿摆
  16. 常见的数据库有哪些?
  17. 基于STM32的ESP8266天气时钟(2)--------MCU获取天气数据
  18. 颜色恒常性CVPR2020 Multi-Domain Learning for Accurate and Few-Shot Color Constancy阅读笔记
  19. 【java生成批次号】
  20. JAVA 技术方向赏金任务-快递 E 栈训练任务

热门文章

  1. 学习商业思维的重要性
  2. 【华为OD机试】1030 - 图片整理
  3. CSS3 box-shadow图层阴影
  4. python:第一天作业
  5. 尝试一晚上终于得到了enjoy-Ubuntu中安装VMware Tools
  6. Spring框架(JavaEE开发进阶Ⅲ)—基础和IoC
  7. 联合深度以及法向图优化的ToF深度估计:Joint Depth and Normal Estimation from Real-world Time-of-flight Raw Data
  8. ZX Messenger 9.0 发布
  9. python打印五子棋棋盘(简易)
  10. BUUCTF-MISC-[SWPU2019]我有一只马里奥~sqltest