Implementa la diagnostica e la risoluzione dei problemi di Kubernetes basate sull'intelligenza artificiale con K8SGPT e l'integrazione con Amazon Bedrock - Prontuario AWS

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Implementa la diagnostica e la risoluzione dei problemi di Kubernetes basate sull'intelligenza artificiale con K8SGPT e l'integrazione con Amazon Bedrock

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

Riepilogo

Questo modello dimostra come implementare la diagnostica e la risoluzione dei problemi di Kubernetes basate sull'intelligenza artificiale integrando K8SGPT con il modello Anthropic Claude v2 disponibile su Amazon Bedrock. La soluzione fornisce analisi in linguaggio naturale e procedure di correzione per i problemi del cluster Kubernetes attraverso un'architettura host bastion sicura. Combinando l'esperienza di K8SGPT Kubernetes con le funzionalità linguistiche avanzate di Amazon Bedrock DevOps , i team possono identificare e risolvere rapidamente i problemi dei cluster. Con queste funzionalità, è possibile ridurre il tempo medio di risoluzione (MTTR) fino al 50%.

Questo modello nativo del cloud sfrutta Amazon Elastic Kubernetes Service (Amazon EKS) per la gestione di Kubernetes. Il modello implementa le migliori pratiche di sicurezza attraverso ruoli (IAM) appropriati e isolamento della rete. AWS Identity and Access Management Questa soluzione è particolarmente utile per le organizzazioni che desiderano semplificare le operazioni su Kubernetes e migliorare le capacità di risoluzione dei problemi con l'assistenza dell'IA.

Prerequisiti e limitazioni

Prerequisiti

Limitazioni

  • L'analisi K8sgpt è limitata dalla dimensione della finestra di contesto del modello Claude v2.

  • I limiti di velocità dell'API Amazon Bedrock si applicano in base alle quote del tuo account.

  • Alcuni Servizi AWS non sono disponibili in tutti. Regioni AWS Per la disponibilità regionale, vedi AWS Servizi per regione. Per endpoint specifici, consulta Endpoints and quotas del servizio e scegli il link relativo al servizio.

Versioni del prodotto

Architettura

Il diagramma seguente mostra l'architettura per la diagnostica Kubernetes basata sull'intelligenza artificiale che utilizza K8sgPT integrato con Amazon Bedrock in. Cloud AWS

Flusso di lavoro per la diagnostica Kubernetes utilizzando K8SGpt integrato con Amazon Bedrock.

L'architettura mostra il seguente flusso di lavoro:

  1. Gli sviluppatori accedono all'ambiente tramite una connessione sicura all'host bastion. Questa EC2 istanza Amazon funge da punto di ingresso sicuro e contiene l'installazione dell'interfaccia a riga di comando (CLI) K8SGpt e le configurazioni richieste.

  2. L'host bastion, configurato con ruoli IAM specifici, stabilisce connessioni sicure sia al cluster Amazon EKS che agli endpoint Amazon Bedrock. K8sgpt è installato e configurato sull'host bastion per eseguire l'analisi del cluster Kubernetes.

  3. Amazon EKS gestisce il piano di controllo Kubernetes e i nodi di lavoro, fornendo l'ambiente di destinazione per l'analisi K8sgPT. Il servizio funziona su più zone di disponibilità all'interno di un cloud privato virtuale (VPC), il che aiuta a fornire disponibilità e resilienza elevate. Amazon EKS fornisce dati operativi tramite l'API Kubernetes, che consente un'analisi completa dei cluster.

  4. K8sgPT invia i dati di analisi ad Amazon Bedrock, che fornisce il Claude v2 Foundation Model (FM) per l'elaborazione del linguaggio naturale. Il servizio elabora l'analisi K8sgpt per generare spiegazioni leggibili dall'uomo e offre suggerimenti di correzione dettagliati in base ai problemi identificati. Amazon Bedrock funziona come un servizio di intelligenza artificiale senza server con disponibilità e scalabilità elevate.

Nota

In tutto questo flusso di lavoro, IAM controlla l'accesso tra i componenti tramite ruoli e policy, gestendo l'autenticazione per le interazioni tra bastion host, Amazon EKS e Amazon Bedrock. IAM implementa il principio del privilegio minimo e consente una comunicazione sicura tra servizi in tutta l'architettura.

Automazione e scalabilità

Le operazioni K8sgPT possono essere automatizzate e scalate su più cluster Amazon EKS tramite vari strumenti. Servizi AWS Questa soluzione supporta l'integrazione continua e l'integrazione della distribuzione continua (CI/CD) utilizzando Jenkins, Actions o per l'analisi pianificata. GitHub AWS CodeBuild L'operatore K8SGPT consente il monitoraggio continuo all'interno del cluster con funzionalità automatiche di rilevamento e segnalazione dei problemi. Per le implementazioni su scala aziendale, puoi utilizzare Amazon EventBridge per pianificare scansioni e attivare risposte automatiche con script personalizzati. AWS L'integrazione SDK consente il controllo programmatico su un'ampia flotta di cluster.

