2020/07/08
EKSのメトリクスをCloudWatchで見れるようにしました
概要
GKEでは、Stackdriver monitoringによる関しが(ほぼ)標準でできますが
AWSでは、自前でメトリクスを収集する仕組みをデプロイしてあげる必要があります。
『Amazon EKS での Container Insights のクイックスタートセットアップ - Amazon CloudWatch』を見ながら実施しました。
実施事項
前提事項
EKSクラスターはすでに構築されており、 my_cluster
というクラスター名がついているものとします。
また Region は ap-northeast-1
とします。
デプロイした内容
curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/daemonset/container-insights-monitoring/quickstart/cwagent-fluentd-quickstart.yaml | sed "s/{{cluster_name}}/my_cluster/;s/{{region_name}}/ap-northeast-1/" | kubectl apply -f -
基本的には上記コマンドを元に、設定ファイルを作成してデプロイしました。
- https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/daemonset/container-insights-monitoring/quickstart/cwagent-fluentd-quickstart.yaml のファイルをダウンロードします。
cluster_name
の箇所をmy_cluster
に置換します。region_name
の箇所をap-northeast-1
に置換します。kubectl
コマンドを使って、デプロイします。
確認事項
- CloudWatch > ロググループでログが収集されていることを確認します
- CloudWatch > Container Insights > リソース で podなどのリソースのメトリクスが収集されていることを確認します。
以上です。
関連する記事
EKSのロードバランサーでIPアドレスのアクセス制限を設定する
EKSで構築しているネットワークロードバランサータイプのServiceにIP Whitelistを設定しました。
EKSのバージョンをアップグレードする
開発に利用しているEKSのバージョンをアップグレードしました
[EKS]NLB+NginxでClientのIPアドレスを取得する
EKS上にdeployしたnginxをNetwork Load Balancerを使って外部公開した時に接続元のIPアドレスを取得する対応をしました
EKSでServiceAccount毎にIAMロールを作成してpod毎に権限を変更する
IAMのリソースをterraformで作成し、service accountに紐付けることによってpodのAWSリソースのアクセス権を細かく定義できるようにしました