Kubernetes部署Elasticsearch指南介绍
Elasticsearch 是一个部署在集群中的实时可扩展搜索引擎。结合Kubernetes编排,Elasticsearch 易于配置、管理和扩展。
Kubernetes如何部署Elasticsearch?默认情况下部署一个 Elasticsearch 集群会创建三个 pod。每个 pod 都提供所有三个功能:master、data 和 client。但是,最佳实践是为每个角色手动部署多个专用的 Elasticsearch pod。
本文介绍了如何使用预构建的 Helm 图表在 Kubernetes 上的七个 Pod 上手动部署 Elasticsearch。
先决条件
- 一个 Kubernetes 集群(我们使用了Minikube)。
- 该头盔包管理器。
- 该kubectl命令行工具。
- 访问命令行或终端。
如何在 Kubernetes 上手动部署 Elasticsearch
最佳实践是在 Elasticsearch 集群中使用七个 Pod:
- 用于管理集群的三个主 Pod。
- 两个数据 Pod,用于存储数据和处理查询。
- 用于引导流量的两个客户端(或协调)pod。
使用七个专用 pod 在 Kubernetes 上手动部署 Elasticsearch 是一个简单的过程,需要按角色设置Helm 值。
注意:根据需要在需要时快速启动尽可能多的Bare Metal Cloud 服务器实例。使用 BMC,创建易于配置、扩展和管理的 Kubernetes 集群。有多种计费方式可供选择以适应任何预算。
第 1 步:设置 Kubernetes
1. 如何在Kubernetes上部署Elasticsearch?集群需要大量资源。将 Minikube CPU 设置为至少 4 个,并将内存设置为 8192MB:
minikube config set cpus 4
minikube config set memory 8192
2、打开终端,使用以下参数启动minikube:
minikube start

实例从配置的内存和 CPU 开始。
3. Kubernetes部署Elasticsearch指南:Minikube 需要一个values.yaml文件来运行 Elasticsearch。下载文件:
curl -O https://raw.githubusercontent.com/elastic/helm-charts/master/elasticsearch/examples/minikube/values.yaml

该文件包含所有三个 pod 配置的下一步中使用的信息。
步骤 2:按 Pod 角色设置值
1.Kubernetes如何部署Elasticsearch?使用命令将values.yaml文件的内容复制到三个不同的 pod 配置文件中:cp
cp values.yaml master.yaml
cp values.yaml data.yaml
cp values.yaml client.yaml
2.使用以下命令检查四个YAML 文件ls
:
ls -l *.yaml
3 、用文本编辑器打开master.yaml文件,在开头添加如下配置:
# master.yaml
---
clusterName: "elasticsearch"
nodeGroup: "master"
roles:
master: "true"
ingest: "false"
data: "false"
replicas: 3

配置节点组设置为主中elasticsearch簇,并将主机角色“真”。此外,master.yaml创建了三个主节点副本。
如何在Kubernetes上部署Elasticsearch?完整的master.yaml如下所示:
# master.yaml
---
clusterName: "elasticsearch"
nodeGroup: "master"
roles:
master: "true"
ingest: "false"
data: "false"
replicas: 3
# Permit co-located instances for solitary minikube virtual machines.
antiAffinity: "soft
# Shrink default JVM heap.
esJavaOpts: "-Xmx128m -Xms128m"
# Allocate smaller chunks of memory per pod.
resources:
requests:
cpu: "100m"
memory: "512M"
limits:
cpu: "1000m"
memory: "512M"
# Request smaller persistent volumes.
volumeClaimTemplate:
accessModes: [ "ReadWriteOnce" ]
storageClassName: "standard"
resources:
requests:
storage: 100M
4. 保存文件并关闭。
5、打开data.yaml文件,在顶部添加如下信息,配置数据pods:
# data.yaml
---
clusterName: "elasticsearch"
nodeGroup: "data"
roles:
master: "false"
ingest: "true"
data: "true"
replicas: 2