Strumenti

Servizi AWS

Altri strumenti

  • K8SGPT è uno strumento open source basato sull'intelligenza artificiale che trasforma la gestione di Kubernetes. Agisce come esperto di Virtual Site Reliability Engineering (SRE), scansionando, diagnosticando e risolvendo automaticamente i problemi del cluster Kubernetes. Gli amministratori possono interagire con K8SGPT utilizzando il linguaggio naturale e ottenere informazioni chiare e fruibili sullo stato del cluster, sugli arresti anomali dei pod e sugli errori del servizio. Gli analizzatori integrati dello strumento rilevano un'ampia gamma di problemi, dai componenti mal configurati ai vincoli di risorse, e forniscono spiegazioni e soluzioni. easy-to-understand

Best practice

Epiche

AttivitàDescrizioneCompetenze richieste

Imposta Amazon Bedrock come provider di backend AI per K8sgPT.

Per impostare Amazon Bedrock come fornitore di backend AI r per K8sgpt, usa il seguente comando: AWS CLI

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

Il comando di esempio utilizza per. us-west-2 Regione AWS Tuttavia, puoi selezionare un'altra regione, a condizione che sia il cluster Amazon EKS che il modello Amazon Bedrock corrispondente siano disponibili e abilitati nella regione selezionata.

Per verificare che amazonbedrock sia stato aggiunto all'elenco dei provider di backend AI e sia nello Active stato, esegui il comando seguente:

k8sgpt auth list

Di seguito è riportato un esempio dell'output previsto di questo comando:

Default: > openai Active: > amazonbedrock Unused: > openai > localai > ollama > azureopenai > cohere > amazonsagemaker > google > noopai > huggingface > googlevertexai > oci > customrest > ibmwatsonxai
AWS DevOps
AttivitàDescrizioneCompetenze richieste

Visualizza un elenco di filtri disponibili.

Per visualizzare l'elenco di tutti i filtri disponibili, usa il seguente AWS CLI comando:

k8sgpt filters list

Di seguito è riportato un esempio dell'output previsto di questo comando:

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

Scansiona un pod in uno spazio dei nomi specifico utilizzando un filtro.

Questo comando è utile per il debug mirato di problemi specifici dei pod all'interno di un cluster Kubernetes, utilizzando le funzionalità AI di Amazon Bedrock per analizzare e spiegare i problemi rilevati.

Per scansionare un pod in uno spazio dei nomi specifico utilizzando un filtro, usa il seguente comando: AWS CLI

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

Di seguito è riportato un esempio dell'output previsto di questo comando:

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

Scansiona una distribuzione in uno spazio dei nomi specifico utilizzando un filtro.

Questo comando è utile per identificare e risolvere problemi specifici della distribuzione, in particolare quando lo stato effettivo non corrisponde allo stato desiderato.

Per eseguire la scansione di una distribuzione in uno spazio dei nomi specifico utilizzando un filtro, utilizzare il comando seguente: AWS CLI

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

Di seguito è riportato un esempio dell'output previsto di questo comando:

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

Scansiona un nodo in uno spazio dei nomi specifico utilizzando un filtro.

Per eseguire la scansione di un nodo in uno spazio dei nomi specifico utilizzando un filtro, utilizzate il seguente comando: AWS CLI

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

Di seguito è riportato un esempio dell'output previsto di questo comando:

AI Provider: amazonbedrock No problems detected
AWS DevOps
AttivitàDescrizioneCompetenze richieste

Ottieni risultati dettagliati.

Per ottenere risultati dettagliati, usa il seguente comando: AWS CLI

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

Di seguito è riportato un esempio dell'output previsto di questo comando:

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

Controlla i pod problematici.

Per verificare la presenza di pod problematici specifici, utilizzate il seguente comando: AWS CLI

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

Di seguito è riportato un esempio dell'output previsto di questo comando:

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

Ottieni approfondimenti specifici per le applicazioni.

Questo comando è particolarmente utile quando:

  • Vuoi concentrarti su un'applicazione specifica del tuo cluster.

  • Utilizzi le etichette in modo efficace per organizzare le tue risorse Kubernetes.

  • È necessario verificare rapidamente lo stato di un particolare componente dell'applicazione.

Per ottenere informazioni specifiche sull'applicazione, utilizzate il seguente comando:

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

Di seguito è riportato un esempio dell'output previsto di questo comando:

AI Provider: amazonbedrock No problems detected

Risorse correlate

Blog AWS

AWS documentazione

Altre risorse