Filebeat的镜像可以在K8s上使用用来获取和传送镜像内的日志信息。
K8s部署清单
通过DaemonSet来部署Filebeat,我们可以在每一个cluster机器上运行一个实例。
Docker的日志文件(/var/lib/docker/containers),我们可以通过通过挂在的方式到filebeat的镜像中。Filebeat会运行启动一个input给这些日志文件,然后当日志出现的时候,进行收割。
我们在kube-system这个作用域下进行部署,我们可以通过改变YAML文件来更新。
获取清单的办法:
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配置文件:
- name: ELASTICSEARCH_HOST
value: elasticsearch
- name: ELASTICSEARCH_PORT
value: "9200"
- name: ELASTICSEARCH_USERNAME
value: elastic
- name: ELASTICSEARCH_PASSWORD
value: changeme
部署
在K8s上面去运行Filebeat:
kubectl create -f filebeat-kubernetes.yaml
我们可以想要查看filebeat的运行状况:
$ kubectl --namespace=kube-system get ds/filebeat
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE-SELECTOR AGE
filebeat 32 32 0 32 0 <none>
在 K8S metadata 处理器中都有介绍。 Add Kubernetes metadata
参考
语雀:在k8s上运行filebeat
https://www.yuque.com/stonejin/cbt4vt/vnhe5k