Architecture des services Akri
Important
Opérations Azure IoT (préversion) – activé parc Azure Arc est actuellement en PRÉVERSION. Vous ne devez pas utiliser ce logiciel en préversion dans des environnements de production.
Vous devrez déployer une nouvelle installation d’Azure IoT Operations lorsqu’une version en disponibilité générale est mise à disposition, vous ne pourrez pas mettre à niveau une installation en préversion.
Pour connaître les conditions juridiques qui s’appliquent aux fonctionnalités Azure en version bêta, en préversion ou plus généralement non encore en disponibilité générale, consultez l’Avenant aux conditions d’utilisation des préversions de Microsoft Azure.
Cet article vous aide à comprendre l’architecture des services Akri. Après avoir découvert les principaux composants des services Akri, vous pouvez les utiliser pour détecter des appareils et des ressources, et les ajouter à votre cluster Kubernetes.
Les services Akri sont une version commerciale gérée par Microsoft d’Akri, un projet open-source de la CNCF (Cloud Native Computing Foundation).
Composants de base
Les services Akri se composent des cinq composants suivants :
- Configuration Akri est une ressource personnalisée où vous nommez un appareil. Cette configuration indique aux services Akri le type d’appareils à rechercher.
- Instance Akri est une ressource personnalisée qui effectue le suivi de la disponibilité et de l’utilisation d’un appareil. Chaque instance Akri représente un appareil à nœud terminal.
- Les gestionnaires de découverte Akri recherchent l’appareil configuré et informent l’agent sur les appareils détectés.
- L’Agent Akri crée la ressource personnalisée d’instance Akri.
- Le Contrôleur Akri vous aide à utiliser une appareil configuré. Le contrôleur voit chaque instance Akri et déploie un pod répartiteur qui sait comment se connecter à la ressource et l’utiliser.
Définitions de ressources personnalisées
Une définition de ressource personnalisée (CRD) est une extension d’API Kubernetes qui vous permet de définir de nouveaux types d’objets. Il existe deux CRD pour les services Akri :
- Configuration
- Instance
CRD de configuration Akri
Le CRD de configuration configure les services Akri. Vous créez des configurations décrivant les ressources à découvrir et le pod à déployer sur un nœud qui détecte une ressource. Pour obtenir plus d’informations, consultez CRD de configuration Akri. Le schéma de CRD spécifie les paramètres que toutes les configurations doivent avoir, y compris les paramètres suivants :
- Protocole de découverte pour rechercher des ressources. Par exemple, ONVIF ou udev.
spec.capacity
qui définit le nombre maximal de nœuds pouvant planifier des charges de travail sur cette ressource.spec.brokerPodSpec
qui définit le pod répartiteur à planifier pour chacune de ces ressources signalées.spec.instanceServiceSpec
qui définit le service qui fournit un point de terminaison stable unique pour accéder à l’ensemble de pods répartiteurs de chaque ressource individuelle.spec.configurationServiceSpec
qui définit le service qui fournit un point de terminaison stable unique pour accéder à l’ensemble de tous les répartiteurs pour toutes les ressources associées à la configuration.
CRD d’instance Akri
Chaque instance Akri représente une ressource individuelle visible par le cluster. Par exemple, s’il existe cinq caméras IP visibles par le cluster, il existe cinq instances. L’instance CRD active la coordination des services Akri et le partage de ressources. Ces instances stockent l'état interne et ne sont pas destinées à être modifiées par vous. Pour obtenir plus d’informations, consultez Partage des ressources en détail.
Agent
L’agent Akri implémente Kubernetes Device-Plugins (Plug-ins d’appareil Kubernetes) pour les ressources découvertes. L’Agent Akri effectue les tâches suivantes :
- Recherche les modifications de configuration pour déterminer les ressources à rechercher.
- Surveille la disponibilité des ressources pour déterminer les ressources à publier. Dans un environnement en périphérie, la disponibilité des ressources change souvent.
- Informe Kubernetes de toute modification apportée à l’intégrité et à la disponibilité des ressources.
Ces tâches, associées à l’état stocké dans l’instance, permettent à plusieurs nœuds de partager une ressource tout en respectant les limitations définies par le paramètre spec.capacity
.
Pour découvrir plus d’informations, voir l’Agent en détail.
Gestionnaires de découverte
Un gestionnaire de découverte recherche des appareils. Par les exemples d’appareil, sont inclus :
- Capteurs USB connectés à des nœuds.
- GPU incorporés dans des nœuds.
- Caméras IP sur le réseau.
Le gestionnaire de découverte signale tous les appareils découverts à l’agent. Il existe souvent des implémentations de protocole pour découvrir un ensemble d’appareils, qu’il s’agisse d’un protocole réseau tel qu’OPC UA ou un protocole propriétaire. Les gestionnaires de découverte implémentent le service DiscoveryHandler
défini dans discovery.proto
. Un gestionnaire de découverte est requis pour s’inscrire auprès de l’agent qui héberge le service Registration
défini dans discovery.proto
.
Pour découvrir plus d’informations, voir Gestionnaires de découverte personnalisés.
Contrôleur
Les objectifs du contrôleur Akri sont les suivants :
- Créer ou supprimer les services et les pods qui activent la disponibilité d’une ressource.
- Vérifier que les instances sont alignées sur l’état du cluster à un moment donné.
Pour atteindre ces objectifs, le contrôleur :
- Surveille les modifications apportées à une instance pour déterminer les pods et services qui doivent exister.
- Recherche les nœuds contenus dans des instances qui n’existent plus.
Ces tâches permettent au contrôleur Akri de veiller à ce que les répartiteurs de protocole et services Kubernetes s’exécutent sur tous les nœuds et exposent les ressources souhaitées, tout en respectant les limites définies par le paramètre spec.capacity
.
Pour plus d'informations, consultez la documentation du Contrôleur en détail.