AIOps  : Investigation par l’IA dans Kubernetes avec HolmesGPT, Ollama et RunPod …

DEV - 15/01
Dans le monde de l’orchestration des conteneurs, Kubernetes est devenu une norme pour gérer les...

Dans le monde de l’orchestration des conteneurs, Kubernetes est devenu une norme pour gérer les charges de travail conteneurisés. Cependant, la gestion et le dépannage des clusters Kubernetes peuvent être complexes et chronophages. Cet article explore comment l’intelligence artificielle (IA) peut être intégrée dans Kubernetes pour améliorer l’investigation et la gestion des incidents. J’avais d’ailleurs évoqué le sujet dans un article précédent :

AIOps : Déboguer son cluster Kubernetes en utilisant l’intelligence artificielle générative via…

Ici je vais m’intéresser à HolmesGPT. HolmesGPT, développé par Robusta, est un agent de dépannage open source qui utilise l'IA pour enquêter les incidents dans les clusters Kubernetes avec ces caractéristiques :

  • Intégration avec les outils de gestion d'incidents : HolmesGPT se connecte aux outils comme PagerDuty, OpsGenie et Prometheus pour collecter des données et analyser les alertes.
  • Investigation automatisée : Grâce à l’IA, HolmesGPT peut identifier et résoudre des problèmes tels que l’expiration des certificats SSL, les problèmes de ressources insuffisantes et les problèmes d’affinité des nœuds. Cela réduit significativement le temps et l’effort nécessaires pour le dépannage.
  • Personnalisation : HolmesGPT permet de créer des livres de recettes (runbooks) personnalisés pour gérer des problèmes spécifiques, en utilisant des API et des outils personnalisés si nécessaire.

GitHub - Robusta-dev/holmesgpt : Assistant de garde pour les alertes Prometheus - Prenez une longueur d'avance sur la correction des alertes grâce à l'investigation de l'IA

Pour cet exercice, je vais d’abord lancer une instance Ubuntu 24.04 LTS de nouveau chez le fournisseur Cloud DigitalOcean :

Je vais y installer Incus, un fork de LXD qui va me servir de base pour la formation d'un cluster Kubernetes avec plusieurs conteneurs :

Conteneurs Linux - Incus - Introduction

Comme pour LXD, je vais procéder à la création de plusieurs profils. Mais dans un premier temps, installation d’Incus sur l’instance :