该设置创建了两个数据 Pod 副本。将数据和摄取角色都设置为"true"。保存文件并关闭。
6、打开client.yaml文件,在顶部添加如下配置信息:
# client.yaml
---
clusterName: "elasticsearch"
nodeGroup: "client"
roles:
master: "false"
ingest: "false"
data: "false"
replicas: 2
service:
type: "LoadBalancer"

7. 保存文件并关闭。
由于客户端处理服务请求,因此客户端将所有角色设置为“false” 。服务类型被指定为“LoadBalancer”以在所有节点之间均匀地平衡服务请求。
第 3 步:按角色部署 Elasticsearch Pod
1.Kubernetes如何部署Elasticsearch?添加 Helm 存储库:
helm repo add elastic https://helm.elastic.co

2. 使用该helm install
命令 3 次,对上一步中创建的每个自定义 YAML 文件使用一次:
helm install elasticsearch-multi-master elastic/elasticsearch -f ./master.yaml
helm install elasticsearch-multi-data elastic/elasticsearch -f ./data.yaml
helm install elasticsearch-multi-client elastic/elasticsearch -f ./client.yaml

输出会打印部署详细信息。
3. 等待集群成员部署。使用以下命令检查进度并确认完成:
kubectl get pods

一旦所有七个 Pod 的部署完成,输出就会显示值为1/1的READY列。
步骤 4:测试连接
1. 如何在Kubernetes上部署Elasticsearch?要在本地访问 Elasticsearch,请使用以下命令转发端口9200kubectl
:
kubectl port-forward service/elasticsearch-master

该命令转发连接并使其保持打开状态。保持终端窗口运行并继续下一步。
2. 在另一个终端选项卡中,使用以下命令测试连接:
curl localhost:9200
输出打印部署信息。

或者,从浏览器访问localhost:9200。

输出以JSON格式显示集群详细信息,表示部署成功。
如何使用预构建的 Helm Chart 部署带有七个 Pod 的 Elasticsearch
Kubernetes部署Elasticsearch指南:Bitnami 存储库中提供了用于在七个专用 pod 上部署 Elasticsearch 的预构建 Helm 图表。以这种方式安装图表可避免手动创建配置文件。
第 1 步:设置 Kubernetes
1. 至少分配 4 个 CPU 和 8192MB 内存:
minikube config set cpus 4
minikube config set memory 8192
2. 启动 Minikube:
minikube start
Minikube 实例以指定的配置启动。
第 2 步:添加 Bitnami 存储库并部署 Elasticsearch Chart
1. Kubernetes如何部署Elasticsearch?添加 Bitnami Helm 存储库:
helm repo add bitnami https://charts.bitnami.com/bitnami

2. 通过运行安装图表:
helm install elasticsearch --set master.replicas=3,coordinating.service.type=LoadBalancer bitnami/elasticsearch

该命令具有以下选项:
- Elasticsearch 安装在发行版名称下
elasticsearch
。 master.replicas=3
向集群添加三个 Master 副本。我们建议坚持使用三个主节点。coordinating.service.type=LoadBalancer
设置客户端节点以在所有节点之间均匀地平衡服务请求。
3. 监控部署:
kubectl get pods

如何在Kubernetes上部署Elasticsearch?当 Elasticsearch 完全部署时,七个 Pod在READY列中显示1/1。
步骤 3:测试连接
1. 将连接转发到端口9200:
kubectl port-forward svc/elasticsearch-master 9200
保持连接打开并继续下一步。
2. 在另一个终端选项卡中,检查连接:
curl localhost:9200

或者,从浏览器访问相同的地址以查看 JSON 格式的部署信息。
Kubernetes部署Elasticsearch指南结论
Kubernetes如何部署Elasticsearch?完成本教程后,你应该将 Elasticsearch 部署在七个专用 Pod 上。Pod 的角色可以手动设置,也可以使用预构建的 Helm 图表自动设置。