Kubernetes实录-第一篇-集群部署配置(24) Kubernetes日志方案-使用EFK实现日志管理(1)-介绍与架构概要

Kubernetes实录系列记录文档完整目录参考: Kubernetes实录-目录

相关记录链接地址 :

一、Kubernetes集群日志方案介绍

1.1 在Kubernetes日志管理方案中,日志大致可以分为三个级别

  • 第一级别是Pod/container中程序产生的应用日志
    Pod/container级别的日志,默认指定程序输出到标准输出,docker日志驱动器默认使用json格式将日志存储在/var/lib/docker/containers目录下,可以通过kubectl logs获取到日志。
    由于日志存储在Node节点的/var/lib/docker/containers,可以在第二级别Node节点统计收集容器日志

  • 第二级别是Node级别的系统日志
    在Node节点上,非集群管理的容器输出到stdout和stderr的信息由容器引擎处理和重定向,默认情况下docker使用的日志驱动是json-file并将日志重定向到/var/lib/docker/containers目录下。从Node驱逐的Pod,其中中所有容器连同日志一起被驱逐而无法再查阅获取。

    在Node节点上,除了容器重定向的日志,还有非容器化组件日志输出到相关日志目录或者journald

    Node节点日志存储一般是本地存储,容量是一定的。日志时实时增加的一般需要进行日志流转(logrotate),Kubernetes不解决这个问题,需要自行配置。

    使用kubeadm部署的Kubernetes集群kube-apiserver,kube-proxy,kuber-scheduler,kube-controller-manager在容器中部署,日志记录方式与普通Pod/container没有区别。docker运行时和kubelet是非容器化服务,在centos7上日志输出到journald

  • 第三级别是集群级别的日志收集方案
    集群级别日志应该具有独立于Node、Pod或者容器的单独存储和生命周期。将Kubernetes集群日志(包括Node节点日志,服务组件日志,应用程序日志)统一收集独立存储,进行查询和展示。

1.2 Kubernetes集群级别收集日志方式

  • 在Kubernetes节点上运行一个日志收集的Agent来收集日志
  • Pod 中包含一个 sidecar 挎斗容器来收集应用日志,直接输出到存储后端或者重定向到stdout/stderr
  • 应用程序中将日志信息推送到日志采集存储后端
    在这里插入图片描述

1.3 Kubernetes日志管理方案

方案的关键在于将所有需要收集的日志全部收集传输到日志存储后端,综合Kubernetes集群日志类型以及收集方式我们采用Kubernetes官方推荐的EFK日志系统实现集群日志管理。(备注:EFK=ElasticSearch,Fluentd,Kibana)

  1. 部署配置ElasticSearch用于存储和检索集群日志信息
  2. 每个节点部署配置Fluentd作为agent收集集群日志,可以收集节点非容器日志,以及基于stdout/stderr的容器化日志;
  3. 部署配置Kibana用于日志可视化以及查询检索

!
另外,应用程序本身的日志有2中方式进行收集:

  • 一种是将日志打印到标准输出与标准错误(如果日志直接存储在了日志文件中,可以通过sidecar挎斗容器重定向到stdout/stderr),这样应用程序的日志收集方式就涵盖在上面介绍的EFK方案里直接收集掉了;
  • 还有一种是应用程序通过SDK编程直接将日志发生到日志存储后端(如,ElasticSearch)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值