root@k0s-incus:~# curl -fsSL https://pkgs.zabbly.com/key.asc | gpg --show-keys --fingerprint gpg : répertoire '/root/.gnupg' créé gpg : keybox '/root/.gnupg/pubring.kbx' créé pub rsa3072 2023-08-23 [SC] [expire : 2025- 08-22] 4EFC 5906 96CB 15B8 7C73 A3AD 82CC 8797 C838 DCFD uid Zabbly Kernel Buildssub rsa3072 2023-08-23 [E] [expire : 2025-08-22] root@k0s-incus :~# mkdir -p /etc/apt/keyrings/ root@k0s-incus :~# curl -fsSL https : //pkgs.zabbly.com/key.asc -o /etc/apt/keyrings/zabbly.asc root@k0s-incus:~# sh -c 'cat </etc/apt/sources.list.d/zabbly-incus-stable.sources Activé : oui Types : deb URI : https://pkgs.zabbly.com/incus/stable Suites : $(. /etc/os-release && echo ${VERSION_CODENAME}) Composants : architectures principales : $(dpkg --print-architecture) Signé par : /etc/apt/keyrings/zabbly.asc EOF' root@k0s-incus:~# apt-get update Hit:1 http://security.ubuntu.com/ubuntu noble-security InRelease Hit:2 http://mirrors .digitalocean.com/ubuntu noble InRelease Hit:3 https://repos-droplet.digitalocean.com/apt/droplet-agent main InRelease Hit:4 http://mirrors.digitalocean.com/ubuntu noble-updates InRelease Hit:5 http://mirrors.digitalocean.com/ubuntu noble-backports InRelease Get:6 https://pkgs.zabbly.com/incus/stable noble InRelease [7358 B] Obtenez : 7 https://pkgs.zabbly.com/incus/stable noble/main amd64 Packages [3542 B] Récupéré 10,9 Ko en 1 s (13,3 Ko/s) Lecture des listes de packages... Terminé root@k0s-incus:~# apt-get install incus incus-client incus-ui-canonical -y Lecture des listes de packages.. . Terminé Création de l'arborescence des dépendances... Terminé Lecture des informations d'état... Terminé Les packages supplémentaires suivants seront installés : attr dconf-gsettings-backend dconf-service dns-root-data. dnsmasq-base fontconfig genisoimage glib-networking glib-networking-common glib-networking-services gsettings-desktop-schemas gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-x incus-base iw libaa1 libasyncns0 libavc1394- 0 libboost-iostreams1.83.0 libboost-thread1.83.0 libbtrfs0t64 libcaca0 libcairo-gobject2 libcairo2 libcdparanoia0 libdatrie1 libdaxctl1 libdconf1 libdv4t64 libflac12t64 libgdk-pixbuf-2.0-0 libgdk-pixbuf2.0-bin libgdk-pixbuf2.0-common libgraphite2-3 libgstreamer-plugins-base1.0-0 libgstreamer-plugins-good1.0-0 libharfbuzz0b libiec61883-0 libmp3lame0 libmpg123-0t64 libndctl6 libnet1 libogg0 libopus0 liborc-0.4-0t64 libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libpixman-1-0 libpmem1 libpmemobj1 libproxy1v5 libpulse0 librados2 libraw1394-11 librbd1 librdmacm1t64 libshout3 libsndfile1 libsoup-3.0-0 libsoup-3.0-common libspeex1 libspice-server1 libtag1v5 libtag1v5-vanilla libthai-data libthai0 libtheora0 libtwolame0 libusbredirparser1t64 libv4l-0t64 libv4lconvert0t64 libvisual-0.4-0 libvorbis0a libvorbisenc2 libvpx9 libwavpack1 libx11-xcb1 libxcb-render0 libxcb-shm0 libxdamage1 libxfixes3 libxi6 libxrender1 libxtst6 libxv1 migration de session sshfs sans fil-regdb x11-common xdelta3 root@k0s-incus:~# incus Description : Client de ligne de commande pour Incus Toutes les fonctionnalités d'Incus peuvent être pilotées via les différentes commandes ci-dessous. Pour obtenir de l'aide, appelez-les simplement avec --help. Les commandes personnalisées peuvent être définies via des alias, utilisez "alias incus" pour les contrôler. Utilisation : incus [commande] Commandes disponibles : admin Gérer le cluster de démons incus Gérer la configuration des membres du cluster Gérer les options de configuration des instances et des serveurs console Attacher aux consoles d'instance copy Copier les instances dans ou entre les serveurs create Créer des instances à partir d'images delete Supprimer les instances exec Exécuter des commandes dans les instances exporter Exporter le fichier de sauvegarde d'instance Gérer les fichiers dans l'aide des instances Aide sur toute commande image Gérer les images importer Importer les informations de sauvegarde d'instance Afficher les informations sur l'instance ou le serveur lancer Créer et démarrer des instances à partir de la liste d'images Répertorier les instances déplacer Déplacer les instances au sein ou entre les serveurs du réseau Gérer et attacher les instances aux réseaux pause Suspendre le profil des instances Gérer le projet de profils Gérer les projets publier Publier les instances sous forme d'images Reconstruire les instances à distance Gérer la liste des serveurs distants Renommer les instances redémarrer Redémarrer les instances reprendre Reprendre l'instantané des instances Gérer les instantanés d'instance démarrer Démarrer les instances arrêter Arrêter le stockage des instances Gérer les pools et les volumes de stockage haut Afficher les informations d'utilisation des ressources par version d'instance Afficher les versions locales et distantes webui Ouvrir l'interface Web Indicateurs : --all Afficher les commandes moins courantes --debug Afficher tous les messages de débogage --force-local Forcer à utiliser le socket Unix local -h, --help Imprimer l'aide --project Remplacer le projet source -q, --quiet Ne pas afficher les informations de progression --sub-commands Utiliser avec help ou --help pour afficher les sous-commandes -v, --verbose Afficher tous les messages d'information --version Imprimer numéro de version Utilisez "incus [command] --help" pour plus d'informations sur une commande.
Entrer en mode plein écran Quitter le mode plein écran

Initialisation d’Incus en version minimaliste :

root@k0s-incus:~# incus admin init Souhaitez-vous utiliser le clustering ? (oui/non) [par défaut=non] : Souhaitez-vous configurer un nouveau pool de stockage ? (oui/non) [default=yes] : Nom du nouveau pool de stockage [default=default] : Nom du backend de stockage à utiliser (btrfs, dir, lvm) [default=btrfs] : dir Où ce pool de stockage doit-il être stocké ses données ? [default=/var/lib/incus/storage-pools/default] : Souhaitez-vous créer un nouveau pont de réseau local ? (oui/non) [default=yes] : Comment devrait s'appeler le nouveau pont ? [default=incusbr0] : Quelle adresse IPv4 doit être utilisée ? (...
[Courte citation de 8% de l'article original]
Loading...