如何在Kubernetes中搭建Elasticsearch集群

这篇文章给大家分享的是Kubernetes搭建Elasticsearch集群的教程。小编觉得挺实用的,因此分享给大家学习。如下资料是关于搭建Elasticsearch的内容。

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

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

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

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

1。创建Elasticsearch集群

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

新建一个kube-efk。yaml

如何在Kubernetes中搭建Elasticsearch集群

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,文件内容如下:

如何在Kubernetes中搭建Elasticsearch集群

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

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

kubectl,应用,- f elasticsearch-svc。yaml

如何在Kubernetes中搭建Elasticsearch集群

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

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

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

如何在Kubernetes中搭建Elasticsearch集群

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

elasticsearch-pvc。yaml

如何在Kubernetes中搭建Elasticsearch集群

最后我们创建这个statefulset

elasticsearch-statefulset。yaml

如何在Kubernetes中搭建Elasticsearch集群”> <br/> <img src=

然后我们使用kubectl创建

- f elasticsearch-storageclass kubectl适用。yaml

- f elasticsearch-pvc kubectl适用。yaml

- f elasticsearch-statefulset kubectl适用。yaml

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

如何在Kubernetes中搭建Elasticsearch集群

如何在Kubernetes中搭建Elasticsearch集群