日志聚合
在可观测性最佳实践指南的这一部分中,我们将深入探讨以下与使用 AWS 原生服务进行 Amazon EKS 日志记录相关的主题:
- AWS EKS 日志记录简介
- Amazon EKS 控制平面日志记录
- Amazon EKS 数据平面日志记录
- Amazon EKS 应用程序日志记录
- 使用 AWS 原生服务从 Amazon EKS 和其他计算平台进行统一日志聚合
- 结论
简介
Amazon EKS 日志记录可分为三种类型:控制平面日志记录、节点日志记录和应用程序日志记录。Kubernetes 控制平面是一组管理 Kubernetes 集群并生成用于审计和诊断目的的日志的组件。使用 Amazon EKS,您可以开启不同控制平面组件的日志并将它们发送到 CloudWatch。
Kubernetes 还在运行 pod 的每个 Kubernetes 节点上运行系统组件,如 kubelet 和 kube-proxy。这些组件在每个节点内写入日志,您可以配置 CloudWatch 和 Container Insights 来捕获每个 Amazon EKS 节点的这些日志。
容器被分组为 Kubernetes 集群中的 pod,并被调度在 Kubernetes 节点上运行。大多数容器化应用程序写入标准输出和标准错误,容器引擎将输出重定向到日志驱动程序。在 Kubernetes 中,容器日志位于节点上的 /var/log/pods 目录中。您可以配置 CloudWatch 和 Container Insights 来捕获每个 Amazon EKS pod 的这些日志。
在 Kubernetes 中,有三种常见的方法来捕获容器日志并将其发送到集中式日志聚合系统:
- 节点级别 agent,如 Fluentd daemonset。这是推荐的模式。
- Sidecar 容器,如 Fluentd sidecar 容器。
- 直接写入日志收集系统。在这种方法中,应用程序负责传送日志。这是最不推荐的选项,因为您必须在应用程序代码中包含日志聚合系统的 SDK,而不是重用社区构建的解决方案(如 Fluentd)。这种模式也违反了关注点分离原则,根据该原则,日志实现应独立于应用程序。这样做可以让您更改日志基础设施而不影响或更改应用程序。
我们现在将深入了解 Amazon EKS 日志记录的每个类别,并讨论从 Amazon EKS 和其他计算平台进行统一日志聚合。
Amazon EKS 控制平面日志记录
Amazon EKS 集群由 Kubernetes 集群的高可用性、单租户控制平面和运行容器的 Amazon EKS 节点组成。控制平面节点运行在 AWS 管理的账户中。Amazon EKS 集群控制平面节点与 CloudWatch 集成,您可以开启特定控制平面组件的日志记录。日志为每个 Kubernetes 控制平面组件实例提供。AWS 管理控制平面节点的健康状况,并为 Kubernetes endpoint 提供服务级别协议 (SLA)。
Amazon EKS 控制平面日志记录包含以下集群控制平面日志类型。每种日志类型对应 Kubernetes 控制平面的一个组件。要了解更多关于这些组件的信息,请参阅 Kubernetes 文档中的 Kubernetes 组件。
- API server (
api) - 集群的 API server 是公开 Kubernetes API 的控制平面组件。如果您在启动集群时或之后不久启用 API server 日志,这些日志将包含用于启动 API server 的标志。有关更多信息,请参阅 Kubernetes 文档中的kube-apiserver和审计策略。 - Audit (
audit) - Kubernetes 审计日志提供了影响集群的个人用户、管理员或系统组件的记录。有关更多信息,请参阅 Kubernetes 文档中的审计。 - Authenticator (
authenticator) - Authenticator 日志是 Amazon EKS 独有的。这些日志代表 Amazon EKS 用于使用 IAM 凭证进行 Kubernetes 基于角色的访 问控制 (RBAC) 身份验证的控制平面组件。有关更多信息,请参阅集群管理。 - Controller manager (
controllerManager) - Controller manager 管理 Kubernetes 附带的核心控制循环。有关更多信息,请参阅 Kubernetes 文档中的 kube-controller-manager。 - Scheduler (
scheduler) - Scheduler 组件管理何时何地在集群中运行 pod。有关更多信息,请参阅 Kubernetes 文档中的 kube-scheduler。
请按照启用和禁用控制平面日志部分通过 AWS 控制台或 AWS CLI 启用控制平面日志。
从 CloudWatch 控制台查询控制平面日志
在 Amazon EKS 集群上启用控制平面日志记录后,您可以在 /aws/eks/cluster-name/cluster 日志组中找到 EKS 控制平面日志。有关更多信息,请参阅