Partager via


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.

Diagramme de l’architecture des services Akri.

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.