Capturer des insights système en temps réel à partir d’un cluster AKS
Cet article décrit le processus de collecte d’insights système en temps réel à partir de votre cluster Microsoft Azure Kubernetes Service (AKS) à l’aide d’Inspektor Gadget. L’article contient des instructions pas à pas pour installer cet outil sur votre environnement AKS. Il explore également des exemples pratiques qui montrent comment Inspektor Gadget vous aide à collecter des informations précieuses pour effectuer un débogage efficace des problèmes réels.
Démonstration
Pour commencer, envisagez la démonstration rapide suivante. Supposons que vous devez déterminer pourquoi les demandes DNS d’une application échouent. À l’aide d’Inspektor Gadget, vous pouvez capturer le trafic DNS dans l’espace de noms Kubernetes dans lequel votre application s’exécute :
kubectl gadget trace dns --namespace my-ns --output columns=+nameserver
K8S.NODE K8S.NAMESPACE K8S.POD PID TID COMM QR TYPE QTYPE NAME RCODE NUMANSWERS NAMESERVER
aks-agentpool-97833681-vmss000001 my-ns my-app 1349264 1349264 nslookup Q OUTGOING A www.example.com. 0 1.2.3.4
aks-agentpool-97833681-vmss000001 my-ns my-app 1349264 1349264 nslookup Q OUTGOING AAAA www.example.com. 0 1.2.3.4
aks-agentpool-97833681-vmss000001 my-ns my-app 1349264 1349264 nslookup Q OUTGOING A www.example.com. 0 1.2.3.4
aks-agentpool-97833681-vmss000001 my-ns my-app 1349264 1349264 nslookup Q OUTGOING AAAA www.example.com. 0 1.2.3.4
À partir de ces informations, vous pouvez voir que les requêtes DNS sont dirigées vers le serveur DNS à l’adresse 1.2.3.4
IP , mais que le serveur ne répond jamais.
Supposons maintenant que ce 1.2.3.4
n’est pas la configuration de serveur de noms par défaut, et que vous pensez qu’un processus suspect modifie la configuration au moment de l’exécution. Dans ce genre de cas, Inspektor Gadget va au-delà des diagnostics DNS. Il vous permet également de surveiller les processus qui accèdent aux fichiers critiques (tels que /etc/resolv.conf) et qui ont l’intention de modifier ces fichiers. Pour utiliser cette fonctionnalité de surveillance, filtrez les indicateurs dans la sortie afin d’afficher l’un des modes d’accès aux fichiers d’écriture (O_WRONLY
pour ouvrir pour l’écriture uniquement, ou O_RDWR
pour ouvrir pour la lecture et l’écriture) :
kubectl gadget trace open --namespace my-ns \
--filter path:/etc/resolv.conf,flags:'~(O_WRONLY|O_RDWR)' \
--output columns=+flags
K8S.NODE K8S.NAMESPACE K8S.POD K8S.CONTAINER PID COMM FD ERR PATH FLAGS
aks-agentpool-97833681-vmss000001 my-ns my-app my-app 1365052 vi 3 0 /etc/resolv.conf O_WRONLY|O_CREAT
Qu’est-ce qu’Inspektor Gadget ?
Inspektor Gadget est une infrastructure conçue pour créer, empaqueter, déployer et exécuter des outils dédiés au débogage et à l’inspection des systèmes Linux et Kubernetes. Ces outils (« gadgets ») sont implémentés en tant que programmes eBPF . Leur objectif principal est de collecter des données de noyau de bas niveau pour fournir des insights sur des scénarios système spécifiques. L’infrastructure Inspektor Gadget gère l’association des données collectées à l’aide de références de haut niveau, telles que les ressources Kubernetes. Cette intégration garantit l’existence d’une connexion transparente entre les insights de bas niveau et leur contexte de haut niveau correspondant. L’intégration simplifie le processus de résolution des problèmes et la collecte des informations pertinentes.
Gadgets
Inspektor Gadget fournit un ensemble d’outils intégrés conçus pour déboguer et observer des situations courantes sur un système. Par exemple, en utilisant ces gadgets, vous pouvez suivre les événements suivants dans votre cluster :
- Création de processus
- Accès aux fichiers
- Activité réseau, telle que les connexions TCP ou la résolution DNS
Les gadgets présentent les informations qu’ils ont collectées à l’aide de différents mécanismes. Par exemple, certains gadgets peuvent vous informer de l’état du système à des moments spécifiques. D’autres gadgets peuvent signaler chaque fois qu’un événement donné se produit, ou ils peuvent fournir des mises à jour périodiques.
Voici quelques exemples. La documentation officielle fournit des descriptions détaillées et des exemples de chaque gadget afin que vous puissiez déterminer le gadget le plus adapté à votre cas d’usage spécifique. Toutefois, si vous trouvez un cas d’usage que les gadgets existants ne couvrent pas actuellement, Inspektor Gadget offre une flexibilité. Vous pouvez exécuter des scripts compatibles avec le langage de suivi eBPF bpftrace en exécutant la commande de script. Vous pouvez également exécuter vos propres programmes eBPF en exécutant la commande run. Étant donné que l’infrastructure Inspektor Gadget gère la création, l’empaquetage et le déploiement de vos programmes personnalisés, elle simplifie le processus selon vos besoins uniques. En outre, il collecte des métadonnées de haut niveau pour enrichir les données que vous collectez dans votre programme.
Cas d'utilisation
Pour compléter la démonstration présentée au début de cet article, nous avons compilé une liste de problèmes et de scénarios pratiques qui montrent comment Inspektor Gadget vous aide à relever les défis de débogage. Les exemples suivants illustrent le potentiel d’Inspektor Gadget. Mais les fonctionnalités de cet outil vont au-delà de ces scénarios. Cela fait d’Inspektor Gadget un atout précieux pour naviguer dans les complexités du débogage et de l’observabilité Kubernetes.
Zone de problème | Symptômes | Résolution des problèmes |
---|---|---|
Applications gourmandes en disque | Utilisation élevée de la mémoire ou du processeur, ou préparation incohérente des nœuds | Une application peut systématiquement s’engager dans des opérations de lecture/écriture sur disque, telles que la journalisation étendue. En utilisant Inspektor Gadget, vous pouvez identifier en temps réel les conteneurs qui génèrent le plus d’E/S de bloc. Ou, plus précisément, vous pouvez trouver le conteneur qui provoque davantage de lectures et d’écritures dans un fichier. |
« C’est toujours DNS » | Latence élevée de l’application, délais d’attente ou expérience utilisateur final médiocre | En utilisant Inspektor Gadget, vous pouvez suivre toutes les requêtes et réponses DNS dans le cluster. En particulier, Inspektor Gadget fournit les informations suivantes qui vous aident à déterminer si le DNS affecte les performances de votre application :
|
Accès au système de fichiers | L’application se comporte mal ou ne peut pas fonctionner correctement | L’application peut ne pas pouvoir accéder à des configurations, journaux ou autres fichiers vitaux spécifiques dans le système de fichiers. Dans de tels scénarios, Inspektor Gadget vous permet de suivre tous les fichiers ouverts à l’intérieur des pods pour diagnostiquer les problèmes d’accès. Chaque fois que votre application tente d’ouvrir un fichier, vous pouvez découvrir les informations suivantes :
Par exemple, si la tentative d’ouverture du fichier échoue en raison de l’erreur 2 (ENOENT), l’application tente probablement d’ouvrir un fichier qui n’existe pas. Cela signifie que vous pouvez avoir une faute de frappe dans le code, ou que le fichier est disponible dans un autre chemin. |
Exécution de code à distance (RCE) | Exécution de code non autorisée telle que le cryptojacking qui est évident dans une utilisation élevée du processeur pendant les périodes d’inactivité de l’application | Lorsque des attaquants tentent d’effectuer ce type d’attaque sur un système, ils doivent généralement exécuter le code à l’aide bash de . Inspektor Gadget vous permet de suivre la création de nouveaux processus, en particulier les processus qui impliquent des commandes critiques telles que bash . |
Comment installer Inspektor Gadget dans un cluster AKS
One-Click déploiement de gadgets Inspektor
En sélectionnant le bouton suivant, un cluster AKS est automatiquement créé et Inspektor Gadget est déployé dans le cluster. Une fois le déploiement terminé, vous pouvez explorer toutes les fonctionnalités d’Inspektor Gadget dans l’environnement shell fourni.
Installez Inspektor Gadget en exécutant le plug-in « kubectl gadget »
Cette section décrit les étapes d’installation d’Inspektor Gadget dans votre cluster AKS en exécutant le kubectl gadget
plug-in. L’installation se compose de deux parties :
Installation du
kubectl gadget
plug-in sur votre ordinateurExécution du
kubectl gadget
plug-in pour installer Inspektor Gadget dans le clusterAvertissement
De nombreux mécanismes sont disponibles pour déployer et utiliser Inspektor Gadget. Chacun de ces mécanismes est adapté à des cas d’usage et des exigences spécifiques. Vous pouvez utiliser le plug-in kubectl gadget pour appliquer plusieurs de ces mécanismes, mais pas tous. Par exemple, le déploiement d’Inspektor Gadget à l’aide du
kubectl gadget
plug-in dépend de la disponibilité du serveur d’API Kubernetes. Si vous ne pouvez pas dépendre d’un tel composant, car sa disponibilité peut être parfois compromise, nous vous recommandons d’éviter d’utiliser le mécanisme dekubectl gadget
déploiement. Pour plus d’informations sur ce cas d’usage et sur d’autres cas d’usage, consultez la documentation d’Inspektor Gadget.
Configuration requise
Outil en ligne de commande Kubernetes kubectl . Si vous disposez d’Azure CLI, vous pouvez exécuter la commande az aks install-cli pour installer kubectl.
Un cluster AKS. Si vous n’avez pas de cluster AKS, créez-en un à l’aide d’Azure CLI ou du portail Azure.
Gestionnaire de package krew pour les plug-ins dans kubectl. Vous pouvez suivre le guide de démarrage rapide krew pour installer ce gestionnaire de package.
Partie 1 : Installer le gadget du plug-in kubectl sur votre ordinateur
Nous vous recommandons d’utiliser krew
pour installer le kubectl gadget
plug-in.
Remarque
Pour installer une version spécifique ou la compiler à partir de la source, consultez Installer kubectl gadget sur GitHub.
kubectl krew install gadget
À présent, vérifiez l’installation en exécutant la version
commande :
kubectl gadget version
La version
commande vous montre la version du client (kubectl gadget
plug-in), mais elle vous indique également qu’elle n’est pas encore installée sur le serveur (le cluster) :
Client version: vX.Y.Z
Server version: not installed
Partie 2 : Installer Inspektor Gadget dans le cluster
La commande suivante déploie le contrôleur DaemonSet .
Remarque
Plusieurs options sont disponibles pour personnaliser le déploiement, comme indiqué dans la liste suivante :
- Utiliser une image conteneur spécifique
- Déployer sur des nœuds spécifiques
- Déployer dans un espace de noms personnalisé
Pour en savoir plus sur ces options, consultez la section Installation dans le cluster de la documentation officielle.
kubectl gadget deploy
Vérifiez l’installation en exécutant à nouveau la version
commande :
kubectl gadget version
Cette fois, le client et le serveur sont installés correctement :
Client version: vX.Y.Z
Server version: vX.Y.Z
Exclusion de responsabilité de tiers
Les produits tiers mentionnés dans le présent article sont fabriqués par des sociétés indépendantes de Microsoft. Microsoft exclut toute garantie, implicite ou autre, concernant les performances ou la fiabilité de ces produits.
Exclusion de responsabilité sur les coordonnées externes
Microsoft fournit des informations de contacts externes afin de vous aider à obtenir un support technique sur ce sujet. Ces informations de contact peuvent être modifiées sans préavis. Microsoft ne garantit pas l’exactitude des informations concernant les sociétés externes.
Contactez-nous pour obtenir de l’aide
Pour toute demande ou assistance, créez une demande de support ou posez une question au support de la communauté Azure. Vous pouvez également soumettre des commentaires sur les produits à la communauté de commentaires Azure.
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : pendant toute l’année 2024, nous allons éliminer progressivement Problèmes GitHub comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, voir :Soumettre et afficher des commentaires pour