小白到运维工程师自学之路 第七十六集 (kubernetes之EFK构建日志分析平台)

一、概述

1、Elasticsearch产品介绍

Elasticsearch 是一个 Restful 风格的、开源的分布式搜索引擎,具备搜索和数据分析功能,它的底层是开源库 Apache Lucene。Elasticsearch 具有如下特点。

  1. 一个分布式的实时文档存储,每个字段可以被索引与搜索;
  2. 一个分布式实时分析搜索引擎;
  3. 能支撑上百个服务节点的扩展,并支持 PB 级别的结构化或者非结构化数据

2、Fluentd 工作原理

Fluentd 是一个日志的收集、处理、转发系统。通过丰富的插件,可以收集来自各种系统或应用的日志,转化为用户指定的格式后,转发到用户所指定的日志存储系统中。

小白到运维工程师自学之路 第七十六集 (kubernetes之EFK构建日志分析平台)_第1张图片

Fluentd 通过一组给定的数据源抓取日志数据,处理后(转换成结构化的数据格式)将它们转发给其他服务,比如 Elasticsearch、对象存储等等。Fluentd 支持超过 300 个日志存储和分析服务,所以对日志存储和分析服务的支持是非常灵活的。Fluentd 采用了插件式的架构,具有高可扩展性及高可用性,同时还实现了高可靠的信息转发。其主要运行步骤如下所示:

(1)首先 Fluentd 从多个日志源获取数据。

(2)结构化并且标记这些数据。

(3)最后根据匹配的标签将数据发送到多个目标服务。

3、Kibana产品介绍

Kibana 是一个开源的可视化分析平台,用于和 Elasticsearch 一起工作。可以通过Kibana 搜索、查看、交互存放在 Elasticsearch 索引中的数据。也可以轻松地执行高级数据分析,并且以各种图表、表格和地图的形式可视化数据。Kibana 简单的、基于浏览器的界面便于

二、环境准备

小白到运维工程师自学之路 第七十六集 (kubernetes之EFK构建日志分析平台)_第2张图片

 注意:所有主机配置推荐CPU2C+  Memory:4G+、运行 Elasticsearch 的节点要有足够的内存(不低于 4GB)。若 Elasticsearch 容器退出,请检查宿主机中的/var/log/message 日志,观察是否因为系统 OOM 导致进程被杀掉。

小白到运维工程师自学之路 第七十六集 (kubernetes之EFK构建日志分析平台)_第3张图片

 1、所有主机在/etc/hosts中进行ip地址映射

小白到运维工程师自学之路 第七十六集 (kubernetes之EFK构建日志分析平台)_第4张图片

2、所有主机关闭防火墙

3、所有主机安装docker

4、master、node1、node2安装kubernetes并进行网络设置

小白到运维工程师自学之路 第七十六集 (kubernetes之EFK构建日志分析平台)_第5张图片

三、部署企业镜像仓库

1、部署Harbor仓库

下载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

小白到运维工程师自学之路 第七十六集 (kubernetes之EFK构建日志分析平台)_第6张图片

启动harbor
cd /usr/loca/harbor
sh install.sh
查看状态
docker-commpose ps

小白到运维工程师自学之路 第七十六集 (kubernetes之EFK构建日志分析平台)_第7张图片

2、启动成功后访问192.168.77.19

小白到运维工程师自学之路 第七十六集 (kubernetes之EFK构建日志分析平台)_第8张图片

新建项目

小白到运维工程师自学之路 第七十六集 (kubernetes之EFK构建日志分析平台)_第9张图片

加入仓库地址
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

小白到运维工程师自学之路 第七十六集 (kubernetes之EFK构建日志分析平台)_第10张图片

3、导入EFK镜像 

进入镜像仓库
docker login -u admin -p Harbor12345 http://192.168.77.19

小白到运维工程师自学之路 第七十六集 (kubernetes之EFK构建日志分析平台)_第11张图片

将镜像导入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

小白到运维工程师自学之路 第七十六集 (kubernetes之EFK构建日志分析平台)_第12张图片

上传镜像
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

小白到运维工程师自学之路 第七十六集 (kubernetes之EFK构建日志分析平台)_第13张图片

 四、部署EFK业务环境

1、准备组件Yaml文件(master主机)

创建文件夹用来存放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

小白到运维工程师自学之路 第七十六集 (kubernetes之EFK构建日志分析平台)_第14张图片

 2、部署Elasticsearch

创建命名空间
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分钟

小白到运维工程师自学之路 第七十六集 (kubernetes之EFK构建日志分析平台)_第15张图片

 3、部署kibana

kubectl create -f kibana.yaml
kubectl -n logging get pods
kubectl -n logging get svc |grep kibana

小白到运维工程师自学之路 第七十六集 (kubernetes之EFK构建日志分析平台)_第16张图片

 访问页面92.168.77.14:30778

小白到运维工程师自学之路 第七十六集 (kubernetes之EFK构建日志分析平台)_第17张图片

 4、部署Fluentd

给集群节点打标签
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

小白到运维工程师自学之路 第七十六集 (kubernetes之EFK构建日志分析平台)_第18张图片

 5、验证容器日志收集

创建测试容器
kubectl create -f test-pod.yaml
kubectl get pods

 6、配置 Kibana

以上就是 EFK构建日志分析平台

如有错误欢迎各位大佬批评指正,我们共同进步

你可能感兴趣的:(kubernetes,容器,云原生)