在K8S中,如何收集K8S日志?有哪些方案?

本文涉及的产品
Elasticsearch Serverless通用抵扣包,测试体验金 200元
可观测可视化 Grafana 版,10个用户账号 1个月
日志服务 SLS,月写入数据量 50GB 1个月
简介: 在K8S中,如何收集K8S日志?有哪些方案?

在 Kubernetes (K8s) 中,日志管理是一个重要的运维任务,涉及到容器日志的收集、存储和分析。以下是一些常见的 Kubernetes 日志收集方案和步骤。

1. 使用 kubectl 命令行工具

kubectl 是 Kubernetes 的命令行工具,可以用来获取 Pod 和容器的日志。

  • 获取单个容器的日志
kubectl logs <pod-name> -c <container-name>
  • 获取多个容器的日志
kubectl logs <pod-name>
  • 实时获取日志
kubectl logs -f <pod-name> -c <container-name>
  • 获取历史日志
kubectl logs --previous <pod-name> -c <container-name>
2. 使用 Fluentd

Fluentd 是一个流行的开源数据收集器,可以用来统一日志数据的收集和处理。

  • 安装 Fluentd
  • 可以通过 Helm chart 或直接在 Kubernetes 中部署 Fluentd 的 DaemonSet。
  • 配置 Fluentd
  • Fluentd 需要配置输入(input)和输出(output)插件。输入插件用于从 Kubernetes 节点和容器中获取日志,输出插件用于将日志发送到存储系统或日志分析平台。
  • 示例 Fluentd 配置
