EKSコントロールプレーンのログ記録を有効化してみた

2023.09.21

こんにちは、ゲームソリューション部のsoraです。
今回は、EKSコントロールプレーンのログ記録を有効化してみたことについて書いていきます。

事前準備

クライアント実行環境

クライアントとしてCloud9(インスタンスタイプ:t2.micro)を使用します。
aws-cli・eksctl・kubectlが必要なため、インストールしておきます。
CLIからログ有効化をする場合は、AWS CLIのバージョンは1.16.139以上である必要があります。

今回の環境におけるそれぞれのバージョンは以下です。

$ aws --version
aws-cli/2.13.12
$ eksctl version
0.154.0
$ kubectl version --short
Client Version: v1.27.1-eks-2f008fe
Kustomize Version: v5.0.1

クラスター作成

クラスターがないため、ログ取得対象となるクラスターを作成します。

# クラスターの作成
eksctl create cluster \
  --name=eks-cluster \
  --version 1.27 \
  --nodegroup-name=eks-nodegroup \
  --region ap-northeast-1

#クラスタ確認
$ eksctl get cluster
NAME            REGION          EKSCTL CREATED
eks-cluster     ap-northeast-1  True

設定可能なログ

EKSクラスターのコントロールプレーンのログ記録を有効化するとCloudWatch Logsにログが保存されます。
設定可能なログは以下です。

  • APIサーバ:クラスターへのAPIリクエストに関するログ。Kubernetes APIを外部に公開するコンポーネント
  • 監査:Kubernetes APIを使用したクラスターアクセス(ユーザ・管理者・システムコンポーネント)に関するログ
  • Authenticator:クラスターへのRBAC認証リクエストに関するログ
  • コントローラーマネージャー:クラスターコントローラーの状態に関するログ。複数のコントローラープロセスを実行するコンポーネント
  • スケジューラ:スケジュール決定に関するログ。PodのNodeへの割り当てなどを管理するコンポーネント

クラスターのログ記録の有効化

AWSマネージメントコンソールでの設定

AWSマネージメントコンソールから設定する場合は、EKSクラスターのログ記録から有効化することができます。

必要なログを選択して、変更内容を保存するとログ記録が有効化されます。

CLIでの設定

CLIで設定する場合は、以下コマンドにてログ記録を有効化します。

# クラスターのログ記録の有効化(loggingの{}内で必要なログを指定)
$ aws eks update-cluster-config \
    --region ap-northeast-1 \
    --name eks-cluster \
    --logging '{"clusterLogging":[{"types":["api","audit","authenticator","controllerManager","scheduler"],"enabled":true}]}'
# 実行結果
{
    "update": {
        "id": "93303af8-a1d2-4afa-afbf-a91e66200633",
        "status": "InProgress",
        "type": "LoggingUpdate",
        "params": [
            {
                "type": "ClusterLogging",
                "value": "{\"clusterLogging\":[{\"types\":[\"api\",\"audit\",\"authenticator\",\"controllerManager\",\"scheduler\"],\"enabled\":true}]}"
            }
        ],
        "createdAt": "2023-09-21T02:56:02.764000+00:00",
        "errors": []
    }
}

# ログ記録の有効化のステータス確認(statusがSuccessfulは更新完了、InProgressは更新中)
$ aws eks describe-update \
    --region ap-northeast-1 \
    --name eks-cluster \
    --update-id 93303af8-a1d2-4afa-afbf-a91e66200633
# 実行結果
{
    "update": {
        "id": "93303af8-a1d2-4afa-afbf-a91e66200633",
        "status": "Successful",
        "type": "LoggingUpdate",
        "params": [
            {
                "type": "ClusterLogging",
                "value": "{\"clusterLogging\":[{\"types\":[\"api\",\"audit\",\"authenticator\",\"controllerManager\",\"scheduler\"],\"enabled\":true}]}"
            }
        ],
        "createdAt": "2023-09-21T02:56:02.764000+00:00",
        "errors": []
    }
}

無効化する場合は、--logging '{"clusterLogging":[{"types":["api","audit","authenticator","controllerManager","scheduler"],"enabled":true}]}'"enabled":trueの部分を"enabled":falseにすることで無効化できます。

CloudWatch Logsの確認

有効化した後、CloudWatch Logsを確認するとロググループが作成されて、ログが出力されていることが確認できます。

参考情報

Amazon EKS コントロールプレーンのログ記録(AWS公式)

最後に

今回は、EKSコントロールプレーンのログ記録を有効化してみたことを記事にしました。
どなたかの参考になると幸いです。