Akri-Dienstarchitektur
Wichtig
Die von Azure Arc aktivierte Azure IoT Operations Preview befindet sich derzeit in der VORSCHAU. Sie sollten diese Vorschausoftware nicht in Produktionsumgebungen verwenden.
Sie müssen eine neue Azure IoT Operations-Installation bereitstellen, wenn eine allgemein verfügbare Version verfügbar ist, können Sie keine Vorschauinstallation aktualisieren.
Die zusätzlichen Nutzungsbestimmungen für Microsoft Azure-Vorschauen enthalten rechtliche Bedingungen. Sie gelten für diejenigen Azure-Features, die sich in der Beta- oder Vorschauversion befinden oder aber anderweitig noch nicht zur allgemeinen Verfügbarkeit freigegeben sind.
In diesem Artikel wird die Architektur von Akri-Diensten erläutert. Nachdem Sie die Kernkomponenten der Akri-Dienste kennengelernt haben, können Sie damit Geräte und Ressourcen erkennen und Ihrem Kubernetes-Cluster hinzufügen.
Die Akri-Dienste sind eine von Microsoft verwaltete kommerzielle Version von Akri, einem Open-Source-CNCF-Projekt (Cloud Native Computing Foundation).
Kernkomponenten
Die Akri-Dienste bestehen aus den folgenden fünf Komponenten:
- Die Akri-Konfiguration ist eine benutzerdefinierte Ressource, in der Sie ein Gerät benennen. Diese Konfiguration teilt den Akri-Diensten mit, welche Art von Geräten gesucht werden soll.
- Die Akri-Instanz ist eine benutzerdefinierte Ressource, die die Verfügbarkeit und Verwendung eines Geräts nachverfolgt. Jede Akri-Instanz stellt ein Blattgerät dar.
- Akri-Ermittlungshandler suchen nach dem konfigurierten Gerät und informieren den Agent über ermittelte Geräte.
- Der Akri-Agent erstellt die benutzerdefinierte Ressource für die Akri-Instanz.
- Der Akri-Controller hilft Ihnen, ein konfiguriertes Gerät zu verwenden. Der Controller erkennt jede Akri-Instanz und stellt einen Broker-Pod bereit, der weiß, wie eine Verbindung mit der Ressource hergestellt und diese verwendet werden kann.
Benutzerdefinierte Ressourcendefinitionen
Eine benutzerdefinierte Ressourcendefinition (Custom Resource Definition, CRD) ist eine Kubernetes-API-Erweiterung, mit deren Hilfe Sie neue Objekttypen definieren können. Es gibt zwei Akri-Dienste CRDs:
- Konfiguration
- Instanz
Akri-Konfigurations-CRD
Die Konfigurations-CRD konfiguriert die Akri-Dienste. Sie erstellen Konfigurationen, die die zu ermittelnden Ressourcen und den auf einem Knoten bereitzustellenden Pod beschreiben, der eine Ressource ermittelt. Weitere Informationen finden Sie unter Akri-Konfigurations-CRD. Das CRD-Schema gibt die Einstellungen an, die alle Konfigurationen aufweisen müssen, einschließlich der folgenden Einstellungen:
- Das Ermittlungsprotokoll zum Suchen von Ressourcen. Dies kann beispielsweise ONVIF oder udev sein.
spec.capacity
, die die maximale Anzahl von Knoten definiert, die Workloads für diese Ressource planen können.spec.brokerPodSpec
, die den „Broker“-Pod definiert, der für jede dieser gemeldeten Ressourcen geplant ist.spec.instanceServiceSpec
, die den Dienst definiert, der einen einzelnen stabilen Endpunkt für den Zugriff auf die Gruppe der Broker-Pods jeder einzelnen Ressource bereitstellt.spec.configurationServiceSpec
, die den Dienst definiert, der einen einzelnen stabilen Endpunkt für den Zugriff auf die Gruppe aller Broker für alle Ressourcen bereitstellt, die der Konfiguration zugeordnet sind.
Akri-Instanz-CRD
Jede Akri-Instanz stellt eine einzelne Ressource dar, die für das Cluster sichtbar ist. Wenn beispielsweise fünf IP-Kameras für das Cluster sichtbar sind, sind fünf Instanzen vorhanden. Die Instanz-CRD ermöglicht die Koordination von Akri-Diensten und das Freigeben von Ressourcen. Diese Instanzen speichern den internen Zustand und sind nicht für die Bearbeitung gedacht. Weitere Informationen finden Sie unter Ausführliche Informationen zur Ressourcenfreigabe.
Agent
Der Akri-Agent implementiert für ermittelte Ressourcen Kubernetes-Geräte-Plugins. Der Akri-Agent führt die folgenden Aufgaben aus:
- Er überwacht Konfigurationsänderungen, um zu bestimmen, nach welchen Ressourcen gesucht werden soll.
- Er überwacht die Ressourcenverfügbarkeit, um zu bestimmen, welche Ressourcen angekündigt werden sollen. In einer Edge-Umgebung ändert sich die Verfügbarkeit von Ressourcen häufig.
- Er informiert Kubernetes über Änderungen am Ressourcenstatus und der Verfügbarkeit.
Diese Aufgaben ermöglichen es in Kombination mit dem Zustand, der in der Instanz gespeichert ist, mehreren Knoten, eine Ressource freizugeben, während die durch die spec.capacity
-Einstellung definierten Einschränkungen beachtet werden.
Weitere Informationen finden Sie unter Ausführliche Informationen zu Agents.
Ermittlungshandler
Ein Ermittlungshandler findet Geräte. Beispiele für Geräte:
- Mit Knoten verbundene USB-Sensoren.
- In Knoten eingebettete GPUs.
- IP-Kameras im Netzwerk.
Der Ermittlungshandler meldet alle ermittelten Geräte an den Agent. Häufig sind Protokolle zum Ermitteln einer Gruppe von Geräten implementiert. Dies kann ein Netzwerkprotokoll wie OPC UA oder ein proprietäres Protokoll sein. Ermittlungshandler implementieren den in discovery.proto
definierten DiscoveryHandler
-Dienst. Ein Ermittlungshandler ist erforderlich, um sich beim Agent zu registrieren, der den in discovery.proto
definierten Registration
-Dienst hostet.
Weitere Informationen finden Sie unter Benutzerdefinierte Ermittlungshandler.
Controller
Der Zweck des Akri-Controllers ist es:
- Dienste und Pods zu erstellen oder zu löschen, die die Ressourcenverfügbarkeit ermöglichen.
- Sicherzustellen, dass Instanzen zu einem bestimmten Zeitpunkt am Clusterstatus ausgerichtet sind.
Um diese Ziele zu erreichen, erfüllt der Controller folgende Aufgaben:
- Überwachung von Änderungen an Instanzen, um zu bestimmen, welche Pods und Dienste vorhanden sein sollten.
- Überwachung von Knoten, die in nicht mehr vorhandenen Instanzen enthalten sind.
Diese Aufgaben ermöglichen es dem Akri-Controller, sicherzustellen, dass Protokoll-Broker und Kubernetes-Dienste auf allen Knoten ausgeführt und die gewünschten Ressourcen verfügbar gemacht werden, während die durch die spec.capacity
-Einstellung definierten Einschränkungen beachtet werden.
Weitere Informationen finden Sie in der Dokumentation Ausführliche Informationen über Controller.