摘要
SuperEdge 是基于原生 Kubernetes 的分布式邊緣云容器管理系統(tǒng),由騰訊云牽頭,聯(lián)合英特爾、VMware 威睿、虎牙、寒武紀(jì)、美團(tuán)、首都在線(xiàn)等多家廠(chǎng)商在2020年12月共同發(fā)起的邊緣計(jì)算開(kāi)源項(xiàng)目,旨在將把 Kubernetes 強(qiáng)大的容器管理能力無(wú)縫的擴(kuò)展到邊緣計(jì)算和分布式資源管理的場(chǎng)景中,為邊緣 IoT,邊緣 AI,邊緣智慧行業(yè)等賦能,推動(dòng)物聯(lián)網(wǎng)和數(shù)字化的落地。目前已成為 CNCF Sandbox 項(xiàng)目,由 CNCF 基金會(huì)進(jìn)行托管。
SuperEdge v0.7.0 版本正式發(fā)布
SuperEdge 在 2022-02-09 發(fā)布了 v0.7.0 版本,詳情掃下方二維碼了解。

本次版本主要是生產(chǎn)落地過(guò)程中功能的提煉,有邊緣站點(diǎn)資源的抽象和應(yīng)用的抽象,進(jìn)行資源和應(yīng)用的靈活搭配;有實(shí)例落地過(guò)程中用戶(hù)對(duì)邊緣應(yīng)用高可用和斷網(wǎng)更新的實(shí)際需求;有邊緣 Webhook 無(wú)感知訪(fǎng)問(wèn)訴求的解決;有社區(qū)強(qiáng)烈呼吁的 K8s 的1.20版本、Containerd 運(yùn)容器行時(shí),云邊節(jié)點(diǎn)混部……功能。也有 WasmEdge、GPU 和 NANO-GPU、云邊互通 Fabedge 的使用案例,以下是功能細(xì)節(jié):
新的功能點(diǎn)
(1)通過(guò) NodUnit 和 NodeGroup CRD 去管理邊緣眾多的站點(diǎn)資源
用 NodeUnit 的 CR 代表一個(gè)邊緣的邏輯站點(diǎn);
用 NodeGroup 的 CR 代表?yè)碛型粚傧嗟倪吘壵军c(diǎn),比如所有擁有 GPU 的邊緣站點(diǎn);
NodeGroup 是邊緣資源的抽象,ServiceGroup 是邊緣應(yīng)用的抽象,兩者根據(jù)應(yīng)用的需要進(jìn)行不同資源屬性的綁定,將邊緣應(yīng)用調(diào)度到合理的邊緣節(jié)點(diǎn)上。
該功能使用文檔見(jiàn):
(2)支持云邊斷網(wǎng)邊緣 Pod 可更新
這個(gè)功能是邊緣應(yīng)用高可用的初版,邊緣應(yīng)用不同于 K8s 的原生應(yīng)用,硬搬 K8s 的原生應(yīng)用并不適合邊緣場(chǎng)景,特別是應(yīng)對(duì)邊緣應(yīng)用的高可用和彈性擴(kuò)展。
本功能本次只提供在云邊斷網(wǎng)時(shí),邊緣 Pod 可更新,主要是通過(guò) Static Pod 實(shí)現(xiàn)。后續(xù)還會(huì)提供更加優(yōu)雅的方式,以支持邊緣應(yīng)用的高可用和彈性擴(kuò)展。
該功能使用文檔見(jiàn):
(3)支持 kube-apiserver 訪(fǎng)問(wèn)邊緣側(cè)的 webhook
在邊緣應(yīng)用中存在 webhook,那么 kube-apiserver 是無(wú)法直接訪(fǎng)問(wèn)到的。本次在 tunnel 中支持了 ANP,通過(guò) kube-apiserver 的EgressSelector 功能把請(qǐng)求邊側(cè) webhook 的請(qǐng)求通過(guò) Tunnel 轉(zhuǎn)發(fā)給邊緣,實(shí)現(xiàn)了邊緣集群中 webhook 的無(wú)感知訪(fǎng)問(wèn)。
該功能使用文檔見(jiàn):
(4)edge-health 支持用戶(hù)自定義 Check 插件
edge-health 是定時(shí) Check 邊緣站點(diǎn)內(nèi)節(jié)點(diǎn)健康狀況的組件。本次借助kube-scheduler 的 out-of-tree 插件注冊(cè)思想,實(shí)現(xiàn)了 edge-health 的自定義插件功能。用戶(hù)無(wú)須修改 edge-health 的源碼,便可注冊(cè)自己的 Check 邏輯。
(5)支持 Kubernetes v1.20.6 版本
本次支持了 Kubernetes 的 v1.20.6 版本,目前社區(qū)提供了 Kubernetes 的 v1.18.2和 Kubernetes 的 v1.20.6 eageadm 的一鍵部署,其他版本可按用 edgeadm 一鍵安裝邊緣 K8s 集群和原生 K8s 集群,SuperEdge 需要做組件代碼的升級(jí),感興趣的同學(xué)也可來(lái)社區(qū),為 SuperEdge 做出您的貢獻(xiàn)。
用 edgeadm 一鍵安裝邊緣 K8s 的安裝包可執(zhí)行如下命令下載,注意機(jī)器的體系:
arch=amd64 version=v0.7.0 kubernetesVersion=1.20.6 && rm -rf edgeadm-linux-* && wget https://attlee-1251707795.cos.ap-chengdu.myqcloud.com/superedge/$version/$arch/edgeadm-linux-$arch-$version-k8s-$kubernetesVersion.tgz && tar -xzvf edgeadm-linux-* && cd edgeadm-linux-$arch-$version-k8s-$kubernetesVersion && ./edgeadm
詳細(xì)安裝請(qǐng)參考用 edgeadm 一鍵安裝邊緣 K8s 集群和原生 K8s 集群,或者 SuperEdge的Quickstart[1]。
演示短視頻[2]:
以下視頻來(lái)源于
云原生學(xué)社
(6)支持 Containerd 容器運(yùn)行時(shí)
在用 edgeadm 一鍵安裝邊緣 K8s 集群和原生 K8s 集群時(shí),可通過(guò)參數(shù) --runtime=containerd/dockerd來(lái)選擇你需要的容器運(yùn)行時(shí),默認(rèn)--runtime=dockerd, dockerd 版本是19.03.8, cotainerd 版本是1.3.4, 其他版本可替換安裝包中的組件二進(jìn)制。
(7)支持在 SuperEdge 邊緣 K8s 集群里面同時(shí)添加原生 K8s 節(jié)點(diǎn)和邊緣 K8s 節(jié)點(diǎn)
在用 edgeadm 一鍵安裝邊緣 K8s 集群和原生 K8s 集群 時(shí),edgedam join 節(jié)點(diǎn)時(shí)可通過(guò)參數(shù) --enable-edge=true來(lái)選擇 Join 原生的 K8s 節(jié)點(diǎn)還是邊緣K8s節(jié)點(diǎn)。默認(rèn)--enable-edge=true Join 邊緣節(jié)點(diǎn),明確指定--enable-edge=falseJoin 原生的 K8s 節(jié)點(diǎn)。Join 原生 K8s 節(jié)點(diǎn)要注意 Join 的節(jié)點(diǎn)要和 Kubernetes master 二層網(wǎng)絡(luò)互通,也就是內(nèi)網(wǎng)互通,否則可當(dāng)邊緣節(jié)點(diǎn)處理。
(8)lite-apiserver 支持多網(wǎng)卡出口和使用 Pebble 作為存儲(chǔ)
lite-apiserver 是 SuperEdge 的邊緣自治組件,本次增強(qiáng)的重要功能如下:
lite-apiserver支持多網(wǎng)卡出口:因?yàn)樯a(chǎn)環(huán)境機(jī)器上通常會(huì)有多網(wǎng)卡,網(wǎng)絡(luò)質(zhì)量并不均等,為了保證 lite-apiserver 和云端 kube-apiserver 的質(zhì)量,可以通過(guò)--network-interface參數(shù)填入多個(gè)網(wǎng)卡,在多個(gè)網(wǎng)卡中選擇好的網(wǎng)絡(luò)質(zhì)量和kube-apiserver保持連接。當(dāng)然基于多網(wǎng)卡的功能擴(kuò)展也正在進(jìn)行。
lite-apiserver支持使用Pebble作為緩存存儲(chǔ):Pebble[3] 是受 LevelDB/RocksDB 啟發(fā)的鍵值存儲(chǔ),專(zhuān)注于 CockroachDB 的性能。
更多功能的詳細(xì)介紹,可查看SuperEdge changelog 0.7[4].