セットアップガイド (AWS CLI)
このガイドでは、AWS CLI を使用して、既存の Amazon EKS クラスターに Enhanced Container Insights (Classic) をインストールする方法について説明します。アドオンは、インフラストラクチャメトリクス、コンテナログ、パフォーマンスデータを収集する DaemonSet として CloudWatch エージェントをデプロイします。
メンテナンスモード
Enhanced Container Insights (Classic) はメンテナンスモードになっています。新しいデプロイには OTel Container Insights (推奨) をお勧めします。
前提条件
開始する前に、以下の前提条件を満たしていることを確認します。
-
Kubernetes バージョン 1.25 以降を実行している既存の Amazon EKS クラスター
-
プラットフォームバージョン
eks.1以降 -
AWS CLI バージョン 2.12.0 以降
-
kubectlがターゲットクラスターと通信できるように設定されていること -
IAM アクセス許可:
eks:CreateAddon、eks:DescribeAddon、iam:CreateServiceLinkedRole、iam:CreateRole、およびiam:AttachRolePolicy -
クラスターにインストールされた EKS Pod Identity Agent アドオン、または設定済みのサービスアカウントの IAM ロール (IRSA)
-
クラスターから CloudWatch エンドポイントへのアウトバウンドインターネットアクセス
ステップ 1: IAM ロールを作成する
CloudWatch エージェントが CloudWatch にデータを送信できるようにする IAM ロールを作成します。
CloudWatch エージェント IAM ロールを作成するには
-
EKS Pod Identity 用の信頼ポリシーを持つロールを作成するには、次のコマンドを実行します。
aws iam create-role \ --role-name EKS-CloudWatch-Agent-Role \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "pods.eks.amazonaws.com" }, "Action": ["sts:AssumeRole", "sts:TagSession"] }] }' -
CloudWatchAgentServerPolicy管理ポリシーをロールにアタッチします。aws iam attach-role-policy \ --role-name EKS-CloudWatch-Agent-Role \ --policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy
ステップ 2: Pod Identity の関連付けを作成する
IAM ロールをクラスター内の CloudWatch エージェントサービスアカウントに関連付けます。
Pod Identity の関連付けを作成するには
-
以下のコマンドを実行してください。
cluster-nameを Amazon EKS クラスターの名前に、account-idを AWS アカウント ID に置き換えます。aws eks create-pod-identity-association \ --cluster-namecluster-name\ --namespace amazon-cloudwatch \ --service-account cloudwatch-agent \ --role-arn arn:aws:iam::account-id:role/EKS-CloudWatch-Agent-Role
ステップ 3: Amazon CloudWatch Observability アドオンをインストールする
クラスターに amazon-cloudwatch-observability アドオンをインストールします。
アドオンをインストールするには
-
以下のコマンドを実行してください。
cluster-nameは、自分の Amazon EKS クラスターに置き換えます。aws eks create-addon \ --cluster-namecluster-name\ --addon-name amazon-cloudwatch-observability \ --addon-versionv5.x.x-eksbuild.xv5.x.x-eksbuild.xを利用可能な最新の v5.x バージョンに置き換えます。--addon-versionなしでインストールすると、最新バージョン (v6.2.0 以降) がインストールされ、Classic ではなく OTel パイプラインがアクティブ化されます。
ステップ 4: アドオンのステータスを確認する
アドオンが正常にインストールされたことを確認します。
アドオンのステータスを確認するには
-
以下のコマンドを実行してください。
cluster-nameは、自分の Amazon EKS クラスターに置き換えます。aws eks describe-addon \ --cluster-namecluster-name\ --addon-name amazon-cloudwatch-observability \ --query "addon.status" \ --output text期待される出力は
ACTIVEです。
ステップ 5: エージェントポッドが実行されていることを確認する
CloudWatch エージェントポッドが amazon-cloudwatch 名前空間で実行されていることを確認します。
エージェントポッドが実行されていることを確認するには
-
以下のコマンドを実行してください。
kubectl get pods -n amazon-cloudwatch -l app.kubernetes.io/name=cloudwatch-agentすべてのエージェントポッドが
Runningステータスになっている必要があります。
CloudWatch でデータを確認する
セットアップを完了すると、3~5 分以内に Container Insights データが CloudWatch に表示されます。
Container Insights データを確認するには
-
CloudWatch コンソールの https://console.aws.amazon.com/cloudwatch/
を開いてください。 -
ナビゲーションペインで、[Container Insights] を選択します。
-
node_cpu_utilizationやpod_memory_utilizationなど、クラスターのメトリクスが表示されることを確認します。
トラブルシューティング
Amazon EKS に Enhanced Container Insights (Classic) をインストールするときに発生する一般的な問題を解決するには、次のガイダンスを使用します。
アドオンのステータスが CREATE_FAILED または DEGRADED と表示される
症状: aws eks
describe-addon を実行すると、ステータスに CREATE_FAILED または DEGRADED が表示されます。
原因: IAM アクセス許可が不十分であるか、Pod Identity の関連付けがないため、アドオンのインストールに失敗したためです。
解決策: この問題を解決するには、次の手順に従います。
-
次のコマンドを実行して、詳細なエラー情報を確認します。
cluster-nameをクラスターの名前に置き換えます。aws eks describe-addon \ --cluster-namecluster-name\ --addon-name amazon-cloudwatch-observability \ --query "addon.health" -
IAM ロールが存在し、
CloudWatchAgentServerPolicyがアタッチされていることを確認します。 -
Pod Identity の関連付けが正しい名前空間 (
amazon-cloudwatch) とサービスアカウント (cloudwatch-agent) を対象としていることを確認します。 -
障害が発生したアドオンを削除し、問題を解決した後に再インストールします。
aws eks delete-addon \ --cluster-namecluster-name\ --addon-name amazon-cloudwatch-observability
5 分経過しても CloudWatch にメトリクスが表示されない
症状: エージェントポッドは Running ステータスを表示しますが、5 分後に CloudWatch にメトリクスが表示されません。
原因: ネットワークの制限または IAM アクセス許可が正しくないため、エージェントが CloudWatch にデータを送信できないためです。
解決策: この問題を解決するには、次の手順に従います。
-
VPC セキュリティグループとネットワーク ACL が CloudWatch エンドポイントへのアウトバウンド HTTPS トラフィック (ポート 443) を許可していることを確認します。
-
アクセス許可エラーまたは接続タイムアウトがないか、エージェントログで確認します。
kubectl logs -n amazon-cloudwatch -l app.kubernetes.io/name=cloudwatch-agent --tail=100 | grep -i "error\|timeout\|denied" -
IAM ロールに
CloudWatchAgentServerPolicyポリシーがアタッチされており、信頼ポリシーでpods.eks.amazonaws.comが許可されていることを確認します。
エージェントポッドが保留中または CrashLoopBackOff でスタックする
症状: kubectl get pods -n
amazon-cloudwatch を実行すると、1 つまたは複数のポッドに Pending または CrashLoopBackOff ステータスが表示されます。
原因: ノードリソースの不足、イメージプルの失敗、またはアクセス許可がないため、エージェントポッドを起動できないためです。
解決策: この問題を解決するには、次の手順に従います。
-
ポッドイベントで詳細なエラーメッセージを確認します。
kubectl describe pod -n amazon-cloudwatch -l app.kubernetes.io/name=cloudwatch-agent -
エージェントポッドで使用できる十分な CPU とメモリがノードにあることを確認します。
-
EKS Pod Identity Agent アドオンがインストールされ、実行されていることを確認します。
kubectl get pods -n kube-system -l app.kubernetes.io/name=eks-pod-identity-agent
次のステップ
すぐにアップグレードしますか? Enhanced Container Insights (Classic) から OTel Container Insights に移行するステップバイステップの手順については、「Enhanced Container Insights (Classic) から OTel Container Insights に移行する」を参照してください。