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

一、概述

1、Elasticsearch产品介绍

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

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

2、Fluentd 工作原理

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

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

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

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

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

3、Kibana产品介绍

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

二、环境准备

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

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

2、所有主机关闭防火墙

3、所有主机安装docker

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

三、部署企业镜像仓库

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

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

2、启动成功后访问192.168.77.19

新建项目

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

3、导入EFK镜像 

进入镜像仓库
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

 四、部署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

 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分钟

 3、部署kibana

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

 访问页面92.168.77.14:30778

 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

 5、验证容器日志收集

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

 6、配置 Kibana

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第一章介绍docker的前世今生,了 解docker的实现原理,以Django项目为例,教大家如何编写最佳的Dockerfile实现构业务镜像的制作。通过本章的学习,大家会知道docker的概念及基本操作,并学会构建自己的业务镜像,并通过抓包的方式掌握Docker最常用的bridge网络模式的通信。第二章本章学习kubernetes的架构及工作流程,重点介绍如本章学习kubernetes的架构及工作流程,重点介绍如断的滚动更新,通过服务发现来实现群内部的服务间访问,并通过ingress- -nginx实现外部使用域名访问群内部的服务。同时介绍基于EFK如何搭建Kubernetes群的日志收系统。学完本章,我们的Django demo项目已经可以运行在k8s群中,同时我们可以使用域名进行服务的访问。第三章本章基于k8s群部署gitlab、sonarQube、 Jenkins等工具,并把上述工具成到Jenkins中,以Django项目为例,通过多分支流水线及Jenkinsfle实现项目代码提交到不同的仓库分支,实现自动代码扫描、单元测试、docker容器构建、k8s服务的自动部署。第四章由于公司内部项目众多,大量的项目使用同一套流程做CICD,那么势必会存在大量的重复代码,因此本章主要通过使用groovy实现Jenkins的sharedL ibrary的开发,以提取项目在CICD实践过程中的公共逻辑,提供一系列的流程的接口供公司内各项目调用,开发完成后,还是以Django的demo项目为例,进行Jenkinsfle的改造,最后仅需通过简单的Jenkinsfle的配置,即可优雅的完成CICD流程的整个过程,此方式已在大型企业内部落地应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值