Implementación de diagnósticos y solución de problemas de Kubernetes con tecnología de IA con la integración de K8sGPT y Amazon Bedrock - Recomendaciones de AWS

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Implementación de diagnósticos y solución de problemas de Kubernetes con tecnología de IA con la integración de K8sGPT y Amazon Bedrock

Ishwar Chauthaiwale, Muskan y Prafful Gupta, Amazon Web Services

Resumen

Este patrón demuestra cómo implementar diagnósticos y solución de problemas de Kubernetes con tecnología de IA mediante la integración de K8sGPT con el modelo Anthropic Claude v2 disponible en Amazon Bedrock. La solución proporciona un análisis en lenguaje natural y pasos para solucionar los problemas de los clústeres de Kubernetes mediante una arquitectura de host bastión segura. Al combinar la experiencia de K8sGPT en Kubernetes con las capacidades lingüísticas avanzadas de Amazon Bedrock DevOps , los equipos pueden identificar y resolver rápidamente los problemas de los clústeres. Con estas funcionalidades, es posible reducir el tiempo medio de resolución (MTTR) hasta en un 50 %.

Este patrón nativo en la nube utiliza Amazon Elastic Kubernetes Service (Amazon EKS) para la administración de Kubernetes. El patrón implementa las mejores prácticas de seguridad mediante las funciones adecuadas AWS Identity and Access Management (de IAM) y el aislamiento de la red. Esta solución es especialmente valiosa para las organizaciones que desean optimizar sus operaciones de Kubernetes y mejorar sus capacidades de solución de problemas con la ayuda de la IA.

Requisitos previos y limitaciones

Requisitos previos 

  • Un activo Cuenta de AWS con los permisos adecuados

  • AWS Command Line Interface (AWS CLI) instalado y configurado

  • Un clúster de Amazon EKS

  • Acceso al modelo Anthropic Claude 2 en Amazon Bedrock

  • Un host bastión con la configuración de grupo de seguridad requerida

  • K8sGPT instalado

Limitaciones

  • El análisis de K8sGPT está limitado por el tamaño de la ventana de contexto del modelo Claude v2.

  • Los límites de frecuencia de la API de Amazon Bedrock se aplican en función de las cuotas de su cuenta.

  • Algunas Servicios de AWS no están disponibles en todas Regiones de AWS. Para obtener información sobre la disponibilidad en regiones, consulte AWS Services by Region. Para ver los puntos de conexión específicos, consulte Service endpoints and quotas y elija el enlace del servicio.

Versiones de producto

Arquitectura

En el siguiente diagrama se muestra la arquitectura para el diagnóstico de Kubernetes con tecnología de IA mediante K8sGPT integrado con Amazon Bedrock en la Nube de AWS.

Flujo de trabajo para el diagnóstico de Kubernetes mediante K8sGPT integrado con Amazon Bedrock.

En la arquitectura se muestra el flujo de trabajo siguiente:

  1. Los desarrolladores acceden al entorno a través de una conexión segura al host bastión. Esta EC2 instancia de Amazon sirve como punto de entrada seguro y contiene la instalación de la interfaz de línea de comandos (CLI) K8sgpt y las configuraciones necesarias.

  2. El host bastión, configurado con roles de IAM específicos, establece conexiones seguras tanto con el clúster de Amazon EKS como con los puntos de conexión de Amazon Bedrock. K8sGPT se instala y configura en el host bastión para analizar los clústeres de Kubernetes.

  3. Amazon EKS administra el plano de control de Kubernetes y los nodos de trabajo, lo que proporciona el entorno de destino para el análisis de K8sGPT. El servicio se ejecuta en varias zonas de disponibilidad dentro de una nube privada virtual (VPC), lo que ayuda a proporcionar una alta disponibilidad y resiliencia. Amazon EKS suministra datos operativos a través de la API de Kubernetes, lo que permite un análisis integral de clústeres.

  4. K8sGPT envía los datos de análisis a Amazon Bedrock, que proporciona el modelo fundacional (FM) Claude v2 para el procesamiento de lenguaje natural. El servicio procesa el análisis del K8sGPT para generar explicaciones legibles para los humanos y ofrece sugerencias de corrección detalladas basadas en los problemas identificados. Amazon Bedrock funciona como un servicio de IA sin servidor con alta disponibilidad y escalabilidad.

nota

A lo largo de este flujo de trabajo, IAM controla el acceso entre los componentes mediante roles y políticas, y administra la autenticación de las interacciones entre el host bastión, Amazon EKS y Amazon Bedrock. IAM implementa el principio de privilegio mínimo y permite una comunicación segura entre servicios en toda la arquitectura.

Automatización y escala

