k8搭建efk

  
 <代码> * * efk的搭建* *  
  

Elasticsearch是一个实时的,分布式的可扩展的搜索引擎,允许进行全文,结构化搜索,它通常用于索引和搜索大量日志数据,也可用于搜索许多不同类型的文档。

  

Elasticsearch通常与Kibana一起部署,Kibana是Elasticsearch的一个功能强大的数据可视化仪表板,Kibana允许你通过web界面来浏览Elasticsearch日志数据。

  

Fluentd是一个流行的开源数据收集器,我们将在Kubernetes集群节点上安装Fluentd,通过获取容器日志文件,过滤和转换日志数据,然后将数据传递到Elasticsearch集群,在该集群中对其进行索引和存储。

  

我们先来配置启动一个可扩展的Elasticsearch集群,然后在Kubernetes集群中创建一个Kibana应用,最后通过DaemonSet来运行Fluentd,以便它在每个Kubernetes工作节点上都可以运行一个豆荚。

  

1。创建Elasticsearch集群

  

在创建Elasticsearch集群之前,我们先创建一个命名空间。

  

新建一个kube-efk.yaml

  

 k8搭建efk

  

kubectl应用- f kube-efk.yaml

  

kubectl得到ns查看有没有这个efk的命名空间

  

这里我们使用3个Elasticsearch豆荚来避免高可用下多节点集群中出现的“脑裂”问题,当一个或多个节点无法与其他节点通信时会产生“脑裂”,可能会出现几个主节点。

  

一个关键点是您应该设置参数discover.zen。minimum_master_nodes=N/2 + 1,其中N是Elasticsearch集群中符合主节点的节点数,比如我们这里3个节点,意味着N应该设置为2。这样,如果一个节点暂时与集群断开连接,则另外两个节点可以选择一个新的主节点,并且集群可以在最后一个节点尝试重新加入时继续运行,在扩展Elasticsearch集群时,一定要记住这个参数。

  

首先创建一个名为elasticsearch的无头服务,新建文件elasticsearch-svc.yaml,文件内容如下:

  

 k8搭建efk

  

定义了一个名为elasticsearch的服务,指定标签程序=elasticsearch,当我们将elasticsearch StatefulSet与此服务关联时,服务将返回带有标签程序=elasticsearch的elasticsearch豆荚的DNS一记录,然后设置clusterIP=None,将该服务设置成无头服务。最后,我们分别定义端口9200年,9300年,分别用于与REST API交互,以及用于节点间通信。

  

然后我们创建这个无头服务

  

kubectl应用- f elasticsearch-svc.yaml

  

 k8搭建efk

  

现在我们已经为吊舱设置了无头服务和一个稳定的域名.elasticsearch.logging.svc.cluster。地方、接下来我们通过StatefulSet来创建具体的Elasticsearch的豆荚应用。

  

Kubernetes StatefulSet允许我们为吊舱分配一个稳定的标识和持久化存储,Elasticsearch需要稳定的存储来保证Pod在重新调度或者重启后的数据依然不变,所以需要使用StatefulSet来管理仓。

  

我们使用了一个名为es-data-db的StorageClass对象,所以我们需要提前创建该对象,我们这里使用的NFS作为存储后端,所以需要安装一个对应的粮食供应者驱动,
我们先创建elasticsearch-storageclass.yaml

  

 k8搭建efk

  

然后我们创建pvc来对应这个storageclass

  

elasticsearch-pvc.yaml   

 k8搭建efk

  

最后我们创建这个statefulset

  

elasticsearch-statefulset.yaml   

 k8搭建efk”> <br/> <img src=

  

然后我们使用kubectl创建

  

kubectl应用- f elasticsearch-storageclass.yaml

  

kubectl应用- f elasticsearch-pvc.yaml

  

kubectl应用- f elasticsearch-statefulset.yaml

  

然后我们查看pod的运行情况

  

 k8搭建efk

  

豆荚部署完成后,我们可以通过请求一个REST API来检查Elasticsearch集群是否正常运行。使用下面的命令将本地端口9200转发到Elasticsearch节点(如es-cluster-0)对应的端口:

k8搭建efk