Implémentez les diagnostics et le dépannage de Kubernetes basés sur l'IA grâce à l'intégration de K8sGPT et Amazon Bedrock - Recommandations AWS

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Implémentez les diagnostics et le dépannage de Kubernetes basés sur l'IA grâce à l'intégration de K8sGPT et Amazon Bedrock

Ishwar Chauthaiwale, Muskan., et Prafful Gupta, Amazon Web Services

Récapitulatif

Ce modèle montre comment implémenter les diagnostics et le dépannage de Kubernetes basés sur l'IA en intégrant K8sGPT au modèle Anthropic Claude v2 disponible sur Amazon Bedrock. La solution fournit une analyse en langage naturel et des étapes de résolution des problèmes liés au cluster Kubernetes via une architecture hôte Bastion sécurisée. En combinant l'expertise de K8sGPT Kubernetes avec les capacités linguistiques avancées d'Amazon Bedrock DevOps , les équipes peuvent identifier et résoudre rapidement les problèmes liés aux clusters. Grâce à ces fonctionnalités, il est possible de réduire le temps moyen de résolution (MTTR) jusqu'à 50 %.

Ce modèle cloud natif tire parti d'Amazon Elastic Kubernetes Service (Amazon EKS) pour la gestion de Kubernetes. Le modèle met en œuvre les meilleures pratiques de sécurité grâce à des rôles AWS Identity and Access Management (IAM) appropriés et à l'isolation du réseau. Cette solution est particulièrement utile pour les entreprises qui souhaitent rationaliser leurs opérations Kubernetes et améliorer leurs capacités de résolution des problèmes grâce à l'assistance de l'IA.

Conditions préalables et limitations

Prérequis

  • Un actif Compte AWS avec les autorisations appropriées

  • AWS Command Line Interface (AWS CLI) installé et configuré

  • Un cluster Amazon EKS

  • Accès au modèle Anthropic Claude 2 sur Amazon Bedrock

  • Un hôte bastion avec les paramètres de groupe de sécurité requis

  • K8sGPT installé

Limites

  • L'analyse K8sGpt est limitée par la taille de la fenêtre contextuelle du modèle Claude v2.

  • Les limites tarifaires de l'API Amazon Bedrock s'appliquent en fonction des quotas de votre compte.

  • Certains Services AWS ne sont pas disponibles du tout Régions AWS. Pour connaître la disponibilité par région, consultez la section AWS Services par région. Pour des points de terminaison spécifiques, consultez Points de terminaison de service et quotas, puis choisissez le lien correspondant au service.

Versions du produit

Architecture

Le schéma suivant montre l'architecture des diagnostics Kubernetes basés sur l'IA à l'aide de K8sGPT intégré à Amazon Bedrock dans le. AWS Cloud

Flux de travail pour les diagnostics Kubernetes à l'aide de K8sGPT intégré à Amazon Bedrock.

L'architecture présente le flux de travail suivant :

  1. Les développeurs accèdent à l'environnement via une connexion sécurisée à l'hôte Bastion. Cette EC2 instance Amazon sert de point d'entrée sécurisé et contient l'installation de l'interface de ligne de commande (CLI) K8SGPT et les configurations requises.

  2. L'hôte Bastion, configuré avec des rôles IAM spécifiques, établit des connexions sécurisées au cluster Amazon EKS et aux points de terminaison Amazon Bedrock. K8sGPT est installé et configuré sur l'hôte Bastion pour effectuer une analyse du cluster Kubernetes.

  3. Amazon EKS gère le plan de contrôle Kubernetes et les nœuds de travail, fournissant ainsi l'environnement cible pour l'analyse K8sGPT. Le service s'exécute sur plusieurs zones de disponibilité au sein d'un cloud privé virtuel (VPC), ce qui contribue à garantir une disponibilité et une résilience élevées. Amazon EKS fournit des données opérationnelles via l'API Kubernetes, ce qui permet une analyse complète des clusters.

  4. K8sGPT envoie des données d'analyse à Amazon Bedrock, qui fournit le modèle de base Claude v2 (FM) pour le traitement du langage naturel. Le service traite l'analyse K8sGPT pour générer des explications lisibles par l'homme et propose des suggestions de correction détaillées en fonction des problèmes identifiés. Amazon Bedrock fonctionne comme un service d'IA sans serveur offrant une disponibilité et une évolutivité élevées.