Las operaciones de K8sgpt pueden automatizarse y escalarse en varios clústeres de Amazon EKS a través de diversas herramientas. Servicios de AWS Esta solución admite la integración continua y la integración del despliegue continuo (CI/CD) mediante Jenkins, GitHub Actions o para análisis programados. AWS CodeBuild El operador K8sGPT permite la supervisión continua en el clúster con funcionalidades automatizadas de detección de problemas y generación de informes. Para despliegues a escala empresarial, puedes usar Amazon EventBridge para programar escaneos y activar respuestas automatizadas con scripts personalizados. AWS La integración del SDK permite el control programático en una gran flota de clústeres.

Tools (Herramientas)

Servicios de AWS

Otras herramientas

  • K8sGPT es una herramienta de código abierto con tecnología de IA que transforma la administración de Kubernetes. Actúa como experto virtual en ingeniería de confiabilidad del sitio (SRE) y analiza, diagnostica y soluciona automáticamente los problemas del clúster de Kubernetes. Los administradores pueden interactuar con K8sGPT mediante un lenguaje natural y obtener información clara y práctica sobre el estado del clúster, los fallos de los pods y los fallos del servicio. Los analizadores integrados en la herramienta detectan una amplia gama de problemas, desde componentes mal configurados hasta limitaciones de recursos, y ofrecen easy-to-understand explicaciones y soluciones.

Prácticas recomendadas

Epics

TareaDescripciónHabilidades requeridas

Configurar Amazon Bedrock como proveedor de backend de IA para K8sGPT.

Para configurar Amazon Bedrock como el proveedor de backend de la IA r para K8sgpt, utilice el siguiente comando: AWS CLI

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

En el comando de ejemplo se utiliza us-west-2 para la Región de AWS. Sin embargo, puede seleccionar otra región, siempre que tanto el clúster de Amazon EKS como el modelo de Amazon Bedrock correspondiente estén disponibles y habilitados en la región seleccionada.

Para comprobar si amazonbedrock se ha agregado a la lista de proveedores de backend de IA y si se encuentra en estado Active, ejecute el siguiente comando:

k8sgpt auth list

A continuación, se muestra un ejemplo de la salida esperada de este comando:

Default: > openai Active: > amazonbedrock Unused: > openai > localai > ollama > azureopenai > cohere > amazonsagemaker > google > noopai > huggingface > googlevertexai > oci > customrest > ibmwatsonxai
AWS DevOps
TareaDescripciónHabilidades requeridas

Ver una lista de filtros disponibles.

Para ver la lista de todos los filtros disponibles, utilice el siguiente AWS CLI comando:

k8sgpt filters list

A continuación, se muestra un ejemplo de la salida esperada de este comando:

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

Analizar un pod en un espacio de nombres específico mediante un filtro.

Este comando es útil para la depuración selectiva de problemas específicos de los pods dentro de un clúster de Kubernetes, utilizando las funcionalidades de IA de Amazon Bedrock para analizar y explicar los problemas que encuentra.

Para escanear un pod en un espacio de nombres específico mediante un filtro, utilice el siguiente comando: AWS CLI

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

A continuación, se muestra un ejemplo de la salida esperada de este 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

Analizar una implementación en un espacio de nombres específico mediante un filtro.

Este comando es útil para identificar y solucionar problemas específicos de la implementación, especialmente cuando el estado real no coincide con el estado deseado.

Para escanear una implementación en un espacio de nombres específico mediante un filtro, utilice el siguiente comando: AWS CLI

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

A continuación, se muestra un ejemplo de la salida esperada de este 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

Analizar un nodo en un espacio de nombres específico mediante un filtro.

Para escanear un nodo de un espacio de nombres específico mediante un filtro, utilice el siguiente comando: AWS CLI

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

A continuación, se muestra un ejemplo de la salida esperada de este comando:

AI Provider: amazonbedrock No problems detected
AWS DevOps
TareaDescripciónHabilidades requeridas

Obtener salidas detalladas.

Para obtener resultados detallados, utilice el siguiente AWS CLI comando:

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

A continuación, se muestra un ejemplo de la salida esperada de este 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

Comprobar los pods problemáticos.

Para comprobar si hay pods problemáticos específicos, usa el siguiente AWS CLI comando:

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

A continuación, se muestra un ejemplo de la salida esperada de este comando:

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

Obtener información específica de la aplicación.

Este comando resulta especialmente útil cuando:

  • Desea centrarse en una aplicación específica de su clúster.

  • Utiliza las etiquetas de forma eficaz para organizar los recursos de Kubernetes.

  • Debe comprobar rápidamente el estado de un componente de la aplicación en particular.

Para obtener información específica de la aplicación, use el siguiente comando:

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

A continuación, se muestra un ejemplo de la salida esperada de este comando:

AI Provider: amazonbedrock No problems detected

Recursos relacionados

Blogs de AWS

AWS documentación

Otros recursos