Kubernetes中心化日志

Kubernetes中心化日志,是将日志放到统一的日志收集平台上。我不想引入那么中间件,因为仅供测试使用。这篇博文记录怎样使用filebeat+elasticsearch+kibana实现Kubernetes的日志收集。

在这之前你可能需要

Kubernetes环境下日志方式

Kuberentes官网提到了几种日志收集的模式,基本包括容器直连,Sidebar方式和DaemonSet方式。

我觉得DaemonSet方式是最好的,因为它受Kubernetes控制面板管理,在每个节点上部署一个日志收集的专用Pod(相比sidebar模式节约资源同时减少容器侵入)。

Kubernetes的Pod日志在哪里?

参考:where are kubernetes pods logfiles

日志有三个位置

  • /var/log/containers
  • /var/log/pods
  • /var/lib/docker/containers

实际上:这是一个软链接链:

/var/log/containers/<pod-name>_<namespace>_<container-name-container-id>.log
 -> 
/var/log/pods/<namespace>_<pod_name>_<pod_id>/<container_name>/0.log
->
/var/lib/docker/containers/<container-id>/<container-id>-json.log

怎样获取Pod ID:

kubectl get pod -n core gloo-76dffbd956-rmvdz -o jsonpath='{.metadata.uid}'

我的日志收集设计

在这里插入图片描述

在我的环境Pod是可以连接外网的(Kubernetes集群外的应用),所以直接发送到了外部的ElasticSearch,也可以在kubernetes集群内部署ELK。之后的结构就不画了,通过kibana可以查看每个Pod的日志。

部署filebeat DaemonSet

这个文件在:
https://gitee.com/oneslideicywater/kubernetes-playground/blob/master/elasticsearch/filebeat-kubernetes.yaml

修改几个地方:

- name: ELASTICSEARCH_HOST
  value: 192.168.3.254
- name: ELASTICSEARCH_PORT
  value: "9200"
# 配置基本认证才需要改下面的
- name: ELASTICSEARCH_USERNAME
  value: elastic
- name: ELASTICSEARCH_PASSWORD
  value: changeme

直接:kubectl apply -f xxx.yaml就ok!

查看日志

在kibana里查看日志,你可以看到一条日志下面很多元信息,查看Pod名是否包含进来。类似这种,忘了截图。这个图就是仅供参考:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值