首页 > 解决方案 > 使用 kubernetes 的 Elasticsearch 多节点集群?

问题描述

我正在尝试创建一个弹性搜索的多节点集群。那么我应该使用哪个服务来使用 kubernetes 创建集群。我能够在一个节点内使用无头服务进行 es 之间的内部通信。但是在多节点的情况下不会发生同样的情况。另外,我必须在工作节点的 elasticsearch.yml 文件中的主节点的“discovery.zen.ping.unicast.hosts”中提到哪个 ip 和端口。

部署.yml 文件

apiVersion: apps/v1
kind: Deployment
metadata:
name: elasticsearch-deployment
spec:
 selector:
 matchLabels:
   app: elasticsearch
 replicas: 2
 template:
   metadata:
     labels:
       app: elasticsearch
   spec:
     containers:
     - name: elasticsearch
       image: sandeepp163/elasticsearch:latest
       volumeMounts:
       - mountPath: /usr/share/elasticsearch/config/
         name: config
       - mountPath: /var/logs/elasticsearch/
         name: logs
     volumes:
     - name: config
       hostPath:
         path: "/etc/elasticsearch/"
     - name: logs
       hostPath:
         path: "/var/logs/elasticsearch"

内部通信服务配置

apiVersion: v1
kind: Service
metadata:
  name: elasticsearch-cluster
spec:
  clusterIP: None
  selector:
    app: elasticsearch
  ports:
  - name: transport
    port: 9300
    targetPort: 9300

外部服务配置

apiVersion: v1
kind: Service
metadata:
  name: load-service
  labels:
    app: elasticsearch
spec:
  selector:
    app: elasticsearch
  type: NodePort
  ports:
  - nodePort: 31234
    port: 9200
    targetPort: 9200

我在工作节点上遇到的错误。

[2020-02-26T05:29:02,297][WARN ][o.e.d.z.ZenDiscovery     ] [worker] not enough master nodes discovered during pinging (found [[]], but needed [1]), pinging again

工作人员中的 elasticsearch.yml 文件

cluster.name: xxx
node.name: worker
node.master: false
node.data: true
node.ingest: false
discovery.zen.ping.unicast.hosts: ["192.168.9.0"]
discovery.zen.minimum_master_nodes: 1

主控中的 elasticsearch.yml

cluster.name: xxx
node.name: master
node.master: true
node.data: false
node.ingest: false

谢谢

标签: elasticsearchkubernetes

解决方案


您可以使用 HELM 在有状态集中部署 Elasticsearch。

1. 安装 HELM:

如果您使用的是 linux,请键入:curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash

如果没有,请在此处查看您的操作系统的安装过程

2. 将稳定库添加到 Helm,并升级它们:

helm repo add stable https://kubernetes-charts.storage.googleapis.com

helm repo update 

3.安装Elasticsearch Helm图表

现在您可以安装Elasticsearch 图表,输入:

helm install stable/elasticsearch --generate-name

等待安装,你可以检查使用kubectl get pods -l app=elasticsearch

要访问您可以使用proxy-port服务名称:

ES_SVC=$(kubectl get svc -owide -l "app=elasticsearch" -o jsonpath="{.items[0].metadata.name}")

kubectl port-forward svc/$ES_SVC 9200:9200

4.访问服务:

要访问该服务,请从浏览器访问http://127.0.0.1:9200 。

希望有帮助。


推荐阅读