Meilleures Pratiques De Surveillance Kubernetes

Accueil / DevOps / Supervision Kubernetes : gagnez en visibilité sur toute la pile

Les microservices – désormais le choix de facto pour la façon dont nous construisons notre infrastructure – ont naturellement ouvert la voie aux conteneurs. Avec des outils d’orchestration de conteneurs tels que Docker et Kubernetes, les organisations peuvent désormais expédier des applications plus rapidement, à plus grande échelle. Mais, avec toute cette puissance et cette automatisation, viennent des défis, en particulier pour maintenir la visibilité sur cette infrastructure éphémère.

Surveillance Des Charges De Travail Kubernetes

Kubernetes est complexe, (pour savoir exactement ce qu’est Kubernetes et comment il fonctionne, lisez notre guide complet sur Kubernetes). Pour l’utiliser avec succès, il nécessite que plusieurs composants soient surveillés simultanément. Pour faciliter votre stratégie de surveillance, séparez les opérations de surveillance en plusieurs zones, chaque section faisant référence à une couche individuelle de l’environnement Kubernetes. Ensuite, décomposez la surveillance de la charge de travail de haut en bas : clusters, pods, applications et enfin, l’expérience de l’utilisateur final.

Surveillance Des Clusters Kubernetes

Le cluster est le composant de plus haut niveau de Kubernetes. La plupart des installations Kubernetes n’ont qu’un seul cluster. C’est pourquoi, lorsque vous surveillez le cluster, vous obtenez une vue complète de tous les domaines. Et peut facilement vérifier la santé des pods, des nœuds et des applications qui composent le cluster.

Lors du déploiement de plusieurs clusters à l’aide de la fédération, chaque cluster doit être surveillé individuellement. Les domaines que vous surveillerez au niveau du cluster seraient :

  • Pods en échec : les pods qui échouent et s’abandonnent font partie intégrante des processus Kubernetes. Lorsqu’un pod qui devrait fonctionner à un niveau plus efficace ou est inactif, il est essentiel d’examiner la raison des anomalies dans les échecs de pod.
  • Charge de nœud : le suivi de la charge sur chaque nœud fait partie intégrante de la surveillance de l’efficacité. Certains nœuds peuvent être beaucoup plus utilisés que d’autres. Le rééquilibrage de la répartition de la charge est essentiel pour maintenir la fluidité et l’efficacité des charges de travail. Cela peut être fait via DaemsonSets.
  • Utilisation du cluster : la surveillance de l’infrastructure du cluster vous permet d’ajuster le nombre de nœuds utilisés et de consacrer des ressources pour alimenter efficacement les charges de travail. Vous pouvez voir comment les ressources sont distribuées afin que vous puissiez augmenter ou réduire et éviter les coûts d’une infrastructure supplémentaire. À cette fin, nous vous recommandons d’apprendre à définir la limite d’utilisation de la mémoire et du processeur d’un conteneur.

Surveillance Des Modules Kubernetes

La surveillance des clusters donne une vue macro de l’environnement Kubernetes, mais la collecte de données à partir de pods individuels est également essentielle. Il révèle la santé des pods individuels et les charges de travail qu’ils hébergent. Vous obtenez une image plus claire des performances des pods à un niveau granulaire, au-delà du cluster. Ici, vous surveilleriez :

  • Nombre total d’instances de pod : il doit y avoir suffisamment d’instances d’un pod pour garantir une haute disponibilité. De cette façon, la bande passante d’hébergement n’est pas gaspillée et vous n’exécutez pas plus d’instances de pod que nécessaire.
  • Déploiement des pods : la surveillance du déploiement des pods vous permet de voir si des erreurs de configuration peuvent réduire la disponibilité des pods. Il est essentiel de garder un œil sur la façon dont les ressources sont distribuées aux nœuds.
  • Instances de pod réelles : la surveillance du nombre d’instances pour chaque pod en cours d’exécution par rapport à ce que vous espériez exécuter révélera comment redistribuer les ressources pour atteindre l’état souhaité en termes d’instances de pods. Les ReplicaSets peuvent être mal configurés si vous voyez des métriques variables, il est donc important de les analyser régulièrement.

