Akri 服務架構
重要
已啟用 Azure Arc 的 Azure IoT 操作預覽版目前為預覽狀態。 請勿在生產環境使用此預覽版軟體。
當正式發行可供使用時,您將需要部署新的 Azure IoT 作業安裝,您將無法升級預覽安裝。
請參閱 Microsoft Azure 預覽版增補使用規定,以了解適用於 Azure 功能 (搶鮮版 (Beta)、預覽版,或尚未正式發行的版本) 的法律條款。
本文可協助您了解 Akri 服務的架構。 了解 Akri 服務的核心元件之後,您可以使用它們來偵測裝置和資產,並將它們新增至 Kubernetes 叢集中。
Akri 服務是 Microsoft 管理的 Akri 商業版本,這是一個開放原始碼的 Cloud Native Computing Foundation (CNCF) 專案。
核心元件
Akri 服務由以下五個元件組成:
- Akri 設定是一種自訂資源,您可以在其中為裝置命名。 此設定會告訴 Akri 服務要尋找哪種類型的裝置。
- Akri 執行個體是一種自訂資源,用於追蹤裝置的可用性和使用情況。 每個 Akri 執行個體都代表一個分葉裝置。
- Akri 探索處理常式會尋找已設定的裝置,並通知代理程式探索到的裝置。
- Akri 代理程式會建立 Akri 執行個體自訂資源。
- Akri 控制器可協助您使用已設定的裝置。 該控制器會查看每個 Akri 執行個體,並部署一個知道如何連線到資源並加以利用的訊息代理程式 Pod。
自訂資源定義
自訂資源定義 (CRD) 是 Kubernetes API 延伸模組,可讓您定義新的物件類型。 有兩個 Akri 服務 CRD:
- 組態
- 執行個體
Akri 設定 CRD
該設定 CRD 會設定 Akri 服務。 您可以建立設定來描述要探索的資源,以及要在節點上部署的 Pod 以探索資源。 若要深入了解,請參閱 Akri 設定 CRD。 CRD 結構描述會指定所有設定都必須具有的設定,包括以下設定:
- 用於尋找資源的探索通訊協定。 例如,ONVIF 或 udev。
spec.capacity
,用於定義可以在此資源上對工作負載進行排程的最大節點數。spec.brokerPodSpec
,用於定義要針對這些每個報告的資源進行排程的訊息代理程式 Pod。spec.instanceServiceSpec
,用於定義服務,以提供單一穩定端點來存取每個個別資源的訊息代理程式 Pod 集合。spec.configurationServiceSpec
,用於定義服務,以提供單一穩定端點來存取與設定關聯之所有資源的所有訊息代理程式集合。
Akri 執行個體 CRD
每個 Akri 執行個體都代表叢集可見的個別資源。 例如,如果叢集可以看到五部 IP 相機,則有五個執行個體。 該執行個體 CRD 可啟用 Akri 服務協調和資源分享。 這些執行個體會儲存內部狀態,不適合您編輯。 若要深入了解,請參閱深入了解資源分享。
專員
Akri 代理程式會針對探索到的資源實作 Kubernetes Device-Plugins。 Akri 代理程式會執行下列工作:
- 它會對設定變更進行監看以確定要搜尋的資源。
- 它會監視資源可用性以確定要通告的資源。 在邊緣環境中,資源可用性會經常變更。
- 它會通知 Kubernetes 資源健康情況和可用性的任何變更。
這些工作 (與執行個體中儲存的狀態結合) 可讓多個節點共用資源,同時遵守 spec.capacity
設定所定義的限制。
若要深入了解,請參閱深入了解代理程式。
探索處理常式
探索處理常式會尋找裝置。 裝置的範例包括:
- 連線到節點的 USB 感測器。
- 內嵌在節點中的 GPU。
- 網路上的 IP 相機。
探索處理常式會將所有探索到的裝置回報給代理程式。 通常有通訊協定實作可探索一組裝置,無論是 OPC UA 之類的網路通訊協定或專屬通訊協定。 探索處理常式會實作 discovery.proto
中定義的 DiscoveryHandler
服務。 需要探索處理常式,才能向代理程式註冊,代理程式會裝載 discovery.proto
中定義的 Registration
服務。
若要深入了解,請參閱自訂探索處理常式。
控制器
Akri 控制器的目標是為了:
- 建立或刪除啟用資源可用性的 Pod 和服務。
- 確定執行個體在任何指定的時刻都符合叢集狀態。
為了達到這些目標,該控制器會:
- 監看執行個體變更以確定應存在哪些 Pod 和服務。
- 監看包含在執行個體中已不存在的節點。
這些工作可讓 Akri 控制器確保通訊協定訊息代理程式和 Kubernetes 服務在所有節點上執行,並公開所需的資源,同時遵守 spec.capacity
設定所定義的限制。
如需詳細資訊,請參閱深入了解控制器的文件。