Retour aux articles
  • 06.04.2022

Comment Kubernetes profite à l’IoT Edge?

Comment Kubernetes profite à l’IoT Edge?

L'internet des objets (IoT) peut être défini comme un système de dispositifs informatiques interconnectés dotés d'identifiants uniques et capables de transférer des données sur un réseau sans interaction entre humains ou entre humains et ordinateurs. Les petits appareils IoT (des capteurs aux balises en passant par les wearables) ont leur propre puissance de traitement et créent une quantité massive de données à traiter et à analyser. Il est souvent inefficace d'envoyer toutes ces données vers le cloud pour traitement. Le transfert de données dépend de la disponibilité du réseau et peut poser des problèmes de sécurité, de protection des données et de confidentialité.

 

L'analytique IoT passe du cloud à la périphérie pour des raisons de sécurité, de latence, d'autonomie et de coût. Cependant, la distribution et la gestion des charges sur plusieurs centaines de nœuds à la périphérie peuvent être un processus pénible et fastidieux. Une condition essentielle pour distribuer et gérer les charges sur les dispositifs de périphérie est d'utiliser une solution légère de niveau production telle que Kubernetes.

 

Kubernetes est largement utilisé dans les environnements cloud-web, mais peut être exploité pour gérer les charges de travail des périphériques IoT. Kubernetes répond à de nombreux problèmes de complexité auxquels les développeurs sont confrontés lors de la création et du déploiement de solutions IoT.

 

Ces dernières années, le secteur s'est attaché à passer de la virtualisation traditionnelle à la virtualisation basée sur les conteneurs en raison des nombreux avantages de ces derniers. Nous allons voir en quoi Kubernetes profite à IoT Edge.

 

Table des matières

Qu’est ce que Kubernetes ?

Quels sont les challenges en Iot Edge ?

Comment Kubernetes profite aux appareils edge ?

Quels sont les défis de Kubernetes dans l'IoT Edge?

Quelles sont les alternatives à Kubernetes ?

Conclusion

 

Qu’est ce que Kubernetes ?

Kubernetes est un framework de déploiement et d'orchestration pour les applications conteneurisées. Il permet de gérer les applications conteneurisées dans un environnement en cluster. Kubernetes alloue des ressources aux conteneurs et effectue la réplication, la mise à l'échelle, le basculement, les mises à jour permanentes et d'autres tâches de gestion nécessaires à l'exécution fiable des applications avec une utilisation efficace des ressources.

Les conteneurs fournissent un contexte isolé pour héberger et exécuter un microservice ou une application. Les conteneurs doivent être gérés pour la distribution des ressources et des charges, l'évolutivité et la haute disponibilité. Kubernetes fournit une couche sur l'infrastructure pour relever ces défis. Il utilise une architecture Master-Node et des labels comme étiquettes de nom pour identifier ses objets. La plupart des applications distribuées construites dans un souci d'évolutivité sont composées de microservices et sont hébergées et exécutées via un conteneur.

Quels sont les challenges en IoT Edge ?

Les contraintes de calcul et de ressources

Les périphériques IoT ont un CPU et une mémoire limités, il faut donc les utiliser efficacement et les préserver pour les fonctionnalités critiques de la solution.

La gestion à distance et des ressources

Alors que le réseau se développe rapidement, une approche manuelle du déploiement, de la gestion et de la maintenance des appareils sera difficile et chronophage. Voici quelques-uns des principaux obstacles et défis auxquels est confrontée la périphérie de l'IdO aujourd'hui :

L'utilisation efficace, la surveillance à distance et le contrôle des ressources des appareils, notamment le processeur, la mémoire, le réseau et les ports d'E/S des appareils de périphérie.

L'hébergement et la mise à l'échelle de n'importe quelle combinaison d'applications et la possibilité de contrôler les cœurs de CPU et le co-processing (par exemple, GPU) pour des applications spécifiques.

Mises à jour automatisées et à distance des correctifs de sécurité et de l'ensemble de la pile logicielle, avec possibilité de retour en arrière pour éviter le bricolage.

