K8sGPT 및 Amazon Bedrock 통합을 사용하여 AI 기반 Kubernetes 진단 및 문제 해결 구현 - 권장 가이드

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

K8sGPT 및 Amazon Bedrock 통합을 사용하여 AI 기반 Kubernetes 진단 및 문제 해결 구현

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

요약

이 패턴은 K8sGPT를 Amazon Bedrock에서 사용할 수 있는 Anthropic Claude v2 모델과 통합하여 AI 기반 Kubernetes 진단 및 문제 해결을 구현하는 방법을 보여줍니다. 이 솔루션은 안전한 접속 호스트 아키텍처를 통해 Kubernetes 클러스터 문제에 대한 자연어 분석 및 수정 단계를 제공합니다. K8sGPT Kubernetes 전문 지식과 Amazon Bedrock 고급 언어 기능을 결합하여 DevOps 팀은 클러스터 문제를 신속하게 식별하고 해결할 수 있습니다. 이러한 기능을 사용하면 평균 해결 시간(MTTR)을 최대 50% 줄일 수 있습니다.

이 클라우드 네이티브 패턴은 Kubernetes 관리를 위해 Amazon Elastic Kubernetes Service(Amazon EKS)를 활용합니다. 이 패턴은 적절한 AWS Identity and Access Management (IAM) 역할 및 네트워크 격리를 통해 보안 모범 사례를 구현합니다. 이 솔루션은 Kubernetes 운영을 간소화하고 AI 지원을 통해 문제 해결 기능을 개선하려는 조직에 특히 유용합니다.

사전 조건 및 제한 사항

사전 조건 

  • 적절한 권한이 AWS 계정 있는 활성

  • AWS Command Line Interface (AWS CLI) 설치구성

  • Amazon EKS 클러스터

  • Amazon Bedrock에서 Anthropic Claude 2 모델에 대한 액세스

  • 필수 보안 그룹 설정이 있는 접속 호스트

  • K8sGPT 설치

제한 사항

  • K8sGPT 분석은 Claude v2 모델의 컨텍스트 창 크기에 따라 제한됩니다.

  • Amazon Bedrock API 속도 제한은 계정 할당량에 따라 적용됩니다.

  • 일부 AWS 서비스 는 전혀 사용할 수 없습니다 AWS 리전. 리전 가용성은 AWS 리전별 서비스를 참조하세요. 특정 엔드포인트는 서비스 엔드포인트 및 할당량을 참조하고 서비스 링크를 선택합니다.

제품 버전

아키텍처

다음 다이어그램은에서 Amazon Bedrock과 통합된 K8sGPT를 사용하는 AI 기반 Kubernetes 진단 아키텍처를 보여줍니다 AWS 클라우드.

Amazon Bedrock과 통합된 K8sGPT를 사용한 Kubernetes 진단용 워크플로입니다.

아키텍처는 다음 워크플로를 보여줍니다.

  1. 개발자는 접속 호스트에 대한 보안 연결을 통해 환경에 액세스합니다. 이 Amazon EC2 인스턴스는 보안 진입점 역할을 하며 K8sGPT 명령줄 인터페이스(CLI) 설치 및 필수 구성을 포함합니다.

  2. 특정 IAM 역할로 구성된 접속 호스트는 Amazon EKS 클러스터와 Amazon Bedrock 엔드포인트 모두에 대한 보안 연결을 설정합니다. K8sGPT는 Kubernetes 클러스터 분석을 수행하기 위해 접속 호스트에 설치 및 구성됩니다.

  3. Amazon EKS는 Kubernetes 컨트롤 플레인 및 작업자 노드를 관리하여 K8sGPT 분석을 위한 대상 환경을 제공합니다. 이 서비스는 Virtual Private Cloud(VPC) 내의 여러 가용 영역에서 실행되므로 고가용성과 복원력을 제공하는 데 도움이 됩니다. Amazon EKS는 Kubernetes API를 통해 운영 데이터를 제공하므로 포괄적인 클러스터 분석이 가능합니다.

  4. K8sGPT는 자연어 처리를 위한 Claude v2 파운데이션 모델(FM)을 제공하는 Amazon Bedrock으로 분석 데이터를 전송합니다. 이 서비스는 K8sGPT 분석을 처리하여 사람이 읽을 수 있는 설명을 생성하고 식별된 문제를 기반으로 자세한 문제 해결 제안을 제공합니다. Amazon Bedrock은 고가용성과 확장성을 갖춘 서버리스 AI 서비스로 운영됩니다.

참고

이 워크플로 전체에서 IAM은 역할 및 정책을 통해 구성 요소 간의 액세스를 제어하여 접속 호스트, Amazon EKS 및 Amazon Bedrock 상호 작용에 대한 인증을 관리합니다. IAM은 최소 권한 원칙을 구현하고 아키텍처 전체에서 안전한 서비스 간 통신을 지원합니다.

자동화 및 규모 조정

K8sGPT 작업은 다양한 AWS 서비스 및 도구를 통해 여러 Amazon EKS 클러스터에서 자동화하고 확장할 수 있습니다. 이 솔루션은 예약된 분석을 AWS CodeBuild 위해 Jenkins, GitHub Actions 또는를 사용한 지속적 통합 및 지속적 배포(CI/CD) 통합을 지원합니다. K8sGPT 연산자를 사용하면 자동화된 문제 감지 및 보고 기능을 통해 클러스터 내 모니터링을 지속적으로 수행할 수 있습니다. 엔터프라이즈급 배포의 경우 Amazon EventBridge를 사용하여 사용자 지정 스크립트를 사용하여 스캔을 예약하고 자동 응답을 트리거할 수 있습니다. AWS SDK 통합을 통해 대규모 클러스터 플릿에서 프로그래밍 방식으로 제어할 수 있습니다.

