Implementieren Sie KI-gestützte Kubernetes-Diagnose und -Fehlerbehebung mit der Integration von K8SGPT und Amazon Bedrock - AWS Prescriptive Guidance

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Implementieren Sie KI-gestützte Kubernetes-Diagnose und -Fehlerbehebung mit der Integration von K8SGPT und Amazon Bedrock

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

Übersicht

Dieses Muster zeigt, wie KI-gestützte Kubernetes-Diagnose und -Fehlerbehebung implementiert werden können, indem K8SGPT in das auf Amazon Bedrock verfügbare Anthropic Claude v2-Modell integriert wird. Die Lösung bietet mithilfe einer sicheren Bastion-Host-Architektur Analysen in natürlicher Sprache und Schritte zur Behebung von Problemen mit Kubernetes-Clustern. Durch die Kombination von K8SGPT Kubernetes-Expertise mit den erweiterten Sprachfunktionen von Amazon Bedrock können DevOps Teams Clusterprobleme schnell identifizieren und lösen. Mit diesen Funktionen ist es möglich, die mittlere Zeit bis zur Problemlösung (MTTR) um bis zu 50 Prozent zu reduzieren.

Dieses cloudnative Muster nutzt Amazon Elastic Kubernetes Service (Amazon EKS) für das Kubernetes-Management. Das Muster implementiert bewährte Sicherheitsmethoden durch geeignete AWS Identity and Access Management (IAM-) Rollen und Netzwerkisolierung. Diese Lösung ist besonders wertvoll für Unternehmen, die ihren Kubernetes-Betrieb rationalisieren und ihre Fähigkeiten zur Fehlerbehebung mit KI-Unterstützung verbessern möchten.

Voraussetzungen und Einschränkungen

Voraussetzungen

  • Ein Aktiv AWS-Konto mit den entsprechenden Berechtigungen

  • AWS Command Line Interface (AWS CLI) installiert und konfiguriert

  • Ein Amazon EKS-Cluster

  • Zugriff auf das Modell Anthropic Claude 2 auf Amazon Bedrock

  • Ein Bastion-Host mit den erforderlichen Sicherheitsgruppeneinstellungen

  • K8SGPT ist installiert

Einschränkungen

  • Die K8sGPT-Analyse ist durch die Größe des Kontextfensters des Claude v2-Modells begrenzt.

  • Amazon Bedrock API-Tariflimits gelten auf der Grundlage Ihrer Kontokontingente.

  • Einige AWS-Services sind nicht in allen AWS-Regionen verfügbar. Informationen zur Verfügbarkeit in den einzelnen Regionen finden Sie unter AWS Dienste nach Regionen. Informationen zu bestimmten Endpunkten finden Sie unter Dienstendpunkte und Kontingente. Wählen Sie dort den Link für den Dienst aus.

Produktversionen

Architektur

Das folgende Diagramm zeigt die Architektur für KI-gestützte Kubernetes-Diagnosen unter Verwendung von K8SGPT, das in Amazon Bedrock integriert ist. AWS Cloud

Workflow für die Kubernetes-Diagnose mithilfe von K8SGPT, integriert in Amazon Bedrock.

Die Architektur zeigt den folgenden Workflow:

  1. Entwickler greifen über eine sichere Verbindung zum Bastion-Host auf die Umgebung zu. Diese EC2 Amazon-Instance dient als sicherer Einstiegspunkt und enthält die Installation der K8SGPT-Befehlszeilenschnittstelle (CLI) und die erforderlichen Konfigurationen.

  2. Der mit bestimmten IAM-Rollen konfigurierte Bastion-Host stellt sichere Verbindungen sowohl zum Amazon EKS-Cluster als auch zu den Amazon Bedrock-Endpunkten her. K8SGPT ist auf dem Bastion-Host installiert und konfiguriert, um die Kubernetes-Clusteranalyse durchzuführen.

  3. Amazon EKS verwaltet die Kubernetes-Steuerebene und die Worker-Knoten und stellt die Zielumgebung für die K8SGPT-Analyse bereit. Der Service läuft über mehrere Availability Zones innerhalb einer Virtual Private Cloud (VPC), was zu hoher Verfügbarkeit und Ausfallsicherheit beiträgt. Amazon EKS stellt Betriebsdaten über die Kubernetes-API bereit und ermöglicht so eine umfassende Clusteranalyse.

  4. K8sgpt sendet Analysedaten an Amazon Bedrock, das das Claude v2 Foundation Model (FM) für die Verarbeitung natürlicher Sprache bereitstellt. Der Service verarbeitet die K8SGPT-Analyse, um für Menschen lesbare Erklärungen zu generieren, und bietet detaillierte Lösungsvorschläge auf der Grundlage der identifizierten Probleme. Amazon Bedrock arbeitet als serverloser KI-Service mit hoher Verfügbarkeit und Skalierbarkeit.

