こんにちは、ゲームソリューション部の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コントロールプレーンのログ記録を有効化してみたことを記事にしました。
どなたかの参考になると幸いです。