Amazon CloudWatch Observability アドオンを使用して Amazon Elastic Kubernetes Service (Amazon EKS) クラスターを監視しようとしています。
解決策
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI で発生したエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
前提条件
アドオンの IAM ロールを作成する
AWS Identity and Access Management (IAM) OpenID Connect (OIDC) プロバイダーを作成するには、次のコマンドを実行します。
eksctl utils associate-iam-oidc-provider --cluster my-cluster-name --approve
注: my-cluster-name は、実際のクラスター名に置き換えます。詳細については、「Kubernetes サービスアカウントに IAM ロールを割り当てる」を参照してください。
CloudWatchAgentServerPolicy がアタッチされた IAM ロールを作成するには、次のコマンドを実行します。
eksctl create iamserviceaccount \
--name cloudwatch-agent \
--namespace amazon-cloudwatch
--cluster my-cluster-name \
--role-name AmazonCloudWatchObservabilityRole \
--attach-policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy \
--role-only \
--approve
注: my-cluster-name は、実際のクラスター名に置き換えます。上記のコマンドでは、エージェントサービスアカウントが OIDC を使用してロールを引き受ける設定も行われます。
アドオンをインストールする
アドオンをインストールするには、Amazon EKS コンソールまたは AWS CLI を使用します。
Amazon EKS コンソール
次の手順を実行します。
- Amazon EKS コンソールを開きます。
- ナビゲーションペインで [クラスター] を選択します。
- 該当するクラスター名を選択し、[アドオン] タブを選択します。
- [その他のアドオンを入手] を選択し、[アドオンを選択] を選択します。
- [Amazon EKS アドオン] セクションで、[Amazon CloudWatch Observability] を選択し、[次へ] を選択します。
- [選択したアドオン設定の構成] ページで、使用するバージョンを選択します。
- [IAM ロールの選択] で AmazonCloudWatchObservabilityRole を選択し、[次へ] をクリックします。
- [確認と追加] ページで [作成] を選択します。
AWS CLI
アドオンをインストールするには、次の create-addon コマンドを実行します。
aws eks create-addon --addon-name amazon-cloudwatch-observability --cluster-name my-cluster-name --service-account-role-arn arn:aws:iam::Account-ID:role/AmazonCloudWatchObservabilityRole
注: 実際のものでそれぞれ、my-cluster-name をクラスター名に、Account-ID を AWS アカウント ID に置き換えます。
インストールが完了すると、Amazon EKS はクラスター内に amazon-cloudwatch という名前空間を作成します。クラスターでは、CloudWatch エージェントと Fluent Bit ポッドも有効化されます。
アクティブなポッドを表示するには、次のコマンドを実行します。
kubectl get pods -n amazon-cloudwatch
出力例
NAME READY STATUS RESTARTS AGE
amazon-cloudwatch-observability-controller-manager-6c685b4wsdbg 1/1 Running 0 16s
cloudwatch-agent-76bnd 1/1 Running 0 16s
cloudwatch-agent-nbdgm 1/1 Running 0 16s
fluent-bit-45wl4 1/1 Running 0 16s
fluent-bit-rsfc7 1/1 Running 0 16s
サンプルアプリケーションをデプロイする
メトリクスの収集元となるワークロードがクラスターにない場合は、次のサンプルワークロードをデプロイします。
cat <<EOF >deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: eks-cw-sample-app
labels:
app: eks-cw-sample-app
spec:
replicas: 3
selector:
matchLabels:
app: eks-cw-sample-app
template:
metadata:
labels:
app: eks-cw-sample-app
spec:
containers:
- name: nginx
image: public.ecr.aws/nginx/nginx:1.27
ports:
- name: http
containerPort: 80
imagePullPolicy: IfNotPresent
EOF
kubectl apply -f deployment.yaml
上記のワークロードを使用して CloudWatch がメトリクスを正しく収集することを確認します。
CloudWatch コンソールでクラスターを監視する
Container Insights をインストールした後、CloudWatch コンソールでメトリクスを確認します。
クラスターで AWS Fargate のログ記録を使用することもできます。
関連情報
Amazon EKS でのログ記録と監視