

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

# K8sGPT 및 Amazon Bedrock 통합을 사용하여 AI 기반 Kubernetes 진단 및 문제 해결 구현
<a name="implement-ai-powered-kubernetes-diagnostics-and-troubleshooting-with-k8sgpt-and-amazon-bedrock-integration"></a>

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

## 요약
<a name="implement-ai-powered-kubernetes-diagnostics-and-troubleshooting-with-k8sgpt-and-amazon-bedrock-integration-summary"></a>

이 패턴은 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 지원을 통해 문제 해결 기능을 개선하려는 조직에 특히 유용합니다.

## 사전 조건 및 제한 사항
<a name="implement-ai-powered-kubernetes-diagnostics-and-troubleshooting-with-k8sgpt-and-amazon-bedrock-integration-prereqs"></a>

**사전 조건 **
+ 적절한 권한이 AWS 계정 있는 활성
+ AWS Command Line Interface (AWS CLI) [설치](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) 및 [구성](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)됨
+ Amazon EKS 클러스터
+ [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html)에서 Anthropic Claude 2 모델에 대한 액세스
+ 필수 보안 그룹 설정이 있는 접속 호스트
+ K8sGPT [설치](https://docs.k8sgpt.ai/getting-started/installation/)됨

**제한 사항 **
+ K8sGPT 분석은 Claude v2 모델의 컨텍스트 창 크기에 따라 제한됩니다.
+ Amazon Bedrock API 속도 제한은 계정 할당량에 따라 적용됩니다.
+ 일부 AWS 서비스 는 전혀 사용할 수 없습니다 AWS 리전. 리전별 가용성은 [리전별AWS 서비스](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/)를 참조하세요. 구체적인 엔드포인트는 [서비스 엔드포인트 및 할당량](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html)을 참조하고 서비스 링크를 선택합니다.

**제품 버전**
+ Amazon EKS [버전 1.31 이상](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html)
+ Amazon Bedrock의 [Claude 2 모델](https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html) 
+ K8sGPT [v0.4.2 이상](https://github.com/k8sgpt-ai/k8sgpt/releases)

## 아키텍처
<a name="implement-ai-powered-kubernetes-diagnostics-and-troubleshooting-with-k8sgpt-and-amazon-bedrock-integration-architecture"></a>

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

![Amazon Bedrock과 통합된 K8sGPT를 사용한 Kubernetes 진단용 워크플로입니다.](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/patterns/images/pattern-img/09bc08f6-e191-4cef-b26b-dcb6225b15cc/images/8789891d-4a90-44b0-a108-387f6d96496b.png)


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

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

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

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

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

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

**자동화 및 규모 조정**

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

## 도구
<a name="implement-ai-powered-kubernetes-diagnostics-and-troubleshooting-with-k8sgpt-and-amazon-bedrock-integration-tools"></a>

**서비스**
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)는 명령줄 셸의 명령을 AWS 서비스 통해와 상호 작용하는 데 도움이 되는 오픈 소스 도구입니다.
+ [Amazon Elastic Kubernetes Service(Amazon EKS)](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html)를 사용하면 자체 Kubernetes 컨트롤 플레인 또는 노드를 설치하거나 유지 관리할 필요 AWS 없이에서 Kubernetes를 실행할 수 있습니다.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)는 AWS 리소스에 대한 액세스를 인증하고 사용할 수 있는 권한을 부여받은 사용자를 제어하여 리소스에 대한 액세스를 안전하게 관리하는 데 도움이 됩니다.

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

