【问题标题】:Elasticsearch multi node cluster using kubernetes?使用 kubernetes 的 Elasticsearch 多节点集群?
【发布时间】:2020-02-26 22:35:21
【问题描述】:

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

deployment.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

worker 中的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

master 中的 elasticsearch.yml

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

谢谢

【问题讨论】:

  • 能否添加elasticsearch版本、集群版本、失败的pod日志等?这将有助于我们更好地了解您的情况。
  • elasticsearch 版本:版本:6.1.2,内部版本:5b1fea5/2018-01-10T02:35:59.208Z,JVM:1.8.0_201 日志:- [2020-02-26T05:28:19,634 ][WARN ][o.e.d.z.ZenDiscovery ] [worker] 在 ping 期间发现的主节点不足(找到 [[]],但需要 [1]),再次 ping
  • 你也可以添加yamls和配置文件吗?请将它们添加到问题正文中。
  • 你现在可以看一下吗。
  • “在 ping 期间发现的主节点不足”看起来您的主节点已关闭。你的 k8s 是自托管的吗?如果您有兴趣学习 helm,那么使用 helm 图表部署弹性搜索集群非常容易。 github.com/helm/charts/tree/master/incubator/elasticsearch

标签: elasticsearch kubernetes


【解决方案1】:

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

1.安装 HELM:

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

如果没有,请参阅here 操作系统的安装过程

2。将稳定的存储库添加到 Helm,然后升级它们:

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

helm repo update 

3.安装 Elasticsearch Helm 图表

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

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

希望对您有所帮助。

【讨论】:

  • 我问的是elasticsearch的多节点集群。
  • 是的,我有这个堆栈部署在一个有 3 个节点的集群中,helm 将根据你的所有节点管理 statefulset。
  • 好的,感谢您提供的信息,我会尽力让您知道。由于我还没有开始使用 helm。
  • 太好了,很容易使用,如果你尝试上面的步骤并看到一些奇怪的东西,请分享,我会尽力帮助你。
  • @Mr.KoopaKiller 我想知道您是否可以使用 HELM 帮助我解决类似的问题 install elasticsearch with 3 nodes and production certificates
猜你喜欢
  • 2019-05-12
  • 1970-01-01
  • 1970-01-01
  • 2022-01-03
  • 1970-01-01
  • 2019-10-12
  • 1970-01-01
  • 2021-06-22
  • 2021-09-28
相关资源
最近更新 更多