本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
亚马逊 EKS 中的登录类型
在 Amazon EKS 中,日志包括捕获、存储和分析由 Kubernetes
为了有效地管理 Amazon EKS 环境中的日志,您通常会结合使用第三方工具和最佳实践。 AWS 服务这可能包括使用亚马逊 CloudWatch
以下各节探讨了 Amazon EKS 中日志记录的各个方面,包括在 Kubernetes 集群中实施全面日志策略的最佳实践、工具和技术。 AWS
系统日志
在 Amazon EKS 中记录底层 EC2 实例或 Fargate 节点涉及不同的方法,具体取决于节点类型。
要在 Amazon EKS 中实现 EC2 实例的日志记录,您可以使用以下工具:
-
CloudWatch 代理:在您的 EC2 实例上安装和配置 CloudWatch 代理。将其配置为收集系统日志,例如
/var/log/messages和/var/log/secure。您可以使用用户数据脚本或配置管理工具来自动执行此过程。 -
Fluent Bi t:将 Fluent Bit 部署 DaemonSet 为从所有节点收集日志。将其配置为将日志转发到CloudWatch 日志或其他集中式日志系统。
-
容器见解:在 EKS 集群中启用容器见解,自动收集来自 EC2 实例的指标和日志。
-
自定义脚本:开发自定义脚本以收集特定日志并将其发送到您的首选日志目的地。
-
SSM 代理:使用 AWS Systems Manager 代理(SSM 代理)收集日志并将其转发到日志。 CloudWatch
要在 Amazon EKS 中实现 Fargate 节点的日志记录,请使用以下工具:
-
Fargate 日志记录:Fargate 会自动从您的容器中收集
stdout和stderr记录日志。配置您的 Fargate 个人资料以将这些日志发送到日志。 CloudWatch -
Fargate 的 Fluent Bit: AWS 提供专门用于 Fargat
e 日志的 Fluent Bit 图片。将其作为边车容器部署在 Fargate 吊舱中,以收集和转发日志。 -
Fargate 容器见解
:启用容器洞察以收集来自 Fargate 节点的指标和日志。
Kubernetes 组件日志
从 Amazon EKS 中的 API 服务器、调度程序和控制器管理器等 Kubernetes 组件收集日志,需要采用与应用程序日志稍微不同的方法。这些组件作为 Amazon EKS 控制平面的一部分运行,该控制平面由管理 AWS。您可以通过以下方式收集和访问这些日志:
-
启用控制平面日志记录:您可以通过 AWS 管理控制台、() 或基础设施即代码 (IaC AWS CLI) 工具AWS Command Line Interface (例如AWS CloudFormation或 Terraform)为 EKS 集群启用控制平面日志记录。启用控制平面日志记录后,日志将发送到 Amazon CloudWatch Logs。您可以在 CloudWatch 控制台的
/aws/eks/<cluster-name>/cluster日志组中查看它们。在此日志组中,每个控制平面组件都有自己的日志流,如下所示:流名称 说明 kube-apiserver Kubernetes API 服务器日志 kube-scheduler 调度程序决策日志 kube-controller-manager 控制器管理器日志 身份验证器 IAM 身份验证器日志 audit Kubernetes 审计日志(必须明确启用) 要查看特定组件的日志,请导航到集群日志组并按目标日志流名称进行筛选。
-
使用 CloudWatch 日志见解:您可以使用 CloudWatch Logs Insights 对日志执行复杂查询。
-
将日志导出到 Amazon S3:为了进行长期存储或进一步分析,您可以将日志导出到亚马逊简单存储服务 (Amazon S3)。
-
使用第三方工具:您可以使用诸如 Fluent Bit 之类的工具来收集这些日志,并将其转发到其他日志系统,例如 Elasticsearch 或 Splunk。
-
使用 AWS CloudTrail:该AWS CloudTrail服务可以提供对您的 EKS 集群进行的 API 调用的更多见解。
容器运行日志
在 Amazon EKS 中记录容器运行时日志涉及从容器运行时捕获和管理日志,这通常containerd适用于 Amazon EKS。以下是在 Amazon EKS 中记录容器运行时日志的方法:
-
直接访问 Amazon EC2 节点上的日志。对于自行管理的 EC2 节点,您可以从以下位置直接访问主机上的容器运行时日志:
-
containerd日志:/var/log/containers/ -
Docker 日志(如果你使用的是 Docker 运行时):
/var/log/docker.log
-
-
使用 DaemonSet 进行日志收集。
-
将日志收集代理(例如 Fluent Bit)部署 DaemonSet 为,从所有节点收集日志。
-
将 CloudWatch 代理配置为收集容器运行时日志。
-
启用 “容器见解” 以收集容器运行时指标和日志。
-
使用 Fargate。对于 Fargate 节点,容器运行时日志会自动收集,并且可以通过日志进行访问。 CloudWatch
-
使用 Fluent Bit 或 Logstash 等工具实现自定义日志解决方案。设置CloudWatch警报或使用诸如 Prometheus 之类的工具来监控容器运行时日志中的特定模式或问题。考虑使用与 Kubernetes 和 Amazon EKS 很好地集成的第三方日志解决方案,例如 Datadog、Splunk 或 Elastic Stack(ELK Stack)。使用日志聚合工具从多个来源收集日志,并将其转发到集中式日志系统。
应用程序日志
Amazon EKS 中的应用程序日志是维护应用程序和排除应用程序故障的关键部分。要在 Amazon EKS 中实现应用程序日志记录,您可以从以下选项中进行选择:
-
将日志写入
stdout/stderr:处理应用程序日志的最简单、最基于 Kubernetes 的方法是将它们写入和。stdoutstderrKubernetes 会自动捕获这些流。 -
实现日志聚合:使用诸如 Fluent Bit 之类的日志聚合器从所有 pod 中收集日志。
-
配置日志路由:配置您的日志聚合器以将日志路由到所需的目的地(例如 CloudWatch 日志或 Elasticsearch)。
-
使用 CloudWatch 容器见解:启用容器见解以进行全面的日志记录和监控。