如何使用Elasticseach、Kibana和Fluent Bit收集k8s集群中的日志

      ☕ 2 分钟

概述

本文将阐述在k8s集群中运行Elasticsearch和Kibana的方法,以及在k8s集群中使用Fluent Bit收集并转发整个集群的日志到Elasticsearch的方法。只要集群中的工作负载将日志写到标准输出或者标准错误中,你就可以在Kibana中对它们进行检索和分析。

先决条件

  • Kubernetes 1.11或更高版本(不能使用minikube)
  • 一个预先定义的,名为hdd-ssd的storage class(你可以在eck.yaml中修改需求名称)

部署步骤

克隆这个仓库以获取所需yaml文件。

Elasticsearch和Kibana

Elastic Cloud on Kubernetes(ECK)现在进入1.0版本,生产可用。使用它可以方便快捷地在k8s集群中部署各种拓扑结构的Elasticsearch及Kibana。

  • 部署ECK:
1
kubectl apply -f https://download.elastic.co/downloads/eck/1.0.1/all-in-one.yaml
  • 创建Namespace logging
1
kubectl create -f ./namespace.yml
  • 部署Elasticsearch和Kibana:
1
2
# 作为示例,这里仅部署单节点的Elasticsearch,你可以修改eck.yml以部署更大规模
kubectl create -f ./eck.yml

Fluent Bit

Fluent Bit作为DaemonSet运行在集群中的每个node,收集各工作负载的日志。Fluent Bit会在发送日志给Elasticsearch时附上pod名称、label等元数据,你可以使用它们作为搜索条件定位日志。

结构化的日志(JSON)可以在ElasticSearch中做字段级别的搜索和筛选。

1
2
3
4
5
kubectl create -f fluent-bit-service-account.yaml
kubectl create -f fluent-bit-role.yaml
kubectl create -f fluent-bit-role-binding.yaml
kubectl create -f fluent-bit-configmap.yaml
kubectl create -f fluent-bit-ds.yaml

以上,大功告成。

参考文档


nanmu42
作者
nanmu42
用心构建美好事物。

目录