View a markdown version of this page

Implementação de diagnósticos e solução de problemas com base em IA no Kubernetes usando a integração do K8sGPT e do Amazon Bedrock - Recomendações da AWS

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Implementação de diagnósticos e solução de problemas com base em IA no Kubernetes usando a integração do K8sGPT e do Amazon Bedrock

Ishwar Chauthaiwale, Muskan e Prafful Gupta, Amazon Web Services

Resumo

Este padrão demonstra como implementar diagnósticos e solução de problemas com base em IA no Kubernetes, integrando o K8sGPT ao modelo Claude v2, da Anthropic, disponível no Amazon Bedrock. A solução fornece análise em linguagem natural e etapas de correção para problemas em clusters do Kubernetes por meio de uma arquitetura segura de bastion host. Ao combinar a experiência do K8sGpt Kubernetes com os recursos avançados de linguagem do Amazon Bedrock DevOps , as equipes podem identificar e resolver problemas de cluster rapidamente. Graças a essas funcionalidades, é possível reduzir o tempo médio de resolução (MTTR, na sigla em inglês) em até 50%.

Este padrão nativo da nuvem usa o Amazon Elastic Kubernetes Service (Amazon EKS) para o gerenciamento do Kubernetes. O padrão implementa as melhores práticas de segurança por meio de funções AWS Identity and Access Management (IAM) adequadas e isolamento de rede. Esta solução é especialmente útil para organizações que desejam otimizar as operações no Kubernetes e aprimorar suas funcionalidades de solução de problemas com assistência de IA.

Pré-requisitos e limitações

Pré-requisitos

  • Um ativo Conta da AWS com as permissões apropriadas

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

  • Um cluster do Amazon EKS

  • Acesso ao modelo Claude 2 da Anthropic no Amazon Bedrock

  • Um bastion host com as configurações de grupo de segurança necessárias

  • K8sGPT instalado

Limitações

  • A análise do K8sGPT é limitada pelo tamanho da janela de contexto do modelo Claude v2.

  • Os limites de taxa da API do Amazon Bedrock são aplicados com base nas cotas da sua conta.

  • Alguns Serviços da AWS não estão disponíveis em todos Regiões da AWS. Para conferir a disponibilidade de uma região, consulte AWS Services by Region. Para endpoints específicos, consulte Service endpoints and quotas e clique no link correspondente ao serviço desejado.

Versões do produto

Arquitetura

O diagrama apresentado a seguir ilustra a arquitetura para diagnósticos com base em IA no Kubernetes, usando o K8sGPT integrado ao Amazon Bedrock na Nuvem AWS.

Fluxo de trabalho para diagnósticos no Kubernetes usando o K8sGPT integrado ao Amazon Bedrock.

A arquitetura apresenta o seguinte fluxo de trabalho:

  1. Os desenvolvedores acessam o ambiente por meio de uma conexão segura com o bastion host. Essa EC2 instância da Amazon serve como ponto de entrada seguro e contém a instalação da interface de linha de comando (CLI) do K8SGpt e as configurações necessárias.

  2. O bastion host, configurado com perfis do IAM específicos, estabelece conexões seguras tanto com o cluster do Amazon EKS quanto com os endpoints do Amazon Bedrock. O K8sGPT é instalado e configurado no bastion host para realizar a análise do cluster do Kubernetes.

  3. O Amazon EKS gerencia o ambiente de gerenciamento do Kubernetes e os nós de processamento, fornecendo o ambiente de destino para a análise do K8sGPT. O serviço opera em várias zonas de disponibilidade dentro de uma nuvem privada virtual (VPC), o que ajuda a garantir alta disponibilidade e resiliência. O Amazon EKS fornece dados operacionais por meio da API do Kubernetes, permitindo uma análise completa do cluster.

  4. O K8sGPT envia os dados de análise para o Amazon Bedrock, que fornece o modelo de base (FM) do Claude v2 para o processamento de linguagem natural. O serviço processa a análise do K8sGPT para gerar explicações legíveis para seres humanos e oferece sugestões detalhadas de correção com base nos problemas identificados. O Amazon Bedrock funciona como um serviço de IA com tecnologia sem servidor, alta disponibilidade e escalabilidade.

nota

Neste fluxo de trabalho, o IAM controla o acesso entre os componentes por meio de perfis e políticas, gerenciando a autenticação das interações entre o bastion host, o Amazon EKS e o Amazon Bedrock. O IAM implementa o princípio de privilégio mínimo e possibilita a comunicação segura entre os serviços em toda a arquitetura.

Automação e escala