Anmerkung

Während dieses Workflows steuert IAM den Zugriff zwischen Komponenten über Rollen und Richtlinien und verwaltet die Authentifizierung für die Interaktionen mit dem Bastion-Host, Amazon EKS und Amazon Bedrock. IAM implementiert das Prinzip der geringsten Rechte und ermöglicht eine sichere dienstübergreifende Kommunikation in der gesamten Architektur.

Automatisierung und Skalierung

K8sGPT-Operationen können mithilfe verschiedener AND-Tools automatisiert und auf mehrere Amazon EKS-Cluster skaliert werden. AWS-Services Diese Lösung unterstützt die Integration von Continuous Integration und Continuous Deployment (CI/CD) mithilfe von Jenkins, Actions oder für geplante Analysen. GitHub AWS CodeBuild Der K8SGPT-Operator ermöglicht eine kontinuierliche Überwachung im Cluster mit automatisierten Funktionen zur Problemerkennung und Berichterstattung. Für Bereitstellungen auf Unternehmensebene können Sie Amazon verwenden, um Scans EventBridge zu planen und automatische Antworten mit benutzerdefinierten Skripten auszulösen. AWS Die SDK-Integration ermöglicht die programmatische Steuerung einer großen Clusterflotte.

Tools

AWS-Services

Andere Tools

  • k8SGPT ist ein KI-gestütztes Open-Source-Tool, das das Kubernetes-Management transformiert. Es fungiert als Experte für Virtual Site Reliability Engineering (SRE) und scannt, diagnostiziert und behebt automatisch Probleme mit Kubernetes-Clustern. Administratoren können mit K8SGPT in natürlicher Sprache interagieren und klare, umsetzbare Einblicke in den Clusterstatus, Pod-Abstürze und Dienstausfälle erhalten. Die integrierten Analysatoren des Tools erkennen eine Vielzahl von Problemen, von falsch konfigurierten Komponenten bis hin zu Ressourcenbeschränkungen, und bieten Erklärungen und Lösungen. easy-to-understand

Bewährte Methoden

  • Implementieren Sie sichere Zugriffskontrollen, indem Sie AWS Systems Manager Session Manager den Hostzugriff für Bastion verwenden.

  • Stellen Sie sicher, dass die K8SGPT-Authentifizierung dedizierte IAM-Rollen mit den geringsten Berechtigungen für Amazon Bedrock- und Amazon EKS-Interaktionen verwendet. Weitere Informationen finden Sie in der IAM-Dokumentation unter Gewährung der geringsten Rechte und bewährte Methoden zur Sicherheit.

  • Konfigurieren Sie das Ressourcen-Tagging, aktivieren Sie die CloudWatch Amazon-Protokollierung für Prüfpfade und implementieren Sie die Datenanonymisierung für vertrauliche Informationen.

  • Sorgen Sie für regelmäßige Backups der K8SGPT-Konfigurationen und richten Sie automatische Scan-Zeitpläne außerhalb der Spitzenzeiten ein, um die Auswirkungen auf den Betrieb zu minimieren.

Epen

AufgabeBeschreibungErforderliche Fähigkeiten

Stellen Sie Amazon Bedrock als KI-Backend-Anbieter für K8SGPT ein.

Verwenden Sie den folgenden Befehl, um Amazon Bedrock als KI-Backend-Anbieter r für k8SGPT festzulegen: AWS CLI

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