apiVersion: v1
kind: ConfigMap
metadata:
name: fluentd-config
data:
fluentd.conf: |
    <source>
      @type tail
      path /var/log/containers/*.log
      pos_file /var/log/fluentd-containers.log.pos
      tag kubernetes.*
      read_from_head true
      <parse>
        @type json
        time_key time
        time_format %Y-%m-%dT%H:%M:%S.%NZ
      </parse>
    </source>
 
<filter kubernetes.**>
@type kubernetes_metadata
</filter>
<match **>
@type elasticsearch
@id elasticsearch
@log_level info
host elasticsearch-svc
port 9200
logstash_format true
logstash_prefix kubernetes
<buffer>
@type file
path /var/log/fluentd-buffers/kubernetes.*
flush_mode interval
flush_interval 5s
flush_thread_count 2
retry_type exponential_backoff
retry_wait 1s
retry_max_interval 30
retry_timeout 30s
chunk_limit_size 2M
queue_limit_length 8
overflow_action block
</buffer>
</match>
3. 使用 Elasticsearch, Fluentd, and Kibana (EFK) 堆栈

EFK 堆栈是一个流行的日志收集和分析解决方案,结合了 Elasticsearch、Fluentd 和 Kibana。

  • Elasticsearch:用于存储和索引日志数据。
  • Fluentd:用于日志数据的收集和传输。
  • Kibana:用于日志数据的可视化和分析。
  • 部署 EFK 堆栈
  • 可以通过 Helm chart 或手动部署每个组件。
4. 使用 Prometheus 和 Grafana

虽然 Prometheus 主要用于监控指标数据,但它也可以收集和存储日志数据,并通过 Grafana 进行可视化。

  • 安装 Prometheus
kubectl apply -f https://raw.githubusercontent.com/prometheus/prometheus-operator/master/bundle.yaml
  • 配置 Prometheus
  • 需要在 Prometheus 的配置文件中添加日志相关的记录规则。
  • 使用 Grafana
  • Grafana 可以连接到 Prometheus,展示日志数据的可视化图表。
5. 使用 Loki

Loki 是 Grafana Labs 开发的日志聚合系统,专为日志数据设计,具有高性能和易于使用的特点。

  • 安装 Loki
kubectl apply -f https://raw.githubusercontent.com/grafana/loki/v2.0.0/production/ksonnet/loki-stack.yaml
  • 配置 Loki
  • 需要配置 Loki 的数据源,以便从 Kubernetes 节点和容器中获取日志。
  • 使用 Grafana
  • Grafana 可以连接到 Loki,展示日志数据的可视化图表。
6. 使用外部日志管理服务

一些云服务提供商(如 AWS CloudWatch、Google Stackdriver)也提供了日志管理服务,可以通过集成这些服务来收集 Kubernetes 日志。

  • 集成外部日志服务
  • 需要在 Kubernetes 集群中配置相应的代理或代理容器,将日志数据发送到外部日志服务。
7. 配置日志轮换和压缩

为了管理日志文件的大小和存储,通常需要配置日志轮换和压缩。

  • 使用 logrotate
  • 在 Kubernetes 节点上配置 logrotate,定期轮换和压缩日志文件。

综上所述,你可以在 Kubernetes 环境中实现有效的日志收集和管理,确保日志数据的可用性和可分析性。

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
4月前
|
运维 监控 安全
2025 年 Splunk 的 5 大替代方案:企业日志管理工具新选择
Splunk 虽强大,但高昂成本和复杂性促使企业寻找替代方案。本文推荐 2025 年五大日志管理与安全分析工具:Log360、Elastic Security、Datadog、Graylog 和 Sumo Logic,涵盖开源、云原生与高性能方向,适配不同企业需求,助你提升安全与运维效率。
336 0
|
10月前
|
存储 运维 Kubernetes
正式开源,Doris Operator 支持高效 Kubernetes 容器化部署方案
飞轮科技推出了 Doris 的 Kubernetes Operator 开源项目(简称:Doris Operator),并捐赠给 Apache 基金会。该工具集成了原生 Kubernetes 资源的复杂管理能力,并融合了 Doris 组件间的分布式协同、用户集群形态的按需定制等经验,为用户提供了一个更简洁、高效、易用的容器化部署方案。
471 16
正式开源,Doris Operator 支持高效 Kubernetes 容器化部署方案
|
9月前
|
Kubernetes 持续交付 开发工具
阿里云协同万兴科技落地ACK One GitOps方案,全球多机房应用自动化发布,效率提升50%
阿里云协同万兴科技落地ACK One GitOps方案,全球多机房应用自动化发布,效率提升50%
356 2
|
9月前
|
Kubernetes 持续交付 开发工具
阿里云协同万兴科技落地ACK One GitOps方案,全球多机房应用自动化发布,效率提升50%
阿里云协同万兴科技落地ACK One GitOps方案,全球多机房应用自动化发布,效率提升50%
|
10月前
|
缓存 容灾 网络协议
ACK One多集群网关:实现高效容灾方案
ACK One多集群网关可以帮助您快速构建同城跨AZ多活容灾系统、混合云同城跨AZ多活容灾系统,以及异地容灾系统。
|
11月前
|
人工智能 Kubernetes 安全
赋能加速AI应用交付,F5 BIG-IP Next for Kubernetes方案解读
赋能加速AI应用交付,F5 BIG-IP Next for Kubernetes方案解读
242 13
|
消息中间件 存储 监控
微服务日志监控的挑战及应对方案
【10月更文挑战第23天】微服务化带来模块独立与快速扩展,但也使得日志监控复杂。日志作用包括业务记录、异常追踪和性能定位。
|
Kubernetes API Docker
跟着iLogtail学习容器运行时与K8s下日志采集方案
iLogtail 作为开源可观测数据采集器,对 Kubernetes 环境下日志采集有着非常好的支持,本文跟随 iLogtail 的脚步,了解容器运行时与 K8s 下日志数据采集原理。
|
Kubernetes 监控 测试技术
k8s学习--OpenKruise详细解释以及原地升级及全链路灰度发布方案
k8s学习--OpenKruise详细解释以及原地升级及全链路灰度发布方案
533 0

热门文章

最新文章

推荐镜像

更多
下一篇
oss云网关配置