Connectivité automatisée à un ou plusieurs backends (par exemple, dans le cloud ou sur site) et migration facile vers différents backends.

Un pare-feu sécurisé et distribué pour acheminer en toute sécurité les données sur les réseaux conformément à la politique.

La sécurité et la confiance

Les problèmes de sécurité représentent le plus grand obstacle à la croissance de l'IoT edge. Il est nécessaire de garder les dispositifs IoT edge à l'abri des accès non autorisés. La découverte, l'authentification et l'établissement de la confiance dans la périphérie de l'IoT, ainsi que l'anonymat et la traçabilité des dispositifs, constituent un défi dans les environnements à grande échelle. Une couche de sécurité supplémentaire est nécessaire pour garantir que les différentes applications IoT s'exécutent de manière isolée les unes des autres dans l'appareil.

La fiabilité et la tolérance aux pannes

Avec l'augmentation des dispositifs IoT dans le système, des solutions d'autogestion et d'autoconfiguration sont nécessaires sur le réseau périphérique. Les applications IoT doivent être en mesure de se remettre de tout problème survenant au cours de leur durée de vie. La résilience aux pannes et la prévention des attaques par déni de service sont quelques-uns des défis courants qui existent en périphérie IoT.

L'Évolutivité

Les capteurs contrôlent de plus en plus tout dans l'IoT. Le nombre de points de collecte de données et le volume de données collectées augmentent rapidement. Dans de nombreuses applications, telles que les systèmes de ville et de circulation intelligents, il n'est pas rare que des milliers de nouveaux capteurs soient installés en peu de temps alors que l'environnement IoT reste opérationnel. Ce défi a accru la nécessité de faire évoluer l'environnement IoT et la gestion des données. De plus, le coût et d'autres paramètres tels que la surveillance de la charge de travail, la capacité de stockage, l'allocation dynamique des ressources et le taux de transfert des données constituent un défi pour les services basés sur la périphérie.

L'agencement et l'équilibrage de la charge

L'informatique de périphérie dépend entièrement des mécanismes d'ordonnancement et d'équilibrage de la charge pour maintenir les grandes applications, où les données sont partagées entre plusieurs services. Pour garantir une utilisation maximale des ressources informatiques, il est nécessaire de rendre les données, les logiciels et l'infrastructure disponibles à moindre coût, de manière sûre, fiable et flexible. Un mécanisme efficace d'ordonnancement et d'équilibrage de la charge est également nécessaire.

Comment Kubernetes profite aux appareils edge ?

L'évolutivité

La capacité à évoluer est la principale préoccupation de nombreuses solutions IoT. La capacité de desservir davantage d'appareils et de traiter des téraoctets de données en temps réel nécessite une infrastructure capable d'évoluer de manière indépendante, horizontalement ou verticalement. Les conteneurs étant légers, ils peuvent être créés en quelques millisecondes par rapport aux machines virtuelles traditionnelles. L'un des principaux avantages de Kubernetes est sa capacité à faire évoluer facilement les services sur les grappes de réseaux, à faire évoluer indépendamment les conteneurs et à redémarrer automatiquement sans impact sur les services.

La haute disponibilité

Les périphériques de périphérie doivent être disponibles et fiables pour les solutions IoT qui gèrent des tâches commerciales critiques. Chaque conteneur se voit attribuer sa propre adresse IP, ce qui permet d'équilibrer facilement les charges entre les conteneurs et de redémarrer les applications lorsque les conteneurs ne fonctionnent pas. Les conteneurs peuvent utiliser différents systèmes de stockage comme AWS, Google Cloud ou Microsoft Azure pour devenir indépendants du cloud.

L'utilisation efficace des ressources

Kubernetes réduit le coût d'hébergement des applications IoT grâce à son utilisation efficace des ressources. En outre, il fournit une couche d'abstraction au-dessus des machines virtuelles hébergées. Ainsi, les administrateurs peuvent se concentrer sur le déploiement de services sur le nombre optimal de machines virtuelles (VM), ce qui réduit le coût total d'exploitation des VM pour une application IoT.