Surveillance Des Applications Exécutées Dans Kubernetes

Les applications ne font pas partie de Kubernetes, mais vouloir héberger une application est tout l’intérêt d’utiliser Kubernetes. C’est pourquoi la surveillance de l’application hébergée sur le cluster est essentielle au succès. Les problèmes révélés par la surveillance des applications peuvent provenir de l’environnement Kubernetes ou du code de l’application.

  • Erreurs : si une erreur se produit, vous pouvez y accéder rapidement lors de la surveillance et la résoudre avant qu’elle n’affecte les utilisateurs finaux.
  • Traces de transaction : les traces de transaction vous aident à résoudre les problèmes si les applications rencontrent des problèmes de disponibilité ou de performances.
  • Réactivité de l’application : vous pouvez surveiller le temps nécessaire à une application pour répondre à une demande. Vous pouvez voir s’ils peuvent gérer les charges de travail actuelles ou s’ils ont du mal à maintenir les performances.
  • Disponibilité des applications : surveillez si les applications sont actives et opérationnelles, et répondent efficacement.

Surveillance De L’expérience De L’utilisateur Final Lors De L’exécution De Kubernetes

L’expérience de l’utilisateur final, comme les applications, ne fait techniquement pas partie de la plate-forme Kubernetes. L’objectif global d’une application est d’offrir aux utilisateurs finaux une expérience positive et doit faire partie de votre stratégie de surveillance Kubernetes.

La collecte de données vous permettra de savoir comment l’application fonctionne, sa réactivité et sa convivialité. La surveillance des utilisateurs réels et synthétiques est essentielle pour comprendre comment les utilisateurs interagissent avec les charges de travail Kubernetes. Il vous permet de savoir si vous devez faire des adaptations ou des ajustements qui amélioreront la convivialité et amélioreront l’interface.

Surveillance De Kubernetes Dans Un Environnement Cloud

Lorsque Kubernetes s’exécute dans le cloud, certains facteurs spécifiques doivent être pris en compte lors de la planification de votre stratégie de surveillance. Dans le cloud, vous devrez également surveiller :

  • Événements IAM : vous devrez surveiller l’activité IAM. Cela inclut les modifications d’autorisations et les connexions, ce qui est une bonne pratique pour la sécurité dans une installation ou un environnement basé sur le cloud.
  • API cloud : un fournisseur de cloud possède ses propres API, et votre installation Kubernetes l’utilise pour demander des ressources, il doit donc être surveillé.
  • Coûts : les coûts liés au cloud peuvent rapidement grimper. La surveillance des coûts vous aide à établir votre budget et garantit que vous ne dépensez pas trop pour les services Kubernetes basés sur le cloud.
  • Performances du réseau : dans une installation basée sur le cloud, le réseau peut devenir le principal obstacle aux performances de vos applications. Si vous surveillez régulièrement le réseau cloud, vous pouvez être sûr que les données se déplacent aussi rapidement que nécessaire afin d’éviter les problèmes liés au réseau.

Surveillance Des Métriques Dans Kubernetes

Pour obtenir une meilleure visibilité sur une installation Kubernetes en dehors de l’exécution de différents types de surveillance pour Kubernetes, il existe également plusieurs mesures qui vous donneront des informations précieuses sur le fonctionnement de vos applications.

Métriques Communes

Ce sont des métriques collectées à partir du code de Kubernetes (écrit en Golang). Il vous permet de comprendre ce qui se passe au niveau cellulaire dans la plateforme.

Métriques De Nœud

Les métriques des systèmes d’exploitation activant les nœuds de Kubernetes peuvent vous donner un aperçu de la santé globale des nœuds individuels. Vous pouvez surveiller la consommation de mémoire, l’activité du système de fichiers, la charge du processeur, l’utilisation et l’activité du réseau.

Métriques Kubelet

