Amazon EKS コントロールプレーンのログ記録 - Amazon EKS

Amazon EKS コントロールプレーンのログ記録

Amazon EKS コントロールプレーンのログ記録により、アカウント内で Amazon EKS コントロールプレーンから CloudWatch Logs に対し、監査および診断ログを直接送れるようになります。これらのログを使用すると、クラスターの保護と実行が容易になります。必要なログタイプを正確に選択することで、CloudWatch 内で各 Amazon EKS クラスターのためのグループに対し、ログストリームの形態でログを送信できます。

Amazon EKS コントロールプレーンのログ記録の使用を開始するには、新規または既存の Amazon EKS クラスターごとに有効にするログタイプを選択します。それぞれのログタイプをクラスターごとに有効または無効にするには、AWS マネジメントコンソール、AWS CLI (バージョン 1.16.139 以降)、または Amazon EKS API を使用します。有効化したログタイプのログが、Amazon EKS クラスターから同じアカウントの CloudWatch Logs に自動的に送信されるようになります。

Amazon EKS コントロールプレーンのログ記録を使用すると、実行しているクラスターごとに Amazon EKS の標準料金が発生します。クラスターから CloudWatch Logs に送信されるすべてのログに対して、CloudWatch Logs のデータ取り込みおよび保存に関する標準料金が発生します。また、Amazon EC2 インスタンスや Amazon EBS ボリュームなど、クラスターの一部としてプロビジョニングしている AWS リソースに対しても料金が発生します。

以下のクラスターコントロールプレーンのログタイプが使用可能です。各ログタイプは、Kubernetes コントロールプレーンのコンポーネントに対応しています。これらのコンポーネントの詳細については、Kubernetes ドキュメントの Kubernetes Components (Kubernetes コンポーネント) を参照してください。

  • Kubernetes API サーバーコンポーネントログ ()api – クラスターの API サーバーは、Kubernetes API を公開するコントロールプレーンコンポーネントです。詳細については、Kubernetes ドキュメントの kube-apiserver を参照してください。

  • 監査 (audit) – Kubernetes 監査ログは、クラスターに影響を与えた個々のユーザー、管理者、またはシステムコンポーネントについて記録します。詳細については、Kubernetes ドキュメントの Auditing (監査) を参照してください。

  • 認証 (authenticator) – 認証ログは、各 Amazon EKS に固有です。これらのログは、Amazon EKS が使用するコントロールプレーンコンポーネントに対応します。各コンポーネントは、Amazon EKS が、Kubernetes の (IAM 認証情報を使用する) ロールベースのアクセスコントロール (RBAC) 認証のために使用しています。詳細については、「クラスター認証」を参照してください。

  • コントローラーマネージャー (controllerManager) – コントローラーマネージャーは、Kubernetes に同梱されている主要なコントロールループを管理します。詳細については、Kubernetes ドキュメントの kube-controller-manager を参照してください。

  • スケジューラ (scheduler) – スケジューラコンポーネントは、クラスターでポッドを実行するタイミングと場所を管理します。詳細については、Kubernetes ドキュメントの kube-scheduler を参照してください。

コントロールプレーンログの有効化と無効化

デフォルトでは、クラスターコントロールプレーンのログは CloudWatch Logs に送信されません。クラスターのログを送信するには、各ログタイプを個別に有効にする必要があります。CloudWatch Logs で設定された取り込み、アーカイブストレージ、およびデータスキャンレートが、有効化されたコントロールプレーンログに適用されます。詳細については、「CloudWatch 料金表」を参照してください。

ログタイプを有効にすると、ログの詳細レベル 2 でログが送信されます。

