Filebeat的镜像可以在K8s上使用用来获取和传送镜像内的日志信息。

K8s部署清单

通过DaemonSet来部署Filebeat,我们可以在每一个cluster机器上运行一个实例。

Docker的日志文件(/var/lib/docker/containers),我们可以通过通过挂在的方式到filebeat的镜像中。Filebeat会运行启动一个input给这些日志文件,然后当日志出现的时候,进行收割。

我们在kube-system这个作用域下进行部署,我们可以通过改变YAML文件来更新。

获取清单的办法:

  1. curl -L -O https://raw.githubusercontent.com/elastic/beats/6.4/deploy/kubernetes/filebeat-kubernetes.yaml

如果我们使用的是K8S1.7或者更早的版本:Filebeat使用的是本地硬盘来获取存储外部数据,在目录/var/lib/filebeat-data。在1.8中,清单会使用自动创建的目录。我们可以通过从配置文件中移除DirecotryOrCreate变量来自己创建文件。

配置

这里有一些参数让我们来配置日志的目的地,默认情况下我们使用了Elasticsearch。但是我们可能想要改变这个收割者的目的地,我们可以通过编辑YAML配置文件:

  1. - name: ELASTICSEARCH_HOST
  2. value: elasticsearch
  3. - name: ELASTICSEARCH_PORT
  4. value: "9200"
  5. - name: ELASTICSEARCH_USERNAME
  6. value: elastic
  7. - name: ELASTICSEARCH_PASSWORD
  8. value: changeme

部署

在K8s上面去运行Filebeat:

  1. kubectl create -f filebeat-kubernetes.yaml

我们可以想要查看filebeat的运行状况:

  1. $ kubectl --namespace=kube-system get ds/filebeat
  2. NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE-SELECTOR AGE
  3. filebeat 32 32 0 32 0 <none>

在 K8S metadata 处理器中都有介绍。 Add Kubernetes metadata

参考

语雀:在k8s上运行filebeat
https://www.yuque.com/stonejin/cbt4vt/vnhe5k