As operações do K8sGpt podem ser automatizadas e escaladas em vários clusters do Amazon EKS por meio de várias ferramentas. Serviços da AWS Essa solução oferece suporte à integração contínua e à integração de implantação contínua (CI/CD) usando Jenkins, GitHub Actions ou AWS CodeBuildpara análise programada. O operador do K8sGPT possibilita o monitoramento contínuo dentro do cluster, com funcionalidades automatizadas de detecção e de geração de relatório de problemas. Para implantações em escala empresarial, você pode usar a Amazon EventBridge para agendar escaneamentos e acionar respostas automatizadas com scripts personalizados. AWS A integração do SDK permite o controle programático em uma grande frota de clusters.

Ferramentas

Serviços da AWS

Outras ferramentas

  • O K8sGPT é uma ferramenta de código aberto com base em IA que transforma o gerenciamento do Kubernetes. Essa ferramenta atua como um especialista virtual em engenharia de confiabilidade de sites (SRE), realizando, de forma automática, verificações, diagnósticos e solução de problemas em clusters do Kubernetes. Os administradores podem interagir com o K8sGPT em linguagem natural e obter insights claros e acionáveis sobre o estado do cluster, as falhas relacionadas ao pod e os problemas do serviço. Os analisadores integrados da ferramenta detectam uma ampla variedade de problemas, desde componentes mal configurados até restrições de recursos, e fornecem explicações e soluções. easy-to-understand

Práticas recomendadas

Épicos

TarefaDescriptionHabilidades necessárias

Defina o Amazon Bedrock como o provedor de backend de IA para o K8sGPT.

Para definir o Amazon Bedrock como o provedor de back-end de IA r para o K8SGpt, use o seguinte comando: AWS CLI

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

O comando de exemplo usa us-west-2 como a Região da AWS. No entanto, é possível selecionar outra região, desde que tanto o cluster do Amazon EKS quanto o modelo correspondente do Amazon Bedrock estejam disponíveis e habilitados nessa região selecionada.

Para verificar se amazonbedrock foi adicionado à lista de provedores de backend de IA e está no estado Active, execute o seguinte comando:

k8sgpt auth list

A seguir, apresentamos um exemplo da saída esperada para este comando:

Default: > openai Active: > amazonbedrock Unused: > openai > localai > ollama > azureopenai > cohere > amazonsagemaker > google > noopai > huggingface > googlevertexai > oci > customrest > ibmwatsonxai
AWS DevOps
TarefaDescriptionHabilidades necessárias

Confira uma lista dos filtros disponíveis.

Para ver a lista de todos os filtros disponíveis, use o seguinte AWS CLI comando:

k8sgpt filters list

A seguir, apresentamos um exemplo da saída esperada para este comando:

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

Realize a verificação de um pod em um namespace específico aplicando um filtro.

Este comando é útil para a depuração de problemas específicos de pods em um cluster do Kubernetes, usando as funcionalidades de IA do Amazon Bedrock para analisar e explicar os problemas encontrados.

Para escanear um pod em um namespace específico usando um filtro, use o seguinte comando: AWS CLI

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

A seguir, apresentamos um exemplo da saída esperada para 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

Realize a verificação de uma implantação em um namespace específico aplicando um filtro.

Este comando é útil para identificar e solucionar problemas específicos da implantação, especialmente quando o estado atual não corresponde ao estado desejado.

Para verificar uma implantação em um namespace específico usando um filtro, use o seguinte comando: AWS CLI

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

A seguir, apresentamos um exemplo da saída esperada para 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

Realize a verificação de um nó em um namespace específico aplicando um filtro.

Para verificar um nó em um namespace específico usando um filtro, use o seguinte comando: AWS CLI

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

A seguir, apresentamos um exemplo da saída esperada para este comando:

AI Provider: amazonbedrock No problems detected
AWS DevOps
TarefaDescriptionHabilidades necessárias

Obtenha saídas detalhadas.

Para obter resultados detalhados, use o seguinte AWS CLI comando:

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

A seguir, apresentamos um exemplo da saída esperada para 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

Verifique os pods com problemas.

Para verificar se há pods problemáticos específicos, use o seguinte comando: AWS CLI

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

A seguir, apresentamos um exemplo da saída esperada para este comando:

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

Obtenha insights específicos da aplicação.

Este comando é particularmente útil quando:

  • Você deseja se concentrar em uma aplicação específica no seu cluster.

  • Você utiliza rótulos de forma eficaz para organizar os recursos do Kubernetes.

  • Você precisa verificar rapidamente a integridade de um componente específico da aplicação.

Para obter insights específicos da aplicação, use o seguinte comando:

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

A seguir, apresentamos um exemplo da saída esperada para este comando:

AI Provider: amazonbedrock No problems detected

Recursos relacionados

Blogs da AWS

AWS documentação

Outros recursos