Akri 使您能夠輕鬆地將異構葉子設備(例如IP攝像機和USB設備)公開爲Kubernetes集羣中的資源,同時還支持公開嵌入式硬件資源(例如GPU和FPGA)。 Akri不斷檢測有權訪問這些設備的節點,並根據這些節點調度工做負載。git
在邊緣,有各類各樣的傳感器,控制器和MCU類設備正在產生數據並執行動做。爲了使Kubernetes成爲可行的邊緣計算解決方案,Kubernetes集羣須要輕鬆利用這些異構的「葉子設備」。可是,許多此類葉子設備過小,沒法自行運行Kubernetes。 Akri 是一個開源項目,將這些葉設備公開爲Kubernetes集羣中的資源。它利用並擴展了 Kubernetes設備插件框架,該框架是在考慮雲的基礎上建立的,並專一於靜態資源,例如GPU和其餘系統硬件。 Akri採用了此框架並將其應用於邊緣,邊緣包含一組具備獨特通訊協議和間歇可用性的葉子設備。github
Akri專爲邊緣設計,可處理葉子設備的動態建立和銷燬狀況。 Akri提供了相似於CNI的抽象層,可是它沒有對底層網絡詳細信息進行抽象。操做員只須要將Akri配置應用於集羣,便可指定發現協議(例如ONVIF)和應部署的Pod(例如視頻幀服務器)。而後剩下的事,Akri來完成。操做員還能夠容許多個節點使用分支設備,從而在節點脫機的狀況下提供高可用性。此外,Akri將爲每種類型的葉子設備(或Akri Configuration)自動建立Kubernetes服務,從而無需使用應用程序來跟蹤Pod或節點的狀態。服務器
最重要的是,Akri被構建爲可擴展的。咱們目前擁有ONVIF和udev發現協議,而且正在努力實現OPC UA,同時社區成員能夠輕鬆添加更多協議。 Akri支持的協議越多,Akri能夠發現的葉子設備的範圍越廣。網絡
Akri的架構由四個關鍵組件組成:架構
您能夠在第一個自定義資源Akri Configuration中對其進行命名。這告訴Akri應該尋找哪一種設備。 Akri的設備插件實現會使用Akri的第二個自定義資源Akri Instance查找設備並跟蹤其可用性。找到設備後,Akri Controller能夠幫助您使用它。它查看每一個Akri實例(表明葉子設備),並部署一個「broker」 Pod,該Pod知道如何鏈接到資源並加以利用。框架
關於該架構深度解析,你們能夠參考官方文檔。ide
咱們經過官方的一個示例,來加深對Arki的理解。spa
做爲處理動態共享葉設備的示例,已經爲ONVIF攝像機協議建立了一個實現。 ONVIF是許多IP攝像機使用的標準,它定義了RTSP攝像機流的發現和訪問。除了用於ONVIF的協議實現外,Akri還提供了ONVIF配置和示例代理(akri-onvif-video-broker
),它充當幀服務器。 使用Akri的默認ONVIF配置來發現和利用ONVIF攝像機以下所示:插件
akri-onvif-video-broker
pod。控制器還將爲每一個ONVIF攝像機建立一個Kubernetes服務,併爲全部ONVIF攝像機建立一個服務。該項目由微軟開源主導,能夠完美配合k3s 等基於k8s實現的邊緣框架。項目實現語言爲rust。