从 Docker 到 Kubernetes 日志管理机制详解

本文详细介绍了Docker和Kubernetes的日志管理机制,包括Docker的日志种类和驱动配置,Kubernetes的Pod及集群组件日志,以及集群日志收集的常见方案,如节点级日志代理和sidecar容器方案。
摘要由CSDN通过智能技术生成

在容器化时代,容器应用的日志管理和传统应用存在很大的区别,为了顺应容器化应用,Docker 和 Kubernetes 提供了一套完美的日志解决方案。本文从 Docker 到 Kubernetes 逐步介绍在容器化时代日志的管理机制,以及在 Kubernetes 平台下有哪些最佳的日志收集方案。涉及到的话题有 Docker 日志管理机制、Kubernetes 日志管理机制、Kubernetes 集群日志收集方案。本文结构如下:

  • Docker 日志管理机制

    • Docker 的日志种类
    • 基于日志驱动(loging driver)的日志管理机制
    • Docker 日志驱动(loging driver)配置
    • Docker 默认的日志驱动 json-file
  • Kubernetes 日志管理机制

    • 应用 Pod 日志
    • Kuberntes 集群组件日志
  • Kubernetes 集群日志收集方案

    • 节点级日志代理方案
    • sidecar 容器方案
    • 应用程序直接将日志传输到日志平台

Docker 日志管理机制

Docker 的日志种类

在 Docker 中日志分为两大类:

  • Docker 引擎日志;
  • 容器日志;
Docker 引擎日志

Docker 引擎日志就是 docker 服务的日志,即 dockerd 守护进程的日志,在支持 Systemd 的系统中可以通过 journal -u docker 查看日志。
在这里插入图片描述

容器日志

容器日志指的是每个容器打到 stdout 和 stderr 的日志,而不是容器内部的日志文件。docker 管理所有容器打到 stdout 和 stderr 的日志,其他来源的日志不归 docker 管理。我们通过 docker logs 命令查看容器日志都是读取容器打到 stdout 和 stderr 的日志。

基于日志驱动(loging driver)的日志管理机制

Docker 提供了一套通用、灵活的日志管理机制,Docker 将所有容器打到 stdout 和 stderr 的日志都统一通过日志驱动重定向到某个地方。

Docker 支持的日志驱动有很多,比如 local、json-file、syslog、journald 等等,类似插件一样,不同的日志驱动可以将日志重定向到不同的地方,这体现了 Docker 日志管理的灵活性,以热插拔的方式实现日志不同目的地的输出。

Dokcer 默认的日志日志驱动是 json-file,该驱动将将来自容器的 stdout 和 stderr 日志都统一以 json 的形式存储到本地磁盘。日志存储路径格式为:/var/lib/docker/containers/<容器 id>/<容器 id>-json.log。所以可以看出在 json-file 日志驱动下,Docker 将所有容器日志都统一重定向到了 /var/lib/docker/containers/ 目录下,这为日志收集提供了很大的便利。

注意:只有日志驱动为:local、json-file 或者 journald 时,docker logs 命令才能查看到容器打到 stdout/stderr 的日志。

在这里插入图片描述
下面为官方支持的日志驱动列表:

驱动 描述
none 运行的容器没有日志,docker logs 也不返回任何输出。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值