Pour vous assurer que le plan de contrôle communique efficacement avec chaque nœud individuel sur lequel un Kubelet s’exécute, vous devez surveiller régulièrement l’agent Kubelet.

Kube-State-Metrics

Vous pouvez obtenir un module complémentaire Kubernetes facultatif qui génère des métriques à partir de l’API Kubernetes appelée Kube-State-Metrics.

Métriques Du Gestionnaire De Contrôleur

Pour vous assurer que les charges de travail sont orchestrées efficacement, vous pouvez surveiller les demandes que le contrôleur adresse aux API externes. Ceci est essentiel dans les déploiements Kubernetes basés sur le cloud.

Métriques Du Planificateur

Si vous souhaitez identifier et éviter les retards, vous devez surveiller la latence dans le planificateur. De cette façon, vous pouvez vous assurer que Kubernetes déploie les pods en douceur et à temps.

Etcd Métriques

Etcd stocke toutes les données de configuration pour Kubernetes. Les métriques Etcd vous donneront une visibilité essentielle sur l’état de votre cluster.

Métriques De Conteneur

L’examen spécifique des conteneurs individuels vous permettra de surveiller la consommation exacte des ressources plutôt que les métriques Kubernetes plus générales. CAdvisor vous permet d’analyser l’utilisation des ressources à l’intérieur des conteneurs.

Métriques Du Serveur D’API

Les API maintiennent l’interface Kubernetes ensemble et ces métriques sont donc essentielles pour gagner en visibilité sur le serveur d’API, et donc sur l’ensemble de l’interface.

Données De Journal

Les journaux sont utiles à examiner lorsque vous trouvez un problème révélé par des métriques. Ils vous donnent des informations exactes et précieuses qui fournissent plus de détails que les métriques. Il existe de nombreuses options pour se connecter à la plupart des composants de Kubernetes. Les applications génèrent également des données de journal.

Défis, Solutions Et Conseils Pour La Surveillance De Kubernetes

Migrer des applications d’infrastructures monolithiques vers des microservices gérés par Kubernetes est un processus long et intensif. Il peut être semé d’embûches et se révéler source d’erreurs. Mais pour obtenir une disponibilité, une innovation, des avantages en termes de coûts, une évolutivité et une agilité plus élevés, c’est le seul moyen de développer votre entreprise, en particulier dans le cloud. La visibilité est le principal problème en ce qui concerne les environnements Kubernetes, car il est difficile de voir les interactions en temps réel de chaque microservice, en raison de la complexité de la plate-forme. La surveillance est une compétence spécialisée que chaque entreprise devra pratiquer et améliorer pour réussir.

Un cluster Kubernetes peut être considéré comme complexe en raison de ses multiples serveurs et de ses services cloud privés et publics intégrés. Lorsqu’un problème survient, de nombreux journaux, données et autres facteurs doivent être examinés. Les environnements monolithiques hérités n’ont besoin que de quelques recherches dans les journaux pour déterminer le problème. Les environnements Kubernetes, en revanche, disposent d’un ou plusieurs journaux pour les multiples microservices impliqués dans le problème que vous rencontrez.

Pour relever ces défis, nous avons élaboré les recommandations suivantes pour surveiller efficacement l’infrastructure conteneurisée.

Utilisation Efficace Du Modèle Sidecar Pour Une Meilleure Surveillance Des Applications Dans Kubernetes

L’une des meilleures pratiques clés consiste à tirer parti de l’accès basé sur les rôles au sein de Kubernetes pour fournir un contrôle de bout en bout par une seule équipe avec sa solution de surveillance, et sans avoir le contrôle total du cluster. L’utilisation d’une solution de surveillance sous un espace de noms d’équipe aide les opérateurs à contrôler facilement la surveillance de leur application de conteneur basée sur des microservices dans le cadre de leur équipe.

Cependant, ils peuvent ajouter une prise en charge de surveillance supplémentaire sans avoir à reconstruire leur conteneur d’applications. Une approche dynamique de la surveillance améliore l’observabilité et oriente le contexte – sans avoir à supprimer les conteneurs s’ils commencent à présenter des problèmes.

