Amazon EKS のログ記録 - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon EKS のログ記録

Kubernetes ロギングは、コントロールプレーンのロギング、ノードロギング、およびアプリケーションロギングに分けることができます。Kubernetes コントロールプレーン は、Kubernetes クラスタを管理し、監査および診断に使用されるログを生成するコンポーネントのセットです。Amazon EKSで、さまざまなコントロールプレーンコンポーネントのログをオンにし、CloudWatch に送信します。

Kubernetes は、kubelet そして kube-proxy ポッドを実行する各 Kubernetes ノードで次のようなシステムコンポーネントも実行します。これらのコンポーネントは各ノード内にログを書き込み、各 Amazon EKS ノードでこれらのログをキャプチャするように CloudWatch とコンテナインサイトを設定できます。

コンテナは、Kubernetes クラスタ内でポッドとしてグループ化され、また Kubernetes ノードで実行するようにスケジュールされています。ほとんどのコンテナ化されたアプリケーションは、標準出力と標準エラーに書き込み、コンテナエンジンはその出力をロギングドライバにリダイレクトします。Kubernetes では、コンテナログは /var/log/pods ノード上のディレクトリで見つかります。CloudWatch とコンテナインサイトを設定して、各 Amazon EKS ポッドのこれらのログをキャプチャできます。

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

Amazon EKS クラスターは、Kubernetes クラスターの高可用性のシングルテナントコントロールプレーンと、コンテナを実行する Amazon EKS ノードで構成されます。コントロールプレーンノードは、 が管理するアカウントで実行されます AWS。Amazon EKS クラスターコントロールプレーンノードは CloudWatch に統合され、特定のコントロールプレーンコンポーネントのロギングを有効にできます。

ログは、Kubernetes コントロールプレーンコンポーネントインスタンスごとに提供されます。 は、コントロールプレーンノードの状態 AWS を管理し、Kubernetes エンドポイントのサービスレベルアグリーメント (SLA) を提供します。

Amazon EKS ノードとアプリケーションのログ記録

CloudWatch コンテナインサイト Amazon EKS のログとメトリクスをキャプチャをを使用することをお勧めします。コンテナインサイトは CloudWatch エージェントでクラスター、ノード、ポッドレベルのメトリクスを実装し、CloudWatch へのログキャプチャ用のフルエントビットまたは Fluentd を実装します。Container Insights は、キャプチャされた CloudWatch メトリクスをレイヤー化したビューを含む自動ダッシュボードも提供します。コンテナインサイトは、すべての Amazon EKS ノードで実行される CloudWatch DaemonSet および Fluent Bit DaemonSet としてデプロイされます。Fargate ノードは、DaemonSets によって管理 AWS され、サポートされていないため、Container Insights ではサポートされません。Amazon EKS の Fargate ロギングについては、このガイドで個別に説明しています。

次の表に、デフォルトの Fluentd または Fluent Bit ログキャプチャ設定 し、Amazon EKS の場合でキャプチャされた CloudWatch ロググループとログを示します。

/aws/containerinsights/Cluster_Name/application /var/log/containers のすべてのログファイル このディレクトリは、/var/log/pods ディレクトリ構造内のすべての Kubernetes コンテナログへのシンボリックリンクを提供します。これにより、アプリケーションコンテナのログへの書き込みが stdout または stderr にキャプチャされます。また、次のようなKubernetes システムコンテナの aws-vpc-cni-init,kube-proxy, および coreDNS のログも含まれます。
/aws/containerinsights/Cluster_Name/host /var/log/dmesg/var/log/secure、および /var/log/messages からのログ
/aws/containerinsights/Cluster_Name/dataplane /var/log/journalkubelet.service、およびkubeproxy.service に対する docker.service のログ。

ログに Fluent Bit または Fluentd でコンテナインサイトを使用したくない場合は、Amazon EKS ノードにインストールされた CloudWatch エージェントを使用してノードとコンテナログをキャプチャできます。Amazon EKS ノードは EC2 インスタンスです。つまり、Amazon EC2 の標準システムレベルのロギングアプローチにそれらを含める必要があります。ディストリビューターとステートマネージャーを使用して CloudWatch エージェントをインストールすると、Amazon EKS ノードも CloudWatch エージェントのインストール、設定、および更新に含まれます。

次の表に、Kubernetes に固有のログを示し、ログに Fluent Bit または Fluentd でコンテナインサイトを使用していない場合にキャプチャする必要があるログを示します。