コンソールを使用してコントロールプレーンログを有効または無効にするには

  1. Amazon EKS コンソール (https://console.aws.amazon.com/eks/home#/clusters) を開きます。

  2. クラスターの名前を選択すると、そのクラスターの情報を表示されます。

  3. [Configuration (設定)] タブを選択します。

  4. [Logging (ログ記録)] で、[Manage logging (ログ記録の管理] を選択します。

  5. ログタイプごとに、そのログタイプを [有効] にするか [無効] にするかを選択します。各ログタイプは、デフォルトで [無効] になっています。

  6. [Save changes (変更を保存)] を選択して終了します。

AWS CLI を使用してコントロールプレーンログを有効または無効にするには

  1. 以下のコマンドを使用して、AWS CLI のバージョンを確認します。

    aws --version

    AWS CLI のバージョンが 1.16.139 以前である場合は、まず最新バージョンに更新する必要があります。AWS CLI のセットアップ手順については、AWS コマンドラインインターフェイスユーザーガイドの「AWS CLI のインストール、更新、およびアンインストール」を参照してください。

  2. 次の AWS CLI コマンドを使用して、クラスターのコントロールプレーンログのエクスポート設定を更新します。クラスター名と必要なエンドポイントアクセス値を置き換えます。

    注記

    次のコマンドは、使用可能なすべてのログタイプを CloudWatch Logs に送信します。

    aws eks --region <region-code> update-cluster-config --name <prod> \ --logging '{"clusterLogging":[{"types":["api","audit","authenticator","controllerManager","scheduler"],"enabled":true}]}'

    出力:

    { "update": { "id": "<883405c8-65c6-4758-8cee-2a7c1340a6d9>", "status": "InProgress", "type": "LoggingUpdate", "params": [ { "type": "ClusterLogging", "value": "{\"clusterLogging\":[{\"types\":[\"api\",\"audit\",\"authenticator\",\"controllerManager\",\"scheduler\"],\"enabled\":true}]}" } ], "createdAt": 1553271814.684, "errors": [] } }
  3. 次のコマンドでログ設定更新のステータスをモニタリングします。その際、以前のコマンドで返されたクラスター名と更新 ID を使用します。ステータスが Successful となったら、更新は完了です。

    aws eks --region <region-code> describe-update --name <prod> --update-id <883405c8-65c6-4758-8cee-2a7c1340a6d9>

    出力:

    { "update": { "id": "<883405c8-65c6-4758-8cee-2a7c1340a6d9>", "status": "Successful", "type": "LoggingUpdate", "params": [ { "type": "ClusterLogging", "value": "{\"clusterLogging\":[{\"types\":[\"api\",\"audit\",\"authenticator\",\"controllerManager\",\"scheduler\"],\"enabled\":true}]}" } ], "createdAt": 1553271814.684, "errors": [] } }

クラスターのコントロールプレーンログの表示

Amazon EKS クラスターのいずれかのコントロールプレーンログタイプを有効にすると、それらを CloudWatch コンソールで表示できるようになります。

CloudWatch でログを表示、分析、および管理する方法については、Amazon CloudWatch Logs ユーザーガイドを参照してください。

CloudWatch コンソールでクラスターのコントロールプレーンログを表示するには

  1. CloudWatch コンソール (https://console.aws.amazon.com/cloudwatch/home#logs:prefix=/aws/eks) を開きます。この URL では、現在使用可能なロググループが表示され、プレフィックス /aws/eks でフィルタリングされます。

  2. ログを表示するクラスターを選択します。ロググループの名前の形式は /aws/eks/<cluster-name>/cluster です。

  3. 表示するログストリームを選択します。次のリストで、各ログタイプのログストリーム名の形式について説明します。

    注記

    ログストリームデータが大きくなるにつれて、ログストリーム名のローテーションが行われます。特定のログタイプのログストリームが複数存在する場合、最新のログストリームを表示するには、[最終のイベント時刻] が最新のログストリーム名を見つけ出します。

    • Kubernetes API サーバーコンポーネントログ (api)kube-apiserver-<nnn...>

    • 監査 (audit)kube-apiserver-audit-<nnn...>

    • 認証システム (authenticator)authenticator-<nnn...>

    • コントローラーマネージャー (controllerManager)kube-controller-manager-<nnn...>

    • スケジューラ (scheduler)kube-scheduler-<nnn...>