Le déploiement à la périphérie de l'IoT

L'un des principaux défis de l'IoT consiste à déployer des mises à jour logicielles vers les périphériques sans interrompre les services. Kubernetes peut exécuter des microservices qui déploient progressivement les modifications apportées aux services. Les déploiements Kubernetes déploient des mises à jour de versions de pods avec une stratégie de mise à jour continue. Cette stratégie permet d'éviter toute interruption de service en maintenant certaines instances en fonctionnement à tout moment pendant l'exécution des mises à jour. Les anciens pods ne sont supprimés qu'après avoir activé les nouveaux pods de la nouvelle version de déploiement qui sont prêts à gérer le trafic. Ainsi, il est possible de faire évoluer les applications vers le haut ou horizontalement avec une simple commande.

Permettre le DevOps pour l'IoT

Les solutions IoT doivent être mises à jour de manière transparente avec zéro temps d'arrêt pour les utilisateurs finaux afin de répondre aux demandes du marché. Kubernetes aide les équipes de développement à vérifier, mettre en place et déployer rapidement les modifications apportées aux services IoT. En outre, Kubernetes est pris en charge par différents fournisseurs de cloud computing, tels que AWS, Google Cloud et Azure. Il est même pris en charge en tant que logiciel sur site. Il sera donc facile de migrer vers n'importe quel service en cloud à l'avenir.

Grâce à ces caractéristiques, Kubernetes est devenu l'un des outils d'orchestration les plus courants à déployer et à gérer.

Quels sont les défis de Kubernetes dans l'IoT Edge?

Les passerelles de périphérie traitent divers protocoles tels que Bluetooth, Wi-Fi, 3G, 4G et 5G et doivent utiliser efficacement les ressources de calcul. En raison des ressources de calcul limitées des passerelles de périphérie, il n'est pas simple d'exécuter Kubernetes directement sur les serveurs de périphérie.

Si les serveurs permettent l'installation de tous les composants Kubernetes en périphérie, tout ira bien sur les machines des développeurs. Cependant, très rapidement, vous rencontrerez des problèmes lors de l'exécution en production. Ces problèmes sont les suivants :

Séparer les maîtres et les nœuds de la périphérie et déplacer le maître vers le cloud pour une meilleure surveillance et un meilleur contrôle où les maîtres exécutent le plan de contrôle et les nœuds prennent la charge de travail.

Création d'un cluster séparé pour la base de données etcd afin de gérer les charges importantes.

Dédier des nœuds au trafic d'entrée et de sortie pour une meilleure gestion du trafic.

Ces questions conduiront à la création de plusieurs clusters, rendant l'ensemble de l'infrastructure très complexe à gérer.

Quelles sont les alternatives plus légère de Kubernetes ? 

Pour relever les défis de l'IoT en périphérie, il faut une version compacte et optimisée de Kubernetes. Nous présentons ici les avantages et les défis de trois variantes de Kubernetes dotées de capacités périphériques.

MicroK8s

MicroK8s est un intermédiaire entre les clusters de périphérie et Kubernetes standard. Il nécessite un faible encombrement pour fonctionner avec des ressources limitées, et il est possible d'orchestrer des pools de ressources en cloud complet. Comme les images Docker, MicroK8s utilise des conteneurs immuables pour une meilleure sécurité et des opérations plus simples dans Kubernetes. Il permet de créer des clusters autoréparables et à haute disponibilité qui choisissent automatiquement les meilleurs nœuds pour le datastore Kubernetes. Lorsqu'un nœud de base de données du cluster est perdu, un autre nœud est promu sans avoir besoin d'un administrateur. MicroK8s est rapide à installer et facile à mettre à niveau avec une excellente sécurité, ce qui le rend parfait pour les micro-clouds et l'informatique périphérique.

K3s

