如何在Kubernetes上部署Elasticsearch?详细步骤指南

2021年11月20日02:08:36 发表评论 1,059 次浏览

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
如何在Kubernetes上部署Elasticsearch?详细步骤指南

实例从配置的内存和 CPU 开始。

3. Kubernetes部署Elasticsearch指南:Minikube 需要一个values.yaml文件来运行 Elasticsearch。下载文件:

curl -O https://raw.githubusercontent.com/elastic/helm-charts/master/elasticsearch/examples/minikube/values.yaml
如何在Kubernetes上部署Elasticsearch?详细步骤指南

该文件包含所有三个 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
如何在Kubernetes上部署Elasticsearch?详细步骤指南

配置节点组设置为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
如何在Kubernetes上部署Elasticsearch?详细步骤指南

该设置创建了两个数据 Pod 副本。将数据和摄取角色都设置为"true"。保存文件并关闭。

6、打开client.yaml文件,在顶部添加如下配置信息:

# client.yaml
---
clusterName: "elasticsearch"
nodeGroup: "client"
roles:
  master: "false"
  ingest: "false"
  data: "false"
replicas: 2
service:
  type: "LoadBalancer"
如何在Kubernetes上部署Elasticsearch?详细步骤指南

7. 保存文件并关闭。

由于客户端处理服务请求,因此客户端将所有角色设置为“false” 服务类型被指定为“LoadBalancer”以在所有节点之间均匀地平衡服务请求。

第 3 步:按角色部署 Elasticsearch Pod

1.Kubernetes如何部署Elasticsearch?添加 Helm 存储库:

helm repo add elastic https://helm.elastic.co
如何在Kubernetes上部署Elasticsearch?详细步骤指南

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
如何在Kubernetes上部署Elasticsearch?详细步骤指南

输出会打印部署详细信息。

3. 等待集群成员部署。使用以下命令检查进度并确认完成:

kubectl get pods
如何在Kubernetes上部署Elasticsearch?详细步骤指南

一旦所有七个 Pod 的部署完成,输出就会显示值为1/1READY列。

步骤 4:测试连接

1. 如何在Kubernetes上部署Elasticsearch?要在本地访问 Elasticsearch,请使用以下命令转发端口9200kubectl

kubectl port-forward service/elasticsearch-master
如何在Kubernetes上部署Elasticsearch?详细步骤指南

该命令转发连接并使其保持打开状态。保持终端窗口运行并继续下一步。

2. 在另一个终端选项卡中,使用以下命令测试连接:

curl localhost:9200

输出打印部署信息。

如何在Kubernetes上部署Elasticsearch?详细步骤指南

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

如何在Kubernetes上部署Elasticsearch?详细步骤指南

输出以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
如何在Kubernetes上部署Elasticsearch?详细步骤指南

2. 通过运行安装图表:

helm install elasticsearch --set master.replicas=3,coordinating.service.type=LoadBalancer bitnami/elasticsearch
如何在Kubernetes上部署Elasticsearch?详细步骤指南

该命令具有以下选项:

  • Elasticsearch 安装在发行版名称下elasticsearch
  • master.replicas=3向集群添加三个 Master 副本。我们建议坚持使用三个主节点。
  • coordinating.service.type=LoadBalancer 设置客户端节点以在所有节点之间均匀地平衡服务请求。

3. 监控部署:

kubectl get pods
如何在Kubernetes上部署Elasticsearch?详细步骤指南

如何在Kubernetes上部署Elasticsearch?当 Elasticsearch 完全部署时,七个 Pod在READY列中显示1/1

步骤 3:测试连接

1. 将连接转发到端口9200

kubectl port-forward svc/elasticsearch-master 9200

保持连接打开并继续下一步。

2. 在另一个终端选项卡中,检查连接:

curl localhost:9200
如何在Kubernetes上部署Elasticsearch?详细步骤指南

或者,从浏览器访问相同的地址以查看 JSON 格式的部署信息。

Kubernetes部署Elasticsearch指南结论

Kubernetes如何部署Elasticsearch?完成本教程后,你应该将 Elasticsearch 部署在七个专用 Pod 上。Pod 的角色可以手动设置,也可以使用预构建的 Helm 图表自动设置。

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: