天天看點

KubeEdge簡介,優勢,應用場景及特點一、KubeEdge簡介二、為什麼選擇KubeEdge三、應用場景、特點參考連結

中文官網:https://kubeedge.io/zh/

英文官網:https://kubeedge.io/en/

kubeedge是一個開源系統,用于将容器化應用程式編排功能擴充到edge的主機。它基于kubernetes建構,并為網絡應用程式提供基礎架構支援。雲和邊緣之間的部署和中繼資料同步。

kubeedge使用apache 2.0許可。并且絕對可以免費用于個人或商業用途。

宗旨:建立一個開放平台,使能邊緣計算,将容器化應用編排功能擴充到邊緣的節點和裝置,後者基于kubernetes建構,并為雲和邊緣之間的網絡,應用部署和中繼資料同步提供基礎架構支援。

100%相容k8s api,可以使用k8s api原語管理邊緣節點和裝置。kubeedge 還支援 mqtt 協定,允許開發人員編寫客戶邏輯,并在邊緣端啟用裝置通信的資源限制。

kubeedge項目緻力于打造一個基于kubernetes的開放平台,并為網絡應用提供基礎架構支援。雲和邊緣之間的部署和中繼資料同步。

eclipse mosquitto是一個開源(epl / edl許可)消息代理,它實作了mqtt協定版本3.1和3.1.1。 mosquitto重量輕,适用于從低功率單闆計算機到完整伺服器的所有裝置。

使用容器可以更快地建構和部署新應用程式。 docker容器将軟體及其依賴關系整合到一個标準化的軟體開發單元中,包括運作所需的一切:代碼,運作時,系統工具和庫。

kubeedge 是一個開源系統,将原生的容器化的業務流程和裝置管理功能擴充到邊緣節點。kubeedge是基于kubernetes建構的,并為雲,邊緣之間的網絡通信,應用程式部署以及中繼資料同步提供核心基礎架構支援。同時kubeedge還支援mqtt,并允許開發人員編寫自定義邏輯并在edge上啟用一定資源的裝置進行通信。

kubeedge由雲端和邊緣端組成。目前邊緣端和雲端已開源。

此部分内容參考:kubeedge詳解

kubernetes + 容器的組合大大提高了使用者建立部署應用的效率。kubernetes 可以把 n 台主機整合成一個叢集,使用者在 master 節點上通過編寫一個 yaml 或者 json 格式的配置檔案,也可以通過指令等請求 kubernetes api 建立應用,就直接将應用部署到叢集上的各個節點上,該配置檔案中還包含了使用者想要應用程式保持的狀态,進而生成使用者想要的環境。

kubernetes 作為容器編排的标準,自然會想把它應用到邊緣計算上,即通過 kubernetes 在邊緣側部署應用,但是 kubernetes 在邊緣側部署應用時遇到了一些問題,例如:

邊緣側裝置沒有足夠的資源運作一個完整的 kubelet

一些邊緣側裝置是 arm 架構的,然而大部分的 kubernetes 發行版并不支援 arm 架構

邊緣側網絡很不穩定,甚至可能完全不通,而 kubernetes 需要實時通信,無法做到離線自治

很多邊緣裝置都不支援tcp/ip 協定

kubernetes 用戶端(叢集中的各個node節點)是通過 list-watch 去監聽 master 節點的 apiserver 中資源的增删改查,list-watch 中的 watch 是調用資源的 watch api 監聽資源變更事件,基于 http 長連接配接實作,而維護一個 tcp 長連接配接開銷較大。進而造成可擴充性受限。

為了解決包含但不限于以上 kubernetes 在物聯網邊緣場景下的問題,進而産生了kubeedge 。對應以上問題:

kubeedge 保留了 kubernetes 的管理面,重新開發了節點 agent,大幅度優化讓邊緣元件資源占用更低很多

kubeedge 可以完美支援 arm 架構和 x86 架構

kubeedge 有離線自治功能,可以看 metamanager 元件的介紹

kubeedge 豐富了應用和協定支援,目前已經支援和計劃支援的有:mqtt、bluetooth、opc ua、modbus等。

kubeedge 通過底層優化的多路複用消息通道優化了雲邊的通信的性能,可以看 edgehub 元件的介紹

kubeedge的優勢主要包括:

邊緣計算

借助在edge上運作的業務邏輯,可以讓本地生成的資料,進行大量資料處理操作并對其進行保護。這樣可以減少邊緣和雲之間的網絡帶寬需求和消耗,提高響應速度,降低成本并保護客戶的資料隐私。

簡化開發

