K8sGPT と Amazon Bedrock の統合による AI を活用した Kubernetes 診断とトラブルシューティングの実装 - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

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 は分析データを Amazon Bedrock に送信します。Amazon Bedrock は、自然言語処理用の Claude v2 基盤モデル (FM) を提供します。このサービスは K8sGPT 分析を処理して人間が読める説明を生成し、特定された問題に基づいて詳細な修復提案を提供します。Amazon Bedrock は、高可用性とスケーラビリティを備えたサーバーレス AI サービスとして動作します。

注記

このワークフロー全体で、IAM はロールとポリシーを通じてコンポーネント間のアクセスを制御し、踏み台ホスト、Amazon EKS、Amazon Bedrock インタラクションの認証を管理します。IAM は最小特権の原則を実装し、アーキテクチャ全体で安全なクロスサービス通信を可能にします。

自動化とスケール

K8sGPT オペレーションは、さまざまな およびツールを使用して、複数の Amazon EKS クラスターにまたがって自動化 AWS のサービス およびスケーリングできます。このソリューションは、JenkinsGitHub Actions、またはスケジュールAWS CodeBuildされた分析を使用した継続的インテグレーションと継続的デプロイ (CI/CD) 統合をサポートします。K8sGPT 演算子は、自動問題検出およびレポート機能を使用して、クラスター内の継続的なモニタリングを可能にします。エンタープライズ規模のデプロイでは、Amazon EventBridge を使用してスキャンをスケジュールし、カスタムスクリプトで自動レスポンスをトリガーできます。 AWS SDK 統合により、大規模なクラスターフリートをプログラムで制御できます。

ツール

AWS サービス

  • 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 バックエンド provide 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
AWS DevOps
タスク説明必要なスキル

使用可能なフィルターのリストを表示します。

使用可能なすべてのフィルターのリストを表示するには、次の AWS CLI コマンドを使用します。

k8sgpt filters list

このコマンドで予想される出力の例を次に示します。

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

フィルターを使用して、特定の名前空間のポッドをスキャンします。

このコマンドは、Kubernetes クラスター内の特定のポッド問題のターゲットを絞ったデバッグに役立ち、Amazon Bedrock AI 機能を使用して検出された問題を分析および説明します。

フィルターを使用して特定の名前空間のポッドをスキャンするには、次の 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.
AWS 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.
AWS DevOps

フィルターを使用して、特定の名前空間のノードをスキャンします。

フィルターを使用して特定の名前空間のノードをスキャンするには、次の AWS CLI コマンドを使用します。

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

このコマンドで予想される出力の例を次に示します。

AI Provider: amazonbedrock No problems detected
AWS 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": "" } ] }
AWS 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
AWS DevOps

アプリケーション固有のインサイトを取得します。

このコマンドは、次の場合に特に便利です。

  • クラスター内の特定のアプリケーションに焦点を当てたい。

  • ラベルを効果的に使用して Kubernetes リソースを整理します。

  • 特定のアプリケーションコンポーネントの正常性をすばやく確認する必要があります。

アプリケーション固有のインサイトを取得するには、次のコマンドを使用します。

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

このコマンドで予想される出力の例を次に示します。

AI Provider: amazonbedrock No problems detected

関連リソース

AWS ブログ

AWS ドキュメント

その他のリソース