/var/log/containers このディレクトリは、/var/log/pods ディレクトリ構造内のすべての Kubernetes コンテナログへのシンボリックリンクを提供します。これにより、アプリケーションコンテナのログへの書き込みが stdout または stderr にキャプチャされます。また、次のようなKubernetes システムコンテナの aws-vpc-cni-init,kube-proxy, および coreDNS のログも含まれます。重要: コンテナインサイトを使用している場合、これは必須ではありません。
var/log/aws-routed-eni/ipamd.log

/var/log/aws-routed-eni/plugin.log
L-IPAM デーモンのログはここにあります

Amazon EKS ノードが適切なシステムレベルのログとメトリクスを送信するように CloudWatch エージェントをインストールして設定する必要があります。ただし、AMI 解析された Amazon EKS は、必要な Systems Manager Agent は含まれていません。起動テンプレート を使用して、Systems Manager エージェントのインストールと、ユーザーデータセクションを通じて実装された起動スクリプトを使用して、重要な Amazon EKS 固有のログをキャプチャするデフォルトの CloudWatch 設定を自動化できます。Amazon EKS ノードは、Auto Scaling グループを マネージド型ノードグループ または セルフマネージド型ノード としてデプロイされています。

管理対象ノードグループでは、起動テンプレート には、Systems Manager エージェントのインストールと CloudWatch 設定を自動化するためのユーザーデータセクションが含まれています。amazon_eks_managed_node_group_launch_config.yaml AWS CloudFormation テンプレートをカスタマイズして使用すると、Systems Manager エージェント、CloudWatch エージェントをインストールし、Amazon EKS 固有のログ記録設定を CloudWatch 設定ディレクトリに追加する起動テンプレートを作成できます。このテンプレートを使用して、Amazon EKS マネージドノードグループの起動テンプレートをコードとしてのインフラストラクチャ (IaC) アプローチで更新できます。 AWS CloudFormation テンプレートの更新ごとに、起動テンプレートの新しいバージョンがプロビジョニングされます。次に、ノードグループを更新して新しいテンプレートバージョンを使用し、マネージド型ライフサイクルプロセス をダウンタイムなしでノードを更新できます。マネージドノードグループに適用される IAM ロールとインスタンスプロファイルに、 CloudWatchAgentServerPolicyおよび AmazonSSMManagedInstanceCore AWS マネージドポリシーが含まれていることを確認します。

セルフマネージドノードを使用すると、Amazon EKS ノードのライフサイクルと更新戦略を直接プロビジョニングおよび管理できます。自己管理ノードを使用すると、お客様のAmazon EKS クラスターで Windows ノードを実行し、Bottlerocketと併せて 他のオプション を許可します。 AWS CloudFormation を使用して、Amazon EKS クラスターにセルフマネージド型ノードをデプロイできます。つまり、Amazon EKS クラスターに IaC および マネージド型変更アプローチを使用できます。 AWS には、そのまま使用したりカスタマイズしたりできる amazon-eks-nodegroup.yaml AWS CloudFormation テンプレートが用意されています。テンプレートは、クラスター内の Amazon EKS ノードに必要なすべてのリソースをプロビジョニングします (たとえば、個別の IAM ロール、セキュリティグループ、Amazon EC2 Auto Scaling グループ、起動テンプレート)。amazon-eks-nodegroup.yaml AWS CloudFormation テンプレートは、必要な Systems Manager エージェント、CloudWatch エージェントをインストールし、Amazon EKS 固有のログ記録設定を CloudWatch 設定ディレクトリに追加する更新バージョンです。

Fargate での Amazon EKS のログ記録

Fargate で Amazon EKS を使用すると、Kubernetes ノードを割り当てたり管理したりすることなく、ポッドをデプロイできます。これにより、Kubernetes ノードのシステムレベルのログをキャプチャする必要がなくなります。Fargate ポッドからログをキャプチャするには、Fluent Bit を使用してログを CloudWatch に直接転送できます。これにより、Fargate 上の Amazon EKS ポッドの追加設定やサイドカーコンテナを使用せずに、ログを CloudWatch に自動的にルーティングできます。詳細については、「Amazon EKS ドキュメント」の「Fargate logging」および AWS 「 ブログ」の「Fluent Bit for Amazon EKS」を参照してください。このソリューションでは、STDOUT そして STDERR の入出力 (I/O) は、Fargate 上の Amazon EKS クラスター用に確立されたフルエントビット設定に基づいて、コンテナからストリームし、Fluent Bit を介して CloudWatch に送信します。