Elasticsearch 是一个 Restful 风格的、开源的分布式搜索引擎,具备搜索和数据分析功能,它的底层是开源库 Apache Lucene。Elasticsearch 具有如下特点。
Fluentd 是一个日志的收集、处理、转发系统。通过丰富的插件,可以收集来自各种系统或应用的日志,转化为用户指定的格式后,转发到用户所指定的日志存储系统中。
Fluentd 通过一组给定的数据源抓取日志数据,处理后(转换成结构化的数据格式)将它们转发给其他服务,比如 Elasticsearch、对象存储等等。Fluentd 支持超过 300 个日志存储和分析服务,所以对日志存储和分析服务的支持是非常灵活的。Fluentd 采用了插件式的架构,具有高可扩展性及高可用性,同时还实现了高可靠的信息转发。其主要运行步骤如下所示:
(1)首先 Fluentd 从多个日志源获取数据。
(2)结构化并且标记这些数据。
(3)最后根据匹配的标签将数据发送到多个目标服务。
Kibana 是一个开源的可视化分析平台,用于和 Elasticsearch 一起工作。可以通过Kibana 搜索、查看、交互存放在 Elasticsearch 索引中的数据。也可以轻松地执行高级数据分析,并且以各种图表、表格和地图的形式可视化数据。Kibana 简单的、基于浏览器的界面便于
注意:所有主机配置推荐CPU:2C+ Memory:4G+、运行 Elasticsearch 的节点要有足够的内存(不低于 4GB)。若 Elasticsearch 容器退出,请检查宿主机中的/var/log/message 日志,观察是否因为系统 OOM 导致进程被杀掉。
下载docker-compose
mv docker-compose /usr/local/bin/
chmod +x /usr/local/bin/docker-compose
解压harbor
tar xf harbor-offline-installer-v1.10.4.tgz -C /usr/local/
配置harbor
vim /usr/local/harbor/harbor.yml
5 hostname: 192.168.77.19
13 #https: //https 相关配置都注释掉,包括 https、port、certificate 和 private_key
14 # https port for harbor, default is 443
15 #port: 443
16 # The path of cert and key files for nginx
17 #certificate: /your/certificate/path
18 #private_key: /your/private/key/path
启动harbor
cd /usr/loca/harbor
sh install.sh
查看状态
docker-commpose ps
新建项目
加入仓库地址
vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --insecure-registry 192.168.77.19
分别上传给另外三个主机
scp /usr/lib/systemd/system/docker.service 192.168.77.14:/usr/lib/systemd/system/
scp /usr/lib/systemd/system/docker.service 192.168.77.17:/usr/lib/systemd/system/
scp /usr/lib/systemd/system/docker.service 192.168.77.18:/usr/lib/systemd/system/
所有主机重启docker
systemctl daemon-reload
systemctl restart docker
进入镜像仓库
docker login -u admin -p Harbor12345 http://192.168.77.19
将镜像导入docker
docker load < elasticsearch-7.4.2.tar
docker load < fluentd-es.tar
docker load < kibana-7.4.2.tar
docker load < alpine-3.6.tar
修改标签
docker tag b1179d 192.168.77.19/efk/elasticsearch:7.4.2
docker tag 636f3d 192.168.77.19/efk/fluentd-es-root:v2.5.2
docker tag 230d3d 192.168.77.19/efk/kibana:7.4.2
docker tag 43773d 192.168.77.19/efk/alpine:3.6
上传镜像
docker push 192.168.77.19/efk/elasticsearch:7.4.2
docker push 192.168.77.19/efk/fluentd-es-root:v2.5.2
docker push 192.168.77.19/efk/kibana:7.4.2
docker push 192.168.77.19/efk/alpine:3.6
创建文件夹用来存放yaml文件的
mkdir /opt/efk
需要下载的yaml文件(需要将文件内的yaml文件中的IP地址修改为私有的镜像仓库)
elasticsearch.yaml
kibana.yaml
fluentd.yaml
test-pod.yaml
namespace.yaml
fluentd-es-config-main.yaml
fluentd-configmap.yaml
查看镜像地址
grep "image:" elasticsearch.yaml
grep -A1 "nodeSelector" elasticsearch.yaml
grep "image:" kibana.yaml
grep -A1 "nodeSelector" kibana.yaml
grep "image:" fluentd.yaml
grep "image:" test-pod.yaml
创建命名空间
kubectl create -f namespace.yaml
kubectl get namespaces | grep logging
创建 es 数据存储目录
[root@k8s-node01 ~]# mkdir /esdata
部署 es 容器
kubectl create -f elasticsearch.yaml
kubectl -n logging get pods -o wide
kubectl -n logging get svc
通过 curl 命令访问服务,验证 es 是否部署成功
curl 10.111.75.184:9200
这个启动需要等待个3-5分钟
kubectl create -f kibana.yaml
kubectl -n logging get pods
kubectl -n logging get svc |grep kibana
访问页面92.168.77.14:30778
给集群节点打标签
kubectl label node k8s-node1 fluentd=true
kubectl label node k8s-node2 fluentd=true
kubectl create -f fluentd-es-config-main.yaml
kubectl create -f fluentd-configmap.yaml
kubectl create -f fluentd.yaml
查看 Pod 是否已经在 k8s-node01 和 k8s-node02 节点启动成功。
kubectl -n logging get pods
创建测试容器
kubectl create -f test-pod.yaml
kubectl get pods