Der Beispielbefehl verwendet für den. us-west-2 AWS-Region Sie können jedoch eine andere Region auswählen, vorausgesetzt, dass sowohl der Amazon EKS-Cluster als auch das entsprechende Amazon Bedrock-Modell in dieser ausgewählten Region verfügbar und aktiviert sind.

Führen Sie den folgenden amazonbedrock Befehl aus, um zu überprüfen, ob dieser zur Liste der AI-Backend-Anbieter hinzugefügt wurde und sich im Active Status befindet:

k8sgpt auth list

Im Folgenden finden Sie ein Beispiel für die erwartete Ausgabe dieses Befehls:

Default: > openai Active: > amazonbedrock Unused: > openai > localai > ollama > azureopenai > cohere > amazonsagemaker > google > noopai > huggingface > googlevertexai > oci > customrest > ibmwatsonxai
AWS DevOps
AufgabeBeschreibungErforderliche Fähigkeiten

Sehen Sie sich eine Liste der verfügbaren Filter an.

Verwenden Sie den folgenden AWS CLI Befehl, um die Liste aller verfügbaren Filter anzuzeigen:

k8sgpt filters list

Im Folgenden finden Sie ein Beispiel für die erwartete Ausgabe dieses Befehls:

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

Scannen Sie einen Pod in einem bestimmten Namespace mithilfe eines Filters.

Dieser Befehl ist nützlich für das gezielte Debuggen bestimmter Pod-Probleme innerhalb eines Kubernetes-Clusters. Dabei werden die KI-Funktionen von Amazon Bedrock verwendet, um die gefundenen Probleme zu analysieren und zu erklären.

Verwenden Sie den folgenden Befehl, um einen Pod in einem bestimmten Namespace mithilfe eines Filters zu scannen: AWS CLI

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

Im Folgenden finden Sie ein Beispiel für die erwartete Ausgabe dieses Befehls:

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

Scannen Sie eine Bereitstellung in einem bestimmten Namespace mithilfe eines Filters.

Dieser Befehl ist nützlich, um bereitstellungsspezifische Probleme zu identifizieren und zu beheben, insbesondere wenn der tatsächliche Status nicht dem gewünschten Status entspricht.

Verwenden Sie den folgenden Befehl, um eine Bereitstellung in einem bestimmten Namespace mithilfe eines Filters zu scannen: AWS CLI

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

Im Folgenden finden Sie ein Beispiel für die erwartete Ausgabe dieses Befehls:

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

Scannen Sie einen Knoten in einem bestimmten Namespace mithilfe eines Filters.

Verwenden Sie den folgenden AWS CLI Befehl, um einen Knoten in einem bestimmten Namespace mithilfe eines Filters zu scannen:

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

Im Folgenden finden Sie ein Beispiel für die erwartete Ausgabe dieses Befehls:

AI Provider: amazonbedrock No problems detected
AWS DevOps
AufgabeBeschreibungErforderliche Fähigkeiten

Erhalten Sie detaillierte Ergebnisse.

Verwenden Sie den folgenden AWS CLI Befehl, um detaillierte Ausgaben zu erhalten:

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

Im Folgenden finden Sie ein Beispiel für die erwartete Ausgabe dieses Befehls:

{ "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

Überprüfen Sie problematische Pods.

Verwenden Sie den folgenden AWS CLI Befehl, um nach bestimmten problematischen Pods zu suchen:

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

Im Folgenden finden Sie ein Beispiel für die erwartete Ausgabe dieses Befehls:

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

Erhalten Sie anwendungsspezifische Einblicke.

Dieser Befehl ist besonders nützlich, wenn:

  • Sie möchten sich auf eine bestimmte Anwendung in Ihrem Cluster konzentrieren.

  • Sie verwenden Labels effektiv, um Ihre Kubernetes-Ressourcen zu organisieren.

  • Sie müssen schnell den Zustand einer bestimmten Anwendungskomponente überprüfen.

Verwenden Sie den folgenden Befehl, um anwendungsspezifische Einblicke zu erhalten:

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

Im Folgenden finden Sie ein Beispiel für die erwartete Ausgabe dieses Befehls:

AI Provider: amazonbedrock No problems detected

Zugehörige Ressourcen

AWS-Blogs

AWS Dokumentation

Sonstige Ressourcen