摘要:2022年9月29日,KubeEdge發布1.12版本,新版本新增多個增強功能,在擴展性、穩定性、安全性上均有大幅提升,
本文分享自華為云社區《KubeEdge 1.12版本發布,穩定性、安全性、可擴展性均帶來大幅提升》,作者:云容器大未來,
北京時間2022年9月29日,KubeEdge發布1.12版本,新版本新增多個增強功能,在擴展性、穩定性、安全性上均有大幅提升,
KubeEdge v1.12 新增特性:
? 全新的邊緣設備管理介面DMI
? 全新的Edged實作
? EdgeMesh支持高可用(HA)模式
? 支持批量遠程升級邊緣節點
? 邊緣原生介面支持認證鑒權
? CloudHub可靠性增強
? 新增攝像頭介面標準GigE的 Mapper實作
新特性概覽
全新的云原生邊緣設備管理介面DMI
1.12版本中,對全新的云原生邊緣設備管理標準Device Management Interface(DMI),提供了Alpha版本支持,DMI讓設備管理者可以用云原生的方式對邊緣設備進行管理,它的設計覆寫了設備生命周期管理、設備資料管理,且解耦了管理面與資料面資料,使KubeEdge的邊緣設備管理更穩定、易插拔、更具擴展性,目前本版本支持了邊緣設備生命周期管理能力,邊緣設備資料管理能力正在實作中,
設備生命周期管理(管理面)
北向依舊通過CRD使用Kubernetes擴展API來管理邊緣設備生命周期;南向提供了統一的邊緣設備生命周期管理相關的gRPC介面,包括設備注冊、設備更新、設備洗掉、設備狀態更新等,邊緣設備開發者可以以更統一、更靈活、更標準化的方式來開發Device Mapper,
設備資料管理(資料面)
解耦了設備管理面與資料面,資料面資訊可以通過配置靈活地選擇在邊端被處理或通過資料面通道在云端處理,管理面的云邊通道僅傳輸少量的管控資訊,大幅降低了云邊通道擁塞的風險,提高了KubeEdge系統的穩定性,
DMI支持用戶通過多種形式對邊緣設備資料進行訪問,包括:
1、Device as a Service(DaaS),通過Service的方式訪問、拉取邊緣設備資料;
2、通過配置規則的方式,將采集到的設備資料推送到指定接收者
資料消費者包括:云端設備資料消費者應用、邊緣端設備資料消費者應用、第三方資料消費者應用、資料流轉平臺broker、云端或邊緣端資料持久化資料庫等,
通過DMI介面,開發者只需按照DMI介面標準實作對應協議的Mapper,并在云上執行相應的API操作,就能夠將設備接入到KubeEdge中來,享受KubeEdge邊緣計算平臺帶來的云原生設備管理體驗,
更多資訊可參考: https://github.com/kubeedge/kubeedge/pull/4013
全新的Edged實作
Edged模塊是邊緣側的輕量化容器應用引擎,用于實作邊緣Pod應用的生命周期管理,以及Node狀態收集與上報等能力,新版的Edged為了保證邊緣的輕量化,在原生Kubelet中做了優化與裁剪,并保留了裁剪歷史記錄(Commit History),最終直接呼叫Kubelet入口的Run函式啟動以集成在EdgeCore中,
新版的Edged,由于保留了對Kubelet的裁剪歷史記錄(Commit History),用戶和開發者可以根據歷史記錄了解裁剪點,直接呼叫Kubelet入口的Run函式啟動,減少了對Kubelet的侵入修改,將大大簡化后續K8s版本依賴升級,也可將上游K8s漏洞修復及時全量同步到KubeEdge版本,
新版Edged的配置引數也與Kubelet保持一致,為了保持KubeEdge可靠的云邊訊息傳輸和邊緣自治能力,在新版Edged中,我們仍然通過通過云邊可靠通道傳輸應用、節點相關元訊息,并將元資料存入邊緣資料庫,
對Kubelet的優化與裁剪,在KubeEdge組織下的Kubernetes倉庫維護了裁剪后的版本,開發者可以通過commit提交記錄查看裁剪記錄,后續也可以根據需求自主調整裁剪內容,v1.12版本主要裁剪了Kubelet中在邊緣不會使用到的特性、第三方內置存盤、Cloud Provider等,更多裁剪詳情可以參考:https://github.com/kubeedge/kubernetes/commits/v1.22.6-kubeedge1,
EdgeMesh支持高可用(HA)模式
EdgeMesh作為KubeEdge集群的資料面組件,為應用程式提供了服務發現與流量代理功能,穩定與高效的流量轉發是用戶對EdgeMesh的核心訴求,1.12版本的EdgeMesh新增了HA模式的部署方式,以支持EdgeMesh中繼節點的高可用性,
HA部署模式下的EdgeMesh可以避免中繼節點的單點故障問題,同時將中繼轉發與協助網路穿透的能力從edgemesh-server移入到edgemesh-agent中,使得具備中繼能力的edgemesh-agent能夠自動承擔起中繼節點的角色,因此用戶可以在合適的位置設定具備中繼能力的edgemesh-agent以分擔云端中繼節點的負載,同時也能解決過遠的中繼節點帶來的長時延問題,在多中繼節點下,EdgeMesh系統運行時能夠自動選擇一個最優的中繼節點運行轉發流量或協助網路穿透的功能,
用戶在升級到v1.12.0版本的EdgeMesh時,默認無需再部署edgemesh-server,升級時需要配置中繼節點表relayNodes中的nodeName和advertiseAddress引數以指定中繼節點和其公網IP地址,通過Helm安裝命令示例如下:
helm install edgemesh --namespace kubeedge \ --set agent.psk=<your psk string> \ --set agent.relayNodes[0].nodeName=k8s-master,agent.relayNodes[0].advertiseAddress="{1.1.1.1}" \ --set agent.relayNodes[1].nodeName=ke-edge1,agent.relayNodes[1].advertiseAddress="{2.2.2.2,3.3.3.3}" \ https://raw.githubusercontent.com/kubeedge/edgemesh/main/build/helm/edgemesh.tgz
中繼節點表relayNodes支持指定多個中繼節點,每個中繼節點支持配置多個公網IP地址,如果后續有新的中繼節點加入,可以通過執行kubectl -n kubeedge edit configmap edgemesh-agent-cfg編輯中繼節點表relayNodes添加新的中繼節點,EdgeMesh能夠自動熱加載此配置,
更多資訊可參考proposal: https://github.com/kubeedge/edgemesh/pull/372
支持批量遠程升級邊緣節點
KubeEdge集群常常管理數以萬計分散的遠程邊緣節點,如何對這些節點實作方便快捷的升級更新是一個不小的挑戰,1.12版本中新增了NodeUpgradeJob API及其Controller來實作云上批量遠程升級邊緣節點,
用戶可以通過在云上創建NodeUpgradeJob來創建升級任務,用戶可以指定升級的節點范圍以及升級版本號等內容,例如以下配置表示升級edge-node1及edge-node2兩個邊緣節點到版本v1.12.0,升級結果將會顯示在status欄位中,用戶可以通過執行kubectl get nodeupgradejob upgrade-example -oyaml命令來查看升級結果,
apiVersion: operations.kubeedge.io/v1alpha1 kind: NodeUpgradeJob metadata: name: upgrade-example labels: description: upgrade-label spec: version: "v1.12.1" timeoutSeconds: 60 nodeNames: - edge-node1 - edge-node2
該特性處于alpha版本,用戶需要手動啟用該功能,如下所示在cloudcore.yaml組態檔中將nodeUpgradeJobController模塊置為true以啟用該功能,
nodeUpgradeJobController: enable: true buffer: nodeUpgradeJobEvent: 1 updateNodeUpgradeJobStatus: 1024 load: nodeUpgradeJobWorkers: 1
更多資訊可參考proposal: https://github.com/kubeedge/kubeedge/pull/3822
邊緣原生介面支持認證鑒權
在邊緣側,EdgeCore組件通過MetaServer模塊對外提供邊緣原生介面能力,為了鞏固和加強邊緣側的安全,在用戶使用邊緣原生介面訪問原生K8s API時,需要對用戶請求進行認證和鑒權,
新版本MetaServer可通過HTTPS方式啟動并提供服務,用戶的請求需要經過Token方式鑒權,未經過認證或鑒權的請求將無法訪問,出于安全性考慮,Token鑒權方式在當前版本中要求邊緣節點保持在線狀態,離線場景下的鑒權請求將默認被拒絕,
新增的認證鑒權特性當前處于Alpha階段,通過特性開關(featuregate)requireAuthorization來控制,默認是關閉狀態,即用戶默認仍然可通過監聽在localhost的HTTP介面進行無鑒權訪問,用戶可以在CloudCore、EdgeCore的組態檔中配置開啟該特性,
apiVersion: edgecore.config.kubeedge.io/v1alpha1 kind: EdgeCore featureGates: requireAuthorization: true ---------------- apiVersion: cloudcore.config.kubeedge.io/v1alpha1 kind: CloudCore featureGates: requireAuthorization: true
細節可參考 https://github.com/kubeedge/kubeedge/issues/4108
CloubHub可靠性增強
在大量KubeEdge使用場景中,邊緣設備物理位置高度分散,并處于不穩定的物理環境中,因此云邊通信網路質量較差,面臨著高時延、網路中斷、閃斷閃連等問題,在KubeEdge中,CloudHub是云邊之間通信的橋梁,負責邊緣設備的連接管理和分發上下行的云邊訊息,在1.12版本中,我們重構了CloudHub模塊,增強了在上述極端場景下CloudHub的穩定性和魯棒性,
更多資訊可參考: https://github.com/kubeedge/kubeedge/pull/4087
新增攝像頭介面標準GigE的 Mapper實作
KubeEdge支持多種協議的邊緣設備接入,GigE Vision是一種攝像頭介面標準,在工業機器視覺產品中有廣泛的應用,在這個版本中,我們提供了基于GigE協議開發的Mapper,GigE Mapper可以支持GigE視覺協議攝像機、工業相機設備接入KubeEdge,它使用第三方開源攝像機SDK庫rc_genam_api,通過GeniCam協議訪問不同廠商的攝像機,
每個GigE Mapper可以支持多個攝像頭同時連接,通過設備SN來區分不同的攝像頭設備,還可以通過KubeEdge北向介面,以CRD的形式來對攝像頭引數進行配置,通過GigE Mapper管理攝像頭,還支持攝像頭捕獲功能,支持匯出PNG和PNM影像格式,目前測驗了兩種型號的攝像機,Basler acA640和HIKROBOT MV-CA050-12GC,
GigE Mapper是基于KubeEdge社區提供的Mapper開發框架Mapper-SDK-GO來開發實作的,使用Mapper-SDK-GO框架可以一鍵生成Mapper程式的主體內容,開發者只需要完成幾個關鍵介面的對應協議的實作,即可開發出對應協議接入的Mapper,非常方便,
版本升級注意事項
- EdgeCore的配置引數已經升級到v1alpha2版本,如果需要升級節點到v1.12,為了適配新版Edged,您需要手動修改EdgeCore中Edged模塊的配置引數,
- 如果使MetaServer提供的邊緣原生介面進行認證鑒權,您需要在CloudCore和EdgeCore的組態檔中將RequireAuthorization 特性開關打開,一旦開啟,MetaServer只能以HTTPS訪問,
- 如果要將EdgeMesh升級到v1.12,不需要部署現有的EdgeMesh-Server,且需要配置relayNodes,
- 如果要在 KubeEdge v1.12 上運行 EdgeMes??h v1.12,并使用 https 請求與 KubeEdge 通信,則必須對EdgeMesh設定 kubeAPIConfig.metaServer.security.enable=true,
致謝
感謝KubeEdge社區技術指導委員會(TSC)、各SIG成員對v1.12版本開發的支持與貢獻,未來KubeEdge將持續在新場景探索與支持、穩定性、安全性、可擴展性等方面持續發展與演進!
相關鏈接
Release Notes:https://github.com/kubeedge/kubeedge/blob/master/CHANGELOG/CHANGELOG-1.12.md
GigE Mapper: https://github.com/kubeedge/mappers-go/tree/main/mappers/gige
Mapper-SDK-GO:https://github.com/kubeedge/mappers-go/tree/main/mapper-sdk-go
關于?KubeEdge
KubeEdge是業界首個云原生邊緣計算框架、云原生計算基金會內部唯一范訓級邊緣計算開源專案,社區已完成業界最大規模云原生邊云協同高速公路專案(統一管理10萬邊緣節點/50萬邊緣應用)、業界首個云原生星地協同衛星、業界首個云原生車云協同汽車、業界首個云原生油田專案,開源業界首個分布式協同AI框架Sedna及業界首個邊云協同終身學習范式,并在持續開拓創新中,
KubeEdge網站 : https://kubeedge.io
GitHub地址 : https://github.com/kubeedge/kubeedge
Slack地址 : https://kubeedge.slack.com
郵件串列 : https://groups.google.com/forum/#!forum/kubeedge
每周社區例會 : https://zoom.us/j/4167237304
Twitter : https://twitter.com/KubeEdge
檔案地址 : https://docs.kubeedge.io/en/latest/
點擊關注,第一時間了解華為云新鮮技術~
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/514188.html
標籤:其他
