EFK 插件是kubernetes项目的一个日志解决方案,它包括三个组件:Elasticsearch, Fluentd, Kibana。
Elasticsearch 是日志存储和日志搜索引擎
Fluentd 负责把k8s集群的日志发送给 Elasticsearch
Kibana 则是可视化界面查看和检索存储在 Elasticsearch 的数据
官方EFK地址:https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/fluentd-elasticsearch
由于官方部署方案存在elasticsearch存储模式为emptyDir,国内下载镜像不能成功,部署Fluentd,还需要添加标签
1 | kubectl label nodes node2 beta.kubernetes.io/fluentd-ds-ready=true |
问题也有可能出现Fluentd镜像不可用等问题,部署起来操作比较繁琐。因此本次搭建EFK采用Elasticsearch、Kibana单独部署,独立于容器,Fluentd采用官方的daemonset部署方式。
部署java
java 版本需要1.8以上
添加java环境变量
1 | export JAVA_HOME=/usr/local/jdk1.8.0_161/ |
部署Elasticsearch
添加仓库源
1 | vim /etc/yum.repos.d/elasticsearch.repo |
安装Elasticsearch并启动
1 | yum install elasticsearch |
检查es健康状态:
1 | [root@public03 efk]# curl http://172.16.0.17:9200/_cat/health |
部署Kibana
添加仓库源
1 | vim /etc/yum.repos.d/kibana.repo |
安装kibana并启动
1 | yum install kibana |
部署Fluentd
官方仓库地址:https://github.com/fluent/fluentd-kubernetes-daemonset
1 | # 下载部署文件 |
如设置环境FLUENT_UID为0,启动会提示权限不足。
1 | 2018-11-16 06:48:42 +0000 [error]: unexpected error error_class=Errno::EACCES error=#<Errno::EACCES: Permission denied @ rb_sysopen - /var/log/fluentd-containers.log.pos> |
部署成功后,打开kibana设置索引,搜索如图所示: