Implemente diagnósticos y solución de problemas de Kubernetes basados en 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.

Implemente diagnósticos y solución de problemas de Kubernetes basados en IA con la integración de K8sgpt y Amazon Bedrock

Ishwar Chaauthaiwale, Muskan., y Prafful Gupta, de Amazon Web Services

Resumen

Este patrón demuestra cómo implementar el diagnóstico y la solución de problemas de Kubernetes con tecnología de inteligencia artificial 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 del clúster de Kubernetes mediante una arquitectura de host basada en bastiones 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 capacidades, es posible reducir el tiempo medio de resolución (MTTR) hasta en un 50 por ciento.

Este patrón nativo de la nube aprovecha 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 (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 de 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 velocidad de la API de Amazon Bedrock se aplican en función de las cuotas de su cuenta.

  • Algunos Servicios de AWS no están disponibles en todos Regiones de AWS. Para ver la disponibilidad regional, consulta AWS Servicios por región. Para conocer puntos de enlace específicos, consulte Puntos de enlace y cuotas del servicio y elija el enlace para el 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 el uso de K8sgpt integrado con Amazon Bedrock en el. Nube de AWS

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

La arquitectura muestra el siguiente flujo de trabajo:

  1. Los desarrolladores acceden al entorno a través de una conexión segura con el host del 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 funciones de IAM específicas, establece conexiones seguras tanto con el clúster de Amazon EKS como con los puntos de enlace de Amazon Bedrock. K8sgpt se instala y configura en el host bastión para realizar el análisis de 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 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 básico (FM) Claude v2 para el procesamiento del 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 funciones y políticas, y gestiona la autenticación de las interacciones entre el host bastión, Amazon EKS y Amazon Bedrock. IAM implementa el principio del privilegio mínimo y permite una comunicación segura entre servicios en toda la arquitectura.

Automatizar y escalar

Las operaciones de K8sgpt se pueden automatizar y escalar en varios clústeres de Amazon EKS mediante 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 dentro del clúster con funciones automatizadas de detección e informe de problemas. 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.

Herramientas

Servicios de AWS

Otras herramientas

  • K8sgpt es una herramienta de código abierto basada en inteligencia artificial que transforma la administración de Kubernetes. Actúa como experto en ingeniería de confiabilidad (SRE) de sitios virtuales y escanea, 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 módulos 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 explicaciones y soluciones. easy-to-understand

Prácticas recomendadas

Epics

TareaDescripciónHabilidades requeridas

Configure Amazon Bedrock como el 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

El comando de ejemplo se utiliza para. us-west-2 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 activados en la región seleccionada.

Para comprobar si amazonbedrock se ha añadido a la lista de proveedores de back-end de IA y si se encuentra en ese Active estado, ejecute el siguiente comando:

k8sgpt auth list

A continuación se muestra un ejemplo del resultado esperado 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

Vea 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 del resultado esperado de este comando:

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

Escanea 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 capacidades 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, usa el siguiente comando: AWS CLI

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

A continuación se muestra un ejemplo del resultado esperado 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

Escanee 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 del resultado esperado 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

Escanee un nodo de 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 del resultado esperado de este comando:

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

Obtenga resultados detallados.

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

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

A continuación se muestra un ejemplo del resultado esperado 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

Compruebe los módulos problemáticos.

Para comprobar si hay cápsulas problemáticas específicas, usa el siguiente AWS CLI comando:

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

A continuación se muestra un ejemplo del resultado esperado de este comando:

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

Obtenga información específica sobre las aplicaciones.

Este comando es particularmente ú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 sobre la aplicación, utilice el siguiente comando:

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

A continuación se muestra un ejemplo del resultado esperado de este comando:

AI Provider: amazonbedrock No problems detected

Recursos relacionados

Blogs de AWS

AWS documentación

Otros recursos