Note

Tout au long de ce flux de travail, IAM contrôle l'accès entre les composants par le biais de rôles et de politiques, en gérant l'authentification pour les interactions entre l'hôte Bastion, Amazon EKS et Amazon Bedrock. L'IAM met en œuvre le principe du moindre privilège et permet une communication interservices sécurisée dans l'ensemble de l'architecture.

Automatisation et évolutivité

Les opérations K8sGPT peuvent être automatisées et mises à l'échelle sur plusieurs clusters Amazon EKS à l'aide de divers outils et outils. Services AWS Cette solution prend en charge l'intégration continue et l'intégration du déploiement continu (CI/CD) à l'aide de Jenkins, d'GitHub Actions ou AWS CodeBuildpour une analyse planifiée. L'opérateur K8sGPT permet une surveillance continue au sein du cluster grâce à des fonctionnalités automatisées de détection des problèmes et de création de rapports. Pour les déploiements à l'échelle de l'entreprise, vous pouvez utiliser Amazon EventBridge pour planifier des scans et déclencher des réponses automatisées à l'aide de scripts personnalisés. AWS L'intégration du SDK permet un contrôle programmatique sur un large parc de clusters.

Outils

Services AWS

Autres outils

  • K8sGPT est un outil open source basé sur l'IA qui transforme la gestion de Kubernetes. Il agit en tant qu'expert en ingénierie de fiabilité des sites virtuels (SRE), analysant, diagnostiquant et résolvant automatiquement les problèmes liés au cluster Kubernetes. Les administrateurs peuvent interagir avec K8sGPT en langage naturel et obtenir des informations claires et exploitables sur l'état du cluster, les pannes de pods et les défaillances de service. Les analyseurs intégrés de l'outil détectent un large éventail de problèmes, des composants mal configurés aux contraintes de ressources, et fournissent des easy-to-understand explications et des solutions.

Bonnes pratiques

Épopées

TâcheDescriptionCompétences requises

Définissez Amazon Bedrock comme fournisseur de backend AI pour K8sGPT.

Pour définir Amazon Bedrock comme fournisseur de backend AI r pour K8sGPT, utilisez la commande suivante : AWS CLI

k8sgpt auth add -b amazonbedrock \ -r us-west-2 \ -m anthropic.claude-v2 \ -n endpoint-name

L'exemple de commande utilise us-west-2 pour Région AWS. Toutefois, vous pouvez sélectionner une autre région, à condition que le cluster Amazon EKS et le modèle Amazon Bedrock correspondant soient disponibles et activés dans cette région sélectionnée.

Pour vérifier qu'il amazonbedrock est ajouté à la liste des fournisseurs de backend AI et qu'il est en bon Active état, exécutez la commande suivante :

k8sgpt auth list

Voici un exemple du résultat attendu de cette commande :

Default: > openai Active: > amazonbedrock Unused: > openai > localai > ollama > azureopenai > cohere > amazonsagemaker > google > noopai > huggingface > googlevertexai > oci > customrest > ibmwatsonxai
AWS DevOps
TâcheDescriptionCompétences requises

Consultez la liste des filtres disponibles.

Pour voir la liste de tous les filtres disponibles, utilisez la AWS CLI commande suivante :

k8sgpt filters list

Voici un exemple du résultat attendu de cette commande :

Active: > Deployment > ReplicaSet > PersistentVolumeClaim > Service > CronJob > Node > MutatingWebhookConfiguration > Pod > Ingress > StatefulSet > ValidatingWebhookConfiguration
AWS DevOps

Scannez un pod dans un espace de noms spécifique à l'aide d'un filtre.

Cette commande est utile pour le débogage ciblé de problèmes de pod spécifiques au sein d'un cluster Kubernetes, en utilisant les fonctionnalités d'Amazon Bedrock AI pour analyser et expliquer les problèmes détectés.

