Implemente diagnósticos e solução de problemas do Kubernetes baseados em IA com a integração entre o K8SGpt e o 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á.

Implemente diagnósticos e solução de problemas do Kubernetes baseados em IA com a integração entre o K8SGpt e o Amazon Bedrock

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

Resumo

Esse padrão demonstra como implementar o diagnóstico e a solução de problemas do Kubernetes baseados em IA integrando o K8SGpt ao modelo Anthropic Claude v2 disponível no Amazon Bedrock. A solução fornece etapas de análise e correção de linguagem natural para problemas de cluster 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. Com esses recursos, é possível reduzir o tempo médio de resolução (MTTR) em até 50%.

Esse padrão nativo da nuvem utiliza 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. Essa solução é particularmente valiosa para organizações que desejam otimizar suas operações de Kubernetes e aprimorar seus recursos de solução de problemas com a assistência de IA.

Pré-requisitos e limitações

Pré-requisitos

Limitações

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

  • Os limites de taxa da API Amazon Bedrock se aplicam 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 saber a disponibilidade da região, consulte AWS Serviços por região. Para endpoints específicos, consulte Endpoints e cotas de serviço e escolha o link para o serviço.

Versões do produto

Arquitetura

O diagrama a seguir mostra a arquitetura para diagnósticos de Kubernetes baseados em IA usando o K8SGpt integrado ao Amazon Bedrock no. Nuvem AWS

Fluxo de trabalho para diagnósticos do Kubernetes usando o K8sGpt integrado ao Amazon Bedrock.

A arquitetura mostra o seguinte fluxo de trabalho:

  1. Os desenvolvedores acessam o ambiente por meio de uma conexão segura com o host bastion. 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 funções específicas do IAM, estabelece conexões seguras com o cluster Amazon EKS e com os endpoints do Amazon Bedrock. O K8SGpt é instalado e configurado no host bastion para realizar a análise de cluster do Kubernetes.

  3. O Amazon EKS gerencia o plano de controle e os nós de trabalho do Kubernetes, fornecendo o ambiente de destino para a análise do K8SGpt. O serviço é executado em várias zonas de disponibilidade em uma nuvem privada virtual (VPC), o que ajuda a fornecer alta disponibilidade e resiliência. O Amazon EKS fornece dados operacionais por meio da API Kubernetes, permitindo uma análise abrangente de clusters.

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

nota

Em todo esse fluxo de trabalho, o IAM controla o acesso entre componentes por meio de funções e políticas, gerenciando a autenticação das interações do bastion host, do Amazon EKS e do Amazon Bedrock. O IAM implementa o princípio do privilégio mínimo e permite a comunicação segura entre 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 K8SGpt permite o monitoramento contínuo no cluster com recursos automatizados de detecção e geração de relatórios 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 baseada em IA que transforma o gerenciamento do Kubernetes. Ele atua como especialista em engenharia de confiabilidade de sites virtuais (SRE), examinando, diagnosticando e solucionando automaticamente os problemas do cluster Kubernetes. Os administradores podem interagir com o K8sGpt usando linguagem natural e obter informações claras e práticas sobre o estado do cluster, falhas no pod e falhas no 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

TarefaDescriçãoHabilidades necessárias

Defina o Amazon Bedrock como o provedor de back-end 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 para Região da AWS o. No entanto, você pode selecionar outra região, desde que o cluster Amazon EKS e o modelo correspondente do Amazon Bedrock estejam disponíveis e habilitados nessa região selecionada.

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

k8sgpt auth list

Veja a seguir um exemplo da saída esperada desse comando:

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

Veja 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

Veja a seguir um exemplo da saída esperada desse comando:

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

Escaneie um pod em um namespace específico usando um filtro.

Esse comando é útil para a depuração direcionada de problemas específicos de pods em um cluster Kubernetes, usando os recursos 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

Veja a seguir um exemplo da saída esperada desse 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

Examine uma implantação em um namespace específico usando um filtro.

Esse comando é útil para identificar e solucionar problemas específicos da implantação, principalmente quando o estado real 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

Veja a seguir um exemplo da saída esperada desse 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

Examine um nó em um namespace específico usando 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

Veja a seguir um exemplo da saída esperada desse comando:

AI Provider: amazonbedrock No problems detected
AWS DevOps
TarefaDescriçãoHabilidades necessárias

Obtenha resultados detalhados.

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

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

Veja a seguir um exemplo da saída esperada desse 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 problemáticos.

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

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

Veja a seguir um exemplo da saída esperada desse comando:

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

Obtenha insights específicos do aplicativo.

Esse comando é particularmente útil quando:

  • Você quer se concentrar em um aplicativo específico em seu cluster.

  • Você usa rótulos de forma eficaz para organizar seus recursos do Kubernetes.

  • Você precisa verificar rapidamente a integridade de um componente específico do aplicativo.

Para obter insights específicos do aplicativo, use o seguinte comando:

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

Veja a seguir um exemplo da saída esperada desse comando:

AI Provider: amazonbedrock No problems detected

Recursos relacionados

Blogs da AWS

AWS documentação

Outros recursos