K3s est une offre Kubernetes certifiée par la Cloud Native Computing Foundation (CNCF), ce qui signifie que vous pouvez écrire du YAML pour fonctionner avec un cluster Kubernetes et K3s ordinaire. La RAM minimale requise pour faire fonctionner un cluster K3s est de 512 Mo. Il est possible de permettre aux pods de fonctionner sur le maître ainsi que sur les nœuds. K3s crée un cluster de périphérie, qui fournit une isolation supplémentaire entre la périphérie et le cloud. Cette configuration profite aux scénarios dans lesquels les pods de périphérie ne peuvent pas fonctionner en dehors de la périphérie.

Les avantages de Kubernetes standard s'appliquent également à K3s. Cependant, il y a quelques limitations, notamment :

K3s prend en charge un seul maître, ce qui signifie que si le maître tombe en panne, vous perdez la capacité de gérer le cluster.

La base de données par défaut utilisée dans K3s est SQLite, ce qui signifie que ce sera un problème pour les grandes bases de données où trop d'opérations se produisent. De plus, K3s possède des éléments non redondants tels que des composants de base de données, ce qui rendra la coordination plus difficile si les mêmes pods sont utilisés pour les nœuds de périphérie et de cloud.

KubeEdge

Comme K3s, KubeEdge est un projet de la CNCF. Son objectif principal est d'étendre Kubernetes du cloud à la périphérie et de relever les défis suivants en matière d'informatique périphérique :

  • Fiabilité du réseau entre le cloud et la périphérie
  • Contrainte de ressources sur les nœuds de périphérie
  • Relever les défis de l'architecture périphérique en termes de distribution et d'évolutivité.

KubeEdge est un nœud léger construit sur Kubernetes. Pour surmonter les contraintes de ressources sur la périphérie, le plan de contrôle est séparé du nœud de périphérie vers le cloud, et un SQLite léger est utilisé à la place de etcd. Cela signifie que le cloud et les nœuds de périphérie sont faiblement couplés. Un agent à la périphérie peut gérer les services de manière autonome en cas de défaillance de la communication avec le cloud.

KubeEdge a intégré les interfaces CRI, CSI et CNI de Kubernetes en se connectant aux ressources d'exécution, de stockage et de réseau. De plus, KubeEdge est ouvert à l'intégration avec d'autres projets CNCF, tels que Envoy, Prometheus et etcd.

L'un des défis critiques que KubeEdge relève est la gestion des nœuds de périphérie qui sont géographiquement dispersés. KubeEdge permet une "gestion centralisée" des nœuds de périphérie distants et des applications qui y sont exécutées, ce qui constitue une capacité de gestion à distance importante.

Services gérés de cloud/edge pour la périphérie IoT

Outre les différentes variantes de Kubernetes, il existe de nombreuses solutions de cloud managé disponibles chez Amazon, Microsoft, Google et d'autres, qui peuvent répondre aux défis de l'IoT edge. Voici quelques-uns de ces services et leurs avantages.

AWS IoT Greengrass

Cette solution Amazon fournit des contrôles pour la construction d'appareils IoT qui se connectent au cloud et à d'autres appareils. Elle permet l'exécution locale du code AWS Lambda, la mise en cache des données, la messagerie et la sécurité. Les appareils sont rassemblés en groupes, et chaque groupe peut communiquer sur le réseau local. AWS IoT Greengrass permet une communication rapide, ce qui se traduit par une réponse en temps quasi réel.

Quels sont les avantages d'AWS Greengrass ?

Construisez des appareils intelligents plus rapidement : AWS IoT Greengrass prend en charge divers langages de programmation, environnements de développement et d'exécution, tels que les fonctions AWS Lambda, les conteneurs Docker, les processus OS natifs et les logiciels open-source pour développer, tester et lancer vos applications IoT.

Déployez le logiciel des appareils à l'échelle : AWS IoT Greengrass prend en charge le déploiement à distance et les mises à jour logicielles transparentes sur des millions d'appareils sans nécessiter de mise à jour du micrologiciel.

Fonctionnement hors ligne : Les appareils peuvent agir localement sur les données qu'ils génèrent, répondre rapidement aux événements locaux et réduire la latence.