開發人員可以編寫基于http或mqtt的正常應用程式,對其進行容器化,然後在edge或cloud中的任何一個更合适的位置運作應用程式。

kubernetes原生支援

借助kubeedge,使用者可以像在傳統的kubernetes叢集一樣,在edge節點上編排應用程式,管理裝置并監視應用程式和裝置狀态。

豐富的應用

可以輕松地将現有的複雜機器學習,圖像識别,事件處理等其他進階應用程式部署到edge。

kubeedge由以下元件組成:

edged: 在邊緣節點上運作并管理容器化應用程式的代理。

edgehub: web套接字用戶端,負責與cloud service進行互動以進行邊緣計算(例如kubeedge體系結構中的edge controller)。這包括将雲側資源更新同步到邊緣,并将邊緣側主機和裝置狀态變更報告給雲。

cloudhub: web套接字伺服器,負責在雲端緩存資訊、監視變更,并向edgehub端發送消息。

edgecontroller: kubernetes的擴充控制器,用于管理邊緣節點和pod的中繼資料,以便可以将資料定位到對應的邊緣節點。

eventbus: 一個與mqtt伺服器(mosquitto)進行互動的mqtt用戶端,為其他元件提供釋出和訂閱功能。

devicetwin: 負責儲存設備狀态并将裝置狀态同步到雲端。它還為應用程式提供查詢接口。

metamanager: edged端和edgehub端之間的消息處理器。它還負責将中繼資料存儲到輕量級資料庫(sqlite)或從輕量級資料庫(sqlite)檢索中繼資料。

KubeEdge簡介,優勢,應用場景及特點一、KubeEdge簡介二、為什麼選擇KubeEdge三、應用場景、特點參考連結

kubeedge 由以下元件構成:

cloudhub: cloudhub 是一個 web socket 服務端,用于大量的 edge 端基于 websocket 或者 quic 協定連接配接上來。負責監聽雲端的變化, 緩存并發送消息到 edgehub。

edgehub: 是一個 web socket 用戶端,負責将接收到的資訊轉發到各edge端的子產品處理;同時将來自個edge端子產品的消息通過隧道發送到cloud端。提供可靠和高效的雲邊資訊同步。

如何配置通信協定

edgecontroller: 用于控制 kubernetes api server 與邊緣的節點、應用和配置的狀态同步。

devicecontroller: devicecontroller 是一個擴充的 kubernetes 控制器,管理邊緣裝置,確定裝置資訊、裝置狀态的雲邊同步。

metamanager: metamanager 子產品後端對應一個本地的資料庫(sqllite),所有其他子產品需要與 cloud 端通信的内容都會被儲存到本地 db 種一份,當需要查詢資料時,如果本地 db 中存在該資料,就會從本地擷取,這樣就避免了與 cloud 端之間頻繁的網絡互動;同時,在網絡中斷的情況下,本地的緩存的資料也能夠保障其穩定運作(比如你的智能汽車進入到沒有無線信号的隧道中),在通信恢複之後,重新同步資料。是邊緣節點自治能力的關鍵;

edged: 是運作在邊緣節點的代理,用于管理容器化的應用程式。算是個重新開發的輕量化 kubelet,實作 pod,volume,node 等 kubernetes 資源對象的生命周期管理

eventbus: eventbus 是一個與 mqtt 伺服器(mosquitto)互動的 mqtt 用戶端,為其他元件提供訂閱和釋出功能。

servicebus: servicebus是一個運作在邊緣的http用戶端,接受來自雲上服務的請求,與運作在邊緣端的http伺服器互動,提供了雲上服務通過http協定通路邊緣端http伺服器的能力。

devicetwin: devicetwin 負責儲存設備狀态并将裝置狀态同步到雲,它還為應用程式提供查詢接口。

KubeEdge簡介,優勢,應用場景及特點一、KubeEdge簡介二、為什麼選擇KubeEdge三、應用場景、特點參考連結
KubeEdge簡介,優勢,應用場景及特點一、KubeEdge簡介二、為什麼選擇KubeEdge三、應用場景、特點參考連結

上圖是 華為雲ief 的應用場景,kubeedge 就是源于這個産品,它基于 kubeedge 和 kubernetes 生态建構,将雲原生的技術應用到邊緣計算。ief 通過納管邊緣節點,将雲端ai應用、函數計算等能力下發到邊緣節點(edgenode),将公有雲能力延伸到靠近裝置的一端,使得邊緣節點擁有雲端相同能力,能夠實時處理終端裝置計算需求。

kubeconshanghai2018——kubeedge開源首秀

kubeedge 向左,k3s 向右

kubeedge實作原理

kubeedge詳解

繼續閱讀