도구

서비스

  • AWS Command Line Interface (AWS CLI)는 명령줄 셸의 명령을 AWS 서비스 통해와 상호 작용하는 데 도움이 되는 오픈 소스 도구입니다.

  • Amazon Elastic Kubernetes Service(Amazon EKS)를 사용하면 자체 Kubernetes 컨트롤 플레인 또는 노드를 설치하거나 유지 관리할 필요 AWS 없이에서 Kubernetes를 실행할 수 있습니다.

  • AWS Identity and Access Management (IAM)는 AWS 리소스에 대한 액세스를 인증하고 사용할 수 있는 권한을 부여받은 사용자를 제어하여 리소스에 대한 액세스를 안전하게 관리하는 데 도움이 됩니다.

기타 도구

  • K8sGPT는 Kubernetes 관리를 변환하는 오픈 소스 AI 기반 도구입니다. 가상 사이트 신뢰성 엔지니어링(SRE) 전문가 역할을 하여 Kubernetes 클러스터 문제를 자동으로 스캔, 진단 및 해결합니다. 관리자는 자연어를 사용하여 K8sGPT와 상호 작용하고 클러스터 상태, 포드 충돌 및 서비스 장애에 대한 명확하고 실행 가능한 인사이트를 얻을 수 있습니다. 도구의 내장 분석기는 잘못 구성된 구성 요소부터 리소스 제약에 이르기까지 다양한 문제를 감지하고 easy-to-understand 설명과 솔루션을 제공합니다.

모범 사례

에픽

작업설명필요한 기술

Amazon Bedrock을 K8sGPT의 AI 백엔드 공급자로 설정합니다.

Amazon Bedrock을 K8sGPT용 AI 백엔드 제공 r로 설정하려면 다음 AWS CLI 명령을 사용합니다.

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

예제 명령은 us-west-2에를 사용합니다 AWS 리전. 그러나 Amazon EKS 클러스터와 해당 Amazon Bedrock 모델을 모두 선택한 리전에서 사용할 수 있고 활성화되어 있는 경우 다른 리전을 선택할 수 있습니다.

amazonbedrock이 AI 백엔드 공급자 목록에 추가되고 Active 상태인지 확인하려면 다음 명령을 실행합니다.

k8sgpt auth list

다음은이 명령의 예상 출력의 예입니다.

Default: > openai Active: > amazonbedrock Unused: > openai > localai > ollama > azureopenai > cohere > amazonsagemaker > google > noopai > huggingface > googlevertexai > oci > customrest > ibmwatsonxai
DevOps
작업설명필요한 기술

사용 가능한 필터 목록을 봅니다.

사용 가능한 모든 필터 목록을 보려면 다음 AWS CLI 명령을 사용합니다.

k8sgpt filters list

다음은이 명령의 예상 출력의 예입니다.

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

필터를 사용하여 특정 네임스페이스의 포드를 스캔합니다.

이 명령은 Amazon Bedrock AI 기능을 사용하여 발견한 문제를 분석하고 설명하여 Kubernetes 클러스터 내의 특정 포드 문제를 대상으로 디버깅하는 데 유용합니다.

필터를 사용하여 특정 네임스페이스의 포드를 스캔하려면 다음 AWS CLI 명령을 사용합니다.

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

다음은이 명령의 예상 출력의 예입니다.

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.
DevOps

필터를 사용하여 특정 네임스페이스에서 배포를 스캔합니다.

이 명령은 특히 실제 상태가 원하는 상태와 일치하지 않는 경우 배포별 문제를 식별하고 해결하는 데 유용합니다.

필터를 사용하여 특정 네임스페이스에서 배포를 스캔하려면 다음 AWS CLI 명령을 사용합니다.

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

다음은이 명령의 예상 출력의 예입니다.

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.
DevOps

필터를 사용하여 특정 네임스페이스의 노드를 스캔합니다.

필터를 사용하여 특정 네임스페이스의 노드를 스캔하려면 다음 AWS CLI 명령을 사용합니다.

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

다음은이 명령의 예상 출력의 예입니다.

AI Provider: amazonbedrock No problems detected
DevOps
작업설명필요한 기술

자세한 출력을 가져옵니다.

세부 출력을 가져오려면 다음 AWS CLI 명령을 사용합니다.

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

다음은이 명령의 예상 출력의 예입니다.

{ "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": "" } ] }
DevOps

문제가 있는 포드를 확인합니다.

특정 문제가 있는 포드를 확인하려면 다음 AWS CLI 명령을 사용합니다.

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

다음은이 명령의 예상 출력의 예입니다.

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

애플리케이션별 인사이트를 얻습니다.

이 명령은 다음과 같은 경우에 특히 유용합니다.

  • 클러스터의 특정 애플리케이션에 집중하려고 합니다.

  • 레이블을 효과적으로 사용하여 Kubernetes 리소스를 구성합니다.

  • 특정 애플리케이션 구성 요소의 상태를 빠르게 확인해야 합니다.

애플리케이션별 인사이트를 얻으려면 다음 명령을 사용합니다.

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

다음은이 명령의 예상 출력의 예입니다.

AI Provider: amazonbedrock No problems detected

관련 리소스

AWS 블로그

AWS 설명서

기타 리소스