View a markdown version of this page

访问 EKS 功能控制器日志 - Amazon EKS

帮助改进此页面

要帮助改进本用户指南,请选择位于每个页面右侧窗格中的在 GitHub 上编辑此页面链接。

访问 EKS 功能控制器日志

适用于 ACK、kro 和 Argo CD 的 EKS 功能控制器在集群之外的 AWS 托管式基础设施中运行。您可以使用 Amazon CloudWatch Vended Logs 为这些控制器配置日志传输,从而了解控制器行为以进行监控和问题排查。

这些日志以结构化 JSON 格式传送,包括日志级别、消息、控制器名称和协调标识符等操作字段。内部的 AWS 元数据在传输之前会进行筛选,确保您只会收到与您的功能控制器相关的操作日志内容。

支持的日志类型

每种功能都有一种或多种日志类型,您可以将这些日志类型单独配置为 CloudWatch Vended Logs 传输来源。

ACK

  • EKS_CAPABILITY_ACK_LOGS

kro

  • EKS_CAPABILITY_KRO_LOGS

Argo CD

  • EKS_CAPABILITY_ARGOCD_APPLICATION_LOGS

  • EKS_CAPABILITY_ARGOCD_APPLICATIONSET_LOGS

  • EKS_CAPABILITY_ARGOCD_COMMITSERVER_LOGS

  • EKS_CAPABILITY_ARGOCD_REPOSERVER_LOGS

  • EKS_CAPABILITY_ARGOCD_SERVER_LOGS

ACK 使用单一日志类型来涵盖所有 ACK 服务控制器。日志记录包括一个 controllerGroup 字段(例如 s3.services.k8s.awsrds.services.k8s.aws),用于标识生成相关日志的具体 ACK 服务控制器。您可以利用此字段在 CloudWatch Logs Insights 或其他查询工具中筛选特定服务控制器的日志。

Argo CD 有五种不同的日志类型,每个控制器组件一种。这让您可以仅为所需的控制器启用日志记录功能,并将其路由到不同的目标。

设置日志传输

要配置功能控制器日志传输,请使用 AWS 管理控制台或 Amazon CloudWatch Logs API。有关详细设置说明,请参阅《Amazon CloudWatch Logs 用户指南》中的从 AWS 服务中启用日志记录。每个功能控制器都可以配置为一个单独的 CloudWatch Vended Logs 传输来,从而让您可以选择要接收的日志。

控制台

  1. 从以下位置打开 Amazon EKS 控制台:https://console.aws.amazon.com/eks/home#/clusters。

  2. 选择集群名称。

  3. 选择权能选项卡,然后选择所需的功能。

  4. 日志传输部分中,选择添加

  5. 选择该功能的日志类型,然后选择目标。

  6. 选择添加以创建传输。

使用 Amazon CloudWatch API

设置日志记录需要三个步骤:

  1. 使用 CloudWatch PutDeliverySource API 为该功能创建传输来源。将功能 ARN 作为 resourceArn 并指定所需的日志类型。

  2. 使用 PutDeliveryDestination 创建传输目标。指定 CloudWatch 日志组、S3 存储桶或 Amazon Data Firehose 传输流的 ARN。

  3. 使用 CreateDelivery 创建传输以连接来源和目标。

您可以使用 describe-capability 命令检索功能 ARN:

aws eks describe-capability \ --region region-code \ --cluster-name my-cluster \ --capability-name my-capability \ --query 'capability.capabilityArn' --output text

您可以通过创建多个传输,将单个功能(传输来源)配置为将日志发送到多个目标。您也可以将来自多个功能的日志发送到同一目标。

IAM 权限

根据所选的目标,您可能需要为 CloudWatch 日志组、S3 存储桶和 Amazon Data Firehose 传输流配置 IAM 策略或角色,以确保能够成功传输日志。如果需要跨 AWS 账户发送日志,请使用 PutDeliveryDestinationPolicy API 来配置允许将日志传输到目标的 IAM 策略。有关更多信息,请参阅 CloudWatch Vended Logs 权限文档

示例:使用 CloudWatch Logs Insights 查询日志

要查看所有控制器的错误日志,请执行以下操作:

fields @timestamp, controller, message, error | filter level = "error" | sort @timestamp desc | limit 50

有关更多查询示例,包括按服务控制器筛选、跟踪协调周期和 Argo CD 应用程序筛选等,请参阅使用控制器日志进行问题排查

查看日志

配置好日志传输后,日志将会传输至您指定的目标。访问日志的方法取决于您选择的目标类型:

  • CloudWatch Logs:通过 CloudWatch Logs 控制台、 AWS CLI 命令或 CloudWatch Logs Insights 查询来查看日志。

  • Amazon S3:通过 S3 控制台、AWS CLI 或 Amazon Athena 等分析工具访问作为 S3 存储桶中对象的日志。

  • Amazon Data Firehose:日志将流式传输到您配置的 Firehose 目标(例如 S3、OpenSearch Service、Redshift 等)。

定价

CloudWatch Vended Logs 会根据您选择的传输目标来收取日志传输及存储费用。与标准的 CloudWatch Logs 相比,CloudWatch Vended Logs 通过内置的 AWS 身份验证和授权实现可靠、安全的日志传输,且价格更低。有关更多详细信息,请参阅 CloudWatch 定价页面的 Vended Logs 部分