## 모범 사례
<a name="implement-ai-powered-kubernetes-diagnostics-and-troubleshooting-with-k8sgpt-and-amazon-bedrock-integration-best-practices"></a>
+ [접속 호스트 액세스에를 사용하여 보안 액세스](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect.html) 제어를 구현 AWS Systems Manager Session Manager 합니다.
+ K8sGPT 인증이 Amazon Bedrock 및 Amazon EKS 상호 작용에 대한 최소 권한 권한이 있는 전용 IAM 역할을 사용하는지 확인합니다. 자세한 내용은 IAM 설명서의 [최소 권한 부여](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) 및 [보안 모범 사례](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)를 참조하세요.
+ [리소스 태깅](https://docs.aws.amazon.com/whitepapers/latest/tagging-best-practices/what-are-tags.html)을 구성하고, [감사 추적에 대해 Amazon CloudWatch 로깅](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/monitor-cloudtrail-log-files-with-cloudwatch-logs.html)을 활성화하고, 민감한 정보에 대한 [데이터 익명화](https://aws.amazon.com/solutions/guidance/data-anonymization-on-aws/)를 구현합니다.
+ 사용량이 적은 시간에 자동 스캔 일정을 설정하여 운영 영향을 최소화하면서 K8sGPT 구성을 정기적으로 백업합니다.

## 에픽
<a name="implement-ai-powered-kubernetes-diagnostics-and-troubleshooting-with-k8sgpt-and-amazon-bedrock-integration-epics"></a>

### AI 백엔드 공급자 목록에 Amazon Bedrock을 추가합니다.
<a name="add-br-to-ai-backend-provider-list"></a>


| 작업 | 설명 | 필요한 기술 | 
| --- | --- | --- | 
| Amazon Bedrock을 K8sGPT의 AI 백엔드 공급자로 설정합니다. | Amazon Bedrock을 K8sGPT용 AI [백엔드 제공](https://docs.k8sgpt.ai/reference/providers/backend/) r로 설정하려면 다음 AWS CLI 명령을 사용합니다.<pre>k8sgpt auth add -b amazonbedrock \<br /> -r us-west-2 \<br /> -m anthropic.claude-v2 \<br /> -n endpoint-name <br /></pre><br />예시 명령은 AWS 리전으로 `us-west-2`를 사용합니다. 그러나 Amazon EKS 클러스터와 해당 Amazon Bedrock 모델을 모두 선택한 리전에서 사용할 수 있고 활성화되어 있는 경우 다른 리전을 선택할 수 있습니다.<br />`amazonbedrock`이 AI 백엔드 공급자 목록에 추가되고 `Active` 상태인지 확인하려면 다음 명령을 실행합니다.<pre>k8sgpt auth list</pre><br />다음은 이 명령의 예상 출력의 예입니다.<pre>Default: <br />> openai<br />Active: <br />> amazonbedrock<br />Unused: <br />> openai<br />> localai<br />> ollama<br />> azureopenai<br />> cohere<br />> amazonsagemaker<br />> google<br />> noopai<br />> huggingface<br />> googlevertexai<br />> oci<br />> customrest<br />> ibmwatsonxai</pre> | DevOps | 

### 필터를 사용하여 리소스 스캔
<a name="scan-resources-using-a-filter"></a>


| 작업 | 설명 | 필요한 기술 | 
| --- | --- | --- | 
| 사용 가능한 필터 목록을 봅니다. | 사용 가능한 모든 필터 목록을 보려면 다음 AWS CLI 명령을 사용합니다.<pre>k8sgpt filters list</pre><br />다음은 이 명령의 예상 출력의 예입니다.<pre>Active: <br />> Deployment<br />> ReplicaSet<br />> PersistentVolumeClaim<br />> Service<br />> CronJob<br />> Node<br />> MutatingWebhookConfiguration<br />> Pod<br />> Ingress<br />> StatefulSet<br />> ValidatingWebhookConfiguration</pre> | DevOps | 
| 필터를 사용하여 특정 네임스페이스에서 포드를 스캔합니다. | 이 명령은 Amazon Bedrock AI 기능을 사용하여 발견한 문제를 분석하고 설명함으로써 Kubernetes 클러스터 내의 특정 포드 문제를 대상으로 디버깅하는 데 유용합니다.<br />필터를 사용하여 특정 네임스페이스의 포드를 스캔하려면 다음 AWS CLI 명령을 사용합니다.<pre>k8sgpt analyze --backend amazonbedrock --explain --filter Pod -n default</pre><br />다음은 이 명령의 예상 출력의 예입니다.<pre>100% |████████████████████████████████████████████████████████| (1/1, 645 it/s)        <br />AI Provider: amazonbedrock<br /><br />0: Pod default/crashme()<br />- Error: the last termination reason is Error container=crashme pod=crashme<br />Error: The pod named crashme terminated because the container named crashme crashed.<br />Solution: Check logs for crashme pod to identify reason for crash. Restart pod or redeploy application to resolve crash.</pre> | DevOps | 
| 필터를 사용하여 특정 네임스페이스에서 배포를 스캔합니다. | 이 명령은 특히 실제 상태가 원하는 상태와 일치하지 않는 경우 배포별 문제를 식별하고 해결하는 데 유용합니다.<br />필터를 사용하여 특정 네임스페이스에서 배포를 스캔하려면 다음 AWS CLI 명령을 사용합니다.<pre>k8sgpt analyze --backend amazonbedrock --explain --filter Deployment -n default</pre><br />다음은 이 명령의 예상 출력의 예입니다.<pre>100% |██████████████████████████████████████████████████████████| (1/1, 10 it/min)        <br />AI Provider: amazonbedrock<br /><br />0: Deployment default/nginx()<br />- Error: Deployment default/nginx has 1 replicas but 2 are available<br /> Error: The Deployment named nginx in the default namespace has 1 replica specified but 2 pod replicas are running.<br />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.</pre> | DevOps | 
| 필터를 사용하여 특정 네임스페이스의 노드를 스캔합니다. | 필터를 사용하여 특정 네임스페이스의 노드를 스캔하려면 다음 AWS CLI 명령을 사용합니다.<pre>k8sgpt analyze --backend amazonbedrock --explain --filter Node -n default </pre><br />다음은 이 명령의 예상 출력의 예입니다.<pre>AI Provider: amazonbedrock<br /><br />No problems detected</pre> | DevOps | 

### 세부 출력 분석
<a name="analyze-detailed-outputs"></a>


| 작업 | 설명 | 필요한 기술 | 
| --- | --- | --- | 
| 자세한 출력을 가져옵니다. |  세부 출력을 가져오려면 다음 AWS CLI 명령을 사용합니다.<pre>k8sgpt analyze --backend amazonbedrock --explain --ouput json</pre><br />다음은 이 명령의 예상 출력의 예입니다.<pre>{<br />  "provider": "amazonbedrock",<br />  "errors": null,<br />  "status": "ProblemDetected",<br />  "problems": 1,<br />  "results": [<br />    {<br />      "kind": "Pod",<br />      "name": "default/crashme",<br />      "error": [<br />        {<br />          "Text": "the last termination reason is Error container=crashme pod=crashme",<br />          "KubernetesDoc": "",<br />          "Sensitive": []<br />        }<br />      ],<br />      "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.",<br />      "parentObject": ""<br />    }<br />  ]<br />}</pre> | DevOps | 
| 문제가 있는 포드를 확인합니다. | 특정 문제가 있는 포드를 확인하려면 다음 AWS CLI 명령을 사용합니다.<pre>kubectl get pods --all-namespaces | grep -v Running</pre><br />다음은 이 명령의 예상 출력의 예입니다.<pre>NAMESPACE    NAME      READY    STATUS          RESTARTS      AGE                                       <br />default     crashme     0/1   CrashLoopBackOff   260(91s ago)   21h</pre> | DevOps | 
| 애플리케이션별 인사이트를 얻습니다. | 이 명령은 다음과 같은 경우에 특히 유용합니다.[See the AWS documentation website for more details](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/patterns/implement-ai-powered-kubernetes-diagnostics-and-troubleshooting-with-k8sgpt-and-amazon-bedrock-integration.html)<br />애플리케이션별 인사이트를 얻으려면 다음 명령을 사용합니다.<pre>k8sgpt analyze --backend amazonbedrock --explain -L app=nginx -n default</pre><br />다음은 이 명령의 예상 출력의 예입니다.<pre>AI Provider: amazonbedrock<br /><br />No problems detected</pre> |  | 

## 관련 리소스
<a name="implement-ai-powered-kubernetes-diagnostics-and-troubleshooting-with-k8sgpt-and-amazon-bedrock-integration-resources"></a>

**AWS Blog**
+ [Amazon Bedrock 에이전트 워크플로를 사용하여 Amazon EKS 문제 해결 자동화](https://aws.amazon.com/blogs/machine-learning/automate-amazon-eks-troubleshooting-using-an-amazon-bedrock-agentic-workflow/)
+ [K8sGPT 및 Amazon Bedrock을 사용하여 Kubernetes 클러스터 유지 관리 간소화](https://aws.amazon.com/blogs/machine-learning/use-k8sgpt-and-amazon-bedrock-for-simplified-kubernetes-cluster-maintenance/)

**AWS 설명서**
+ AWS CLI 명령: [create-cluster](https://docs.aws.amazon.com/cli/latest/reference/eks/create-cluster.html) 및 [describe-cluster](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/eks/describe-cluster.html)
+ [Amazon EKS 시작하기](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html)(Amazon EKS 설명서)
+ [IAM의 보안 모범 사례](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)(IAM 설명서)

**기타 리소스**
+ [K8sGPT](https://k8sgpt.ai/)