

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 登录 Amazon EKS
<a name="kubernetes-eks-logging"></a>

Kubernetes 日志可以分为控制平面日志、节点日志和应用程序日志记录。[Kubernetes 控制平面](https://kubernetes.io/docs/concepts/overview/components/#control-plane-components)是一组组组件，用于管理 Kubernetes 集群并生成用于审计和诊断目的的日志。使用 Amazon EKS，您可以[打开不同控制平面组件的日志](https://docs.aws.amazon.com//eks/latest/userguide/control-plane-logs.html)并将其发送到 CloudWatch。

Kubernetes 还会在运行你的 Pod 的每个 Kubernetes `kube-proxy` 节点上运行系统组件，例如`kubelet`和。这些组件在每个节点内写入日志，您可以配置 CloudWatch 容器见解以捕获每个 Amazon EKS 节点的这些日志。

容器被分组为 Kubernetes 集群中的 [Pod](https://kubernetes.io/docs/concepts/workloads/pods/)，并计划在你的 Kubernetes 节点上运行。大多数容器化应用程序写入标准输出和标准错误，容器引擎将输出重定向到日志驱动程序。在 Kubernetes 中，容器日志位于节点上的`/var/log/pods`目录中。您可以配置 CloudWatch 和容器见解来捕获每个 Amazon EKS 容器的这些日志。

## Amazon EKS 控制面板日志记录
<a name="eks-control-plane-logging"></a>

Amazon EKS 集群由用于您的 Kubernetes 集群的高可用性单租户控制平面和运行您的容器的 Amazon EKS 节点组成。控制平面节点在由管理的账户中运行 AWS。Amazon EKS 集群控制平面节点 CloudWatch 与集成，您可以为特定控制平面组件开启日志记录。

为每个 Kubernetes 控制平面组件实例提供了日志。 AWS 管理控制平面节点的运行状况，并为 [Kubernetes 终端节点提供服务级别协议 (SLA)](https://aws.amazon.com//eks/sla/)。

## Amazon EKS 节点和应用程序日志
<a name="eks-node-application-logging"></a>

我们建议您使用[CloudWatch容器见解](https://docs.aws.amazon.com//AmazonCloudWatch/latest/monitoring/Container-Insights-setup-logs.html)来捕获 Amazon EKS 的日志和指标。Container Insights 使用 CloudWatch 代理实现集群、节点和 pod 级别的指标，以及用于日志捕获的 Fluent Bit 或 Fluentd。 CloudWatch容器见解还提供自动仪表板，其中包含您捕获的 CloudWatch 指标的分层视图。容器见解部署为 CloudWatch DaemonSet 在每个 Amazon EKS 节点上运行 DaemonSet 的 Fluent Bit。Container Insights 不支持 Fargate 节点，因为这些节点由管理 AWS 且不支持。 DaemonSets本指南中单独介绍了 Amazon EKS 的 Fargate 日志记录。

 下表显示了 Amazon E CloudWatch KS 的[默认 Fluentd 或 Fluent Bit 日志捕获配置捕获的日志](https://docs.aws.amazon.com//AmazonCloudWatch/latest/monitoring/Container-Insights-setup-logs-FluentBit.html)组和日志。


|  |  | 
| --- |--- |
| /aws/containerinsights/Cluster\$1Name/application | 所有日志文件都已输入/var/log/containers。该目录提供了指向目录结构中所有 Kubernetes 容器日志的/var/log/pods符号链接。这将捕获写入stdout或的应用程序容器日志stderr。它还包括 Kubernetes 系统容器的日志aws-vpc-cni-init，例如、kube-proxy和。coreDNS | 
| /aws/containerinsights/Cluster\$1Name/host | 来自/var/log/dmesg/var/log/secure、和的日志/var/log/messages。 | 
| /aws/containerinsights/Cluster\$1Name/dataplane | kubelet.service、kubeproxy.service 和 docker.service 的 /var/log/journal 中的日志。 | 

如果您不想使用带有 Fluent Bit 或 Fluentd 的 Container Insights 进行日志记录，则可以使用安装在 Amazon EKS 节点上的 CloudWatch 代理来捕获节点和容器日志。Amazon EKS 节点是 EC2 实例，这意味着您应该将它们包含在适用于 Amazon EC2 的标准系统级日志记录方法中。如果您使用分销商和状态管理器安装代理，则 CloudWatch 代理的安装、配置和更新中还包括 Amazon EKS 节点。 CloudWatch 

下表显示了特定于 Kubernetes 的日志，如果您没有使用带有 Fluent Bit 或 Fluentd 的容器见解进行日志记录，则必须捕获这些日志。


|  |  | 
| --- |--- |
| /var/log/containers | 该目录提供了指向目录结构下所有 Kubernetes 容器日志的/var/log/pods符号链接。这可以有效地捕获写入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 代理以发送相应的系统级日志和指标。但是，亚马逊 EKS 优化的 AMI 不包括 Systems Manager 代理。通过使用[启动模板](https://docs.aws.amazon.com//eks/latest/userguide/launch-templates.html)，您可以自动安装 Systems Manager 代理并使用通过用户数据部分实现的启动脚本来捕获重要的 Amazon EKS 特定日志的默认 CloudWatch 配置。Amazon EKS 节点使用 Auto Scaling 组作为[托管节点组](https://docs.aws.amazon.com//eks/latest/userguide/managed-node-groups.html)或[自管理节点进行](https://docs.aws.amazon.com//eks/latest/userguide/worker.html)部署。

对于托管节点组，您可以提供包含用户数据部分的[启动模板](https://docs.aws.amazon.com//eks/latest/userguide/launch-templates.html)，以自动安装和 CloudWatch 配置 Systems Manager 代理。您可以自定义并使用 ama [zon\$1eks\$1managed\$1node\$1group\$1launch\$1config.yaml CloudFormation 模板来创建启动模板，该模板用于安装 Systems Manager 代 CloudWatch 理、代理，还可以将 Amaz](https://github.com/aws-samples/logging-monitoring-apg-guide-examples/blob/main/examples/eks/amazon_eks_managed_node_group_launch_config.yaml) on EKS 特定的日志配置添加到配置目录中。 CloudWatch 此模板可用于通过 infrastructure-as-code (IaC) 方法更新您的 Amazon EKS 托管节点组启动模板。 CloudFormation 模板的每次更新都会提供一个新版本的启动模板。然后，您可以更新节点组以使用新的模板版本，并让[托管生命周期流程](https://docs.aws.amazon.com//eks/latest/userguide/managed-node-update-behavior.html)在不停机的情况下更新您的节点。确保应用于您的托管节点组的 IAM 角色和实例配置文件包含`CloudWatchAgentServerPolicy`和`AmazonSSMManagedInstanceCore` AWS 托管策略。

使用自行管理的节点，您可以直接为 Amazon EKS 节点配置和管理生命周期和更新策略。[自我管理的节点允许你在 Amazon EKS 集群和 [Bottlerock](https://aws.amazon.com//bottlerocket/) et 上运行 Windows 节点以及其他选项。](https://docs.aws.amazon.com//eks/latest/userguide/eks-compute.html)您可以使用将自我管理的节点部署 CloudFormation 到您的 Amazon EKS 集群中，这意味着您可以对 Amazon EKS 集群使用 IaC 和托管变更方法。 AWS 提供了 [amazon-eks-nodegroup.yaml](https://github.com/aws-samples/logging-monitoring-apg-guide-examples/blob/main/examples/eks/amazon-eks-nodegroup.yaml) CloudFormation 模板，您可以按原样使用或自定义。该模板为集群中的 Amazon EKS 节点预配置所有必需的资源（例如，单独的 IAM 角色、安全组、Amazon EC2 Auto Scaling 组和启动模板）。[amazon-eks-nodegroup.yaml](https://github.com/aws-samples/logging-monitoring-apg-guide-examples/blob/main/examples/eks/amazon-eks-nodegroup.yaml) CloudFormation 模板是一个更新版本，用于安装所需的 Systems Manager 代理和 CloudWatch 代理，并将特定于 Amazon EKS 的日志配置添加到 CloudWatch 配置目录中。

## 在 Fargate 上登录亚马逊 EKS
<a name="eks-fargate-logging"></a>

借助 Fargate 上的 Amazon EKS，您无需分配或管理 Kubernetes 节点即可部署 Pod。这样就无需为 Kubernetes 节点捕获系统级日志。要从 Fargate 吊舱中捕获日志，你可以使用 Fluent Bit 将日志直接转发到。 CloudWatch这使您 CloudWatch 无需进一步配置即可自动将日志路由到 Fargate 上的 Amazon EKS 容器，也无需为 Fargate 上的 Amazon EKS 容器设置边车容器。有关这方面的更多信息，请参阅亚马逊 EKS 文档中的 [Fargate 登录](https://docs.aws.amazon.com//eks/latest/userguide/fargate-logging.html)和博客上的 Fr [uent Bit for Amazon EKS](https://aws.amazon.com//blogs/containers/fluent-bit-for-amazon-eks-on-aws-fargate-is-here/)。 AWS 此解决方案基于在 Farg `STDOUT` ate 上为 Amazon EKS 集群建立的 Fluent Bit 配置，捕获容器中的和 `STDERR` input/output (I/O) 流，并 CloudWatch 通过 Fruent Bit 将其发送到。