Observabilité De L’espace De Noms

Kubernetes fournit une portée d’espace de noms pour les ressources, ce qui permet de donner aux équipes individuelles le contrôle total des applications sous leur espace de noms. Les opérateurs peuvent également créer des conteneurs et des pods dans un espace de noms Kubernetes et les mapper directement sur des outils de surveillance pilotés par code, en exploitant également le même espace de noms.

Par exemple, vous pouvez avoir un espace de noms « Associé » dans le pipeline d’événements de surveillance open source – similaire à Kubernetes – afin qu’une équipe puisse contrôler les conteneurs et surveiller autour de lui à l’aide d’un référentiel de fichiers de configuration YAML déclaratifs. Avec RBAC (contrôle d’accès basé sur les rôles), vous pouvez atténuer les risques en fournissant uniquement l’accès nécessaire à un utilisateur afin qu’il n’ait pas plus que nécessaire.

Meilleures Pratiques Pour Les Journaux Dans Kubernetes

L’agrégation des journaux d’application pour les charges de travail conteneurisées est une bonne pratique essentielle qui peut améliorer le développement de logiciels. En raison de la nature éphémère des charges de travail conteneurisées, le nombre d’entrées de journal générées dans un cluster peut être assez important.

Les agents de journalisation tels que Fluentd et FluentBit – des projets de logiciels de collecte de données multiplateformes et open source développés à l’origine chez Treasure Data – sont généralement utilisés comme DaemonSets pour collecter les journaux de tous les pods exécutés sur un nœud, à l’aide d’un montage de volume privilégié des fichiers journaux. stocké par l’environnement d’exécution du conteneur. Il s’agit d’outils au niveau du cluster utilisés pour agréger les journaux dans un lac de données tel qu’Elasticsearch ou les envoyer dans une solution de traitement de flux telle que Kafka – et vous souhaiterez peut-être utiliser une surveillance fonctionnelle basée sur les rôles pour suivre ces éléments supplémentaires de l’infrastructure d’agrégation de journaux s’exécutant à l’extérieur. de votre cluster Kubernetes.

Utiliser Une Solution De Surveillance Kubernetes

La visibilité est essentielle pour les entreprises afin d’identifier les problèmes de conteneur qui entravent les performances des applications. Vous pouvez surveiller plus efficacement les applications conteneurisées s’exécutant dans les pods Kubernetes et les augmenter ou les réduire en fonction des besoins. C’est pourquoi il est essentiel de disposer d’une solution de surveillance Kubernetes complète qui vous donnera une visibilité de bout en bout sur chaque composant de vos applications. Des pods, nœuds, conteneurs, infrastructure, plate-forme Kubernetes, à chaque microservice et appareil de l’utilisateur final.

Surveiller Kubernetes avec APM

La mise en œuvre d’une solution de surveillance des performances des applications (APM) donne aux entreprises une visibilité sur leurs applications et leur permet d’évaluer les performances globales. Il organise et offre des informations sur les clusters Kubernetes, les conteneurs Docker et les applications conteneurisées. Vous pouvez examiner les métriques fondamentales de l’infrastructure, en savoir plus sur les obstacles potentiels et effectuer des ajustements.

Bénéficiez d’une visibilité instantanée sur l’utilisation de la mémoire, du processeur et du réseau, ainsi que sur les statistiques d’utilisation des ressources lors du déploiement d’applications de conteneur surveillées par APM. Les métriques APM identifient rapidement les problèmes courants tels que les applications monopolisant la bande passante ou reconnaissent les erreurs réseau de grande envergure au niveau du conteneur.

Grâce à ces conseils et à ces stratégies de surveillance, les opérateurs peuvent faire d’énormes progrès pour obtenir une plus grande visibilité sur leur infrastructure basée sur des conteneurs. Et adoptez le fonctionnement multi-cloud en toute confiance. Vous voulez de l’aide pour démarrer ? Contactez l’un de nos experts dès aujourd’hui.

Article écrit en collaboration avec Jef Spaleta, Principal Developer Advocate chez Sensu .