作者:iyacontrol

來源:SegmentFault 思否社區


Akri 使您可以輕鬆地將異構葉子設備(例如 IP 攝像機和 USB 設備)公開爲 Kubernetes 集羣中的資源,同時還支持公開嵌入式硬件資源(例如 GPU 和 FPGA)。Akri 不斷檢測有權訪問這些設備的節點,並根據這些節點調度工作負載。


Why Akri


在邊緣,有各種各樣的傳感器,控制器和 MCU 類設備正在產生數據並執行動作。爲了使 Kubernetes 成爲可行的邊緣計算解決方案,Kubernetes 集羣需要輕鬆利用這些異構的“葉子設備”。但是,許多此類葉子設備太小,無法自行運行 Kubernetes。Akri 是一個開源項目,將這些葉設備公開爲 Kubernetes 集羣中的資源。它利用並擴展了 Kubernetes 設備插件框架,該框架是在考慮雲的基礎上創建的,並專注於靜態資源,例如 GPU 和其他系統硬件。Akri 採用了此框架並將其應用於邊緣,邊緣包含一組具有獨特通信協議和間歇可用性的葉子設備。

Akri 專爲邊緣設計,可處理葉子設備的動態創建和銷燬情況。Akri 提供了類似於 CNI 的抽象層,但是它沒有對底層網絡詳細信息進行抽象。操作員只需要將 Akri 配置應用於集羣,即可指定發現協議(例如 ONVIF)和應部署的 Pod (例如視頻幀服務器)。然後剩下的事,Akri 來完成。操作員還可以允許多個節點使用分支設備,從而在節點脫機的情況下提供高可用性。此外,Akri 將爲每種類型的葉子設備(或 Akri Configuration)自動創建 Kubernetes 服務,從而無需使用應用程序來跟蹤 Pod 或節點的狀態。

最重要的是,Akri 被構建爲可擴展的。我們目前擁有 ONVIF 和 udev 發現協議,並且正在努力實現 OPC UA,同時社區成員可以輕鬆添加更多協議。Akri 支持的協議越多,Akri 可以發現的葉子設備的範圍越廣。


Akri 工作原理


Akri 的架構由四個關鍵組件組成:

  • Akri Configuration CRD

  • Akri Instance CRD

  • Agent( 一個設備插件實現)

  • 一個自定義控制器

您可以在第一個自定義資源 Akri Configuration 中對其進行命名。這告訴 Akri 應該尋找哪種設備。Akri 的設備插件實現會使用 Akri 的第二個自定義資源 Akri Instance 查找設備並跟蹤其可用性。找到設備後,Akri Controller 可以幫助您使用它。它查看每個 Akri 實例(代表葉子設備),並部署一個“broker” Pod,該 Pod 知道如何連接到資源並加以利用。

Akri,一個用於建立 Kubernetes 和邊緣計算連接的開源項目

關於該架構深度解析,大家可以參考官方文檔。


示例


我們通過官方的一個示例,來加深對 Arki 的理解。

作爲處理動態共享葉設備的示例,已經爲 ONVIF 攝像機協議創建了一個實現。ONVIF 是許多 IP 攝像機使用的標準,它定義了 RTSP 攝像機流的發現和訪問。除了用於 ONVIF 的協議實現外,Akri 還提供了 ONVIF 配置和示例代理(akri-onvif-video-broker),它充當幀服務器。使用 Akri 的默認 ONVIF 配置來發現和利用 ONVIF 攝像機如下所示:

Akri,一個用於建立 Kubernetes 和邊緣計算連接的開源項目

  • 操作員將 ONVIF 配置應用於集羣。

  • Akri Agent 使用 ONVIF 協議發現 IP 攝像機,併爲每個發現的攝像機創建實例。

  • Akri 控制器將看到實例並部署在配置中指定的 akri-onvif-video-broker pod。控制器還將爲每個 ONVIF 攝像機創建一個 Kubernetes 服務,併爲所有 ONVIF 攝像機創建一個服務。

該項目由微軟開源主導,可以完美配合 k3s 等基於 k8s 實現的邊緣框架。項目實現語言爲 rust。


點擊左下角閱讀原文,到 SegmentFault 思否社區 和文章作者展開更多互動和交流。

- END -

Akri,一個用於建立 Kubernetes 和邊緣計算連接的開源項目

Akri,一個用於建立 Kubernetes 和邊緣計算連接的開源項目

來源鏈接:mp.weixin.qq.com