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

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