Sécurisez les communications des appareils : AWS IoT Greengrass authentifie et chiffre les données des appareils pour les communications locales et dans le cloud.

Azure IoT Edge

Azure IoT Edge est un service entièrement géré construit sur le hub Azure IoT. Il est utilisé pour analyser les données sur les appareils IoT plutôt que dans le cloud. En déplaçant la majeure partie de la charge de travail vers la périphérie, seuls quelques messages doivent être envoyés au cloud. Il aide à déployer des charges de travail dans le cloud, telles que l'intelligence artificielle ou la logique d'entreprise, pour qu'elles s'exécutent sur les périphériques IoT à l'aide de conteneurs standard. En déplaçant certaines charges de travail vers la périphérie du réseau, les appareils passent moins de temps à communiquer avec le cloud, réagissent plus rapidement aux changements locaux et fonctionnent de manière fiable, même lors de périodes hors ligne prolongées.

Azure IoT Edge fonctionne sur les appareils Linux ou Windows qui prennent en charge les moteurs de conteneurs. Les conteneurs compatibles Docker des services Azure ou des partenaires de Microsoft sont disponibles pour exécuter la logique métier à la périphérie. Il est facile de gérer et de déployer des charges de travail à partir du cloud via Azure IoT Hub, avec un provisionnement des appareils sans contact à l'aide de l'interface cloud.

Quels sont les avantages d'Azure IoT Edge ?

Le délestage des charges de travail d'IA et d'analyse vers la périphérie et la réduction des coûts de la solution IoT.

Simplification du développement, car le code IoT Edge est cohérent entre le cloud et la périphérie et prend en charge des langages tels que C, C#, Java, Node.js et Python.

Il est essentiel de réagir en temps quasi réel en ayant la latence la plus faible possible entre les données et la décision. Plutôt que de traiter vos données dans le cloud, Asure IoT Edge les traite sur le dispositif lui-même.

Fonctionnement hors ligne ou avec une connectivité intermittente à vos périphériques de manière fiable et sécurisée, même lorsqu'ils sont hors ligne ou ont une connectivité intermittente au cloud. La gestion des périphériques Azure IoT Edge synchronise automatiquement le dernier état de vos périphériques après leur reconnexion pour garantir une opérabilité sans faille.

Azure IoT Hub est un produit Microsoft Platform-as-a-Service fondamental, permettant la connectivité, la gestion et la communication des appareils. Il prend en charge des services tels que :

  • La messagerie de dispositif à dispositif
  • L'authentification des dispositifs
  • la prise en charge des protocoles HTTP, MQTT et AMQP
  • Surveillance et diagnostic des dispositifs
  • Messagerie entre le cloud et les appareils
  • Gestion des dispositifs
  • Jumeaux de dispositifs et de modules ou stockage d'informations sur les propriétés actuelles et souhaitées des dispositifs et de leurs composants et modules.
  • IoT edge pour créer des modules de programme et les déployer sur les nœuds du réseau.

Conclusion

Les industries qui s'appuient sur l'IoT se concentrent sur le déploiement de services critiques dans les périphériques pour améliorer la réactivité des solutions et réduire les coûts. Les solutions basées sur Kubernetes fournissent une plateforme commune qui peut être utilisée pour déployer des services IoT à la périphérie. C'est une façon de résoudre le défi de la mise à l'échelle des applications dans des environnements peu familiers.

La communauté Kubernetes s'efforce de faire progresser et d'innover les solutions. Les progrès continus permettent de créer des solutions IoT natives en nuage qui sont évolutives, fiables et déployables dans un environnement distribué.

Bien que les solutions IoT edge soient conditionnées différemment, elles offrent des caractéristiques similaires avec des fonctionnalités riches qui offrent une évolutivité, une fiabilité, une tolérance aux pannes et une sécurité intégrée élevées pour chaque couche du système IoT.

Lors du choix de la solution Kubernetes optimale pour votre application edge, il est essentiel de prendre en compte tous les facteurs pertinents tels que la nature des applications, le coût, la compatibilité matérielle, la disponibilité des ressources et les compétences de l'équipe.