Pour scanner un pod dans un espace de noms spécifique à l'aide d'un filtre, utilisez la AWS CLI commande suivante :

k8sgpt analyze --backend amazonbedrock --explain --filter Pod -n default

Voici un exemple du résultat attendu de cette commande :

100% |████████████████████████████████████████████████████████| (1/1, 645 it/s) AI Provider: amazonbedrock 0: Pod default/crashme() - Error: the last termination reason is Error container=crashme pod=crashme Error: The pod named crashme terminated because the container named crashme crashed. Solution: Check logs for crashme pod to identify reason for crash. Restart pod or redeploy application to resolve crash.
AWS DevOps

Analysez un déploiement dans un espace de noms spécifique à l'aide d'un filtre.

Cette commande est utile pour identifier et résoudre les problèmes spécifiques au déploiement, en particulier lorsque l'état réel ne correspond pas à l'état souhaité.

Pour analyser un déploiement dans un espace de noms spécifique à l'aide d'un filtre, utilisez la AWS CLI commande suivante :

k8sgpt analyze --backend amazonbedrock --explain --filter Deployment -n default

Voici un exemple du résultat attendu de cette commande :

100% |██████████████████████████████████████████████████████████| (1/1, 10 it/min) AI Provider: amazonbedrock 0: Deployment default/nginx() - Error: Deployment default/nginx has 1 replicas but 2 are available Error: The Deployment named nginx in the default namespace has 1 replica specified but 2 pod replicas are running. Solution: Check if any other controllers like ReplicaSet or StatefulSet have created extra pods. Delete extra pods or adjust replica count to match available pods.
AWS DevOps

Scannez un nœud dans un espace de noms spécifique à l'aide d'un filtre.

Pour scanner un nœud dans un espace de noms spécifique à l'aide d'un filtre, utilisez la AWS CLI commande suivante :

k8sgpt analyze --backend amazonbedrock --explain --filter Node -n default

Voici un exemple du résultat attendu de cette commande :

AI Provider: amazonbedrock No problems detected
AWS DevOps
TâcheDescriptionCompétences requises

Obtenez des résultats détaillés.

Pour obtenir des résultats détaillés, utilisez la AWS CLI commande suivante :

k8sgpt analyze --backend amazonbedrock --explain --ouput json

Voici un exemple du résultat attendu de cette commande :

{ "provider": "amazonbedrock", "errors": null, "status": "ProblemDetected", "problems": 1, "results": [ { "kind": "Pod", "name": "default/crashme", "error": [ { "Text": "the last termination reason is Error container=crashme pod=crashme", "KubernetesDoc": "", "Sensitive": [] } ], "details": " Error: The pod named crashme terminated because the container named crashme crashed.\nSolution: Check logs for crashme pod to identify reason for crash. Restart pod or redeploy application to resolve crash.", "parentObject": "" } ] }
AWS DevOps

Vérifiez les pods problématiques.

Pour vérifier la présence de pods problématiques spécifiques, utilisez la AWS CLI commande suivante :

kubectl get pods --all-namespaces | grep -v Running

Voici un exemple du résultat attendu de cette commande :

NAMESPACE NAME READY STATUS RESTARTS AGE default crashme 0/1 CrashLoopBackOff 260(91s ago) 21h
AWS DevOps

Obtenez des informations spécifiques aux applications.

Cette commande est particulièrement utile lorsque :

  • Vous souhaitez vous concentrer sur une application spécifique de votre cluster.

  • Vous utilisez les étiquettes de manière efficace pour organiser vos ressources Kubernetes.

  • Vous devez vérifier rapidement l'état d'un composant spécifique de l'application.

Pour obtenir des informations spécifiques à l'application, utilisez la commande suivante :

k8sgpt analyze --backend amazonbedrock --explain -L app=nginx -n default

Voici un exemple du résultat attendu de cette commande :

AI Provider: amazonbedrock No problems detected

Ressources connexes

Blogues AWS

AWS documentation

Autres ressources