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

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