You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EKS托管K8s中部署Elasticsearch集群报master not discovered错误如何解决?

Elasticsearch集群master选举失败问题排查

问题根因

从日志和配置对比,共有3处核心配置错误导致集群无法完成master选举:

  • 错误1:误用废弃的旧版本选举参数
    ES 7.x及以上版本已经完全废弃了discovery.zen.minimum_master_nodes参数,该参数是ES 6.x及更早版本的选举配置,残留该参数会干扰7.x版本的默认选举逻辑。
  • 错误2:初始master节点配置值不匹配
    cluster.initial_master_nodes配置的是节点名称(node.name),而不是节点的FQDN地址。你的配置中填的是es-0.es-entrypoint.default.svc.cluster.local,但从日志可以看到所有节点的node.name是es-0、es-1、es-2,完全匹配失败,导致集群找不到符合条件的初始master节点完成引导。
  • 错误3:无头服务未开放节点通信端口
    你定义的无头服务es-entrypoint只开放了9200HTTP端口,但ES节点之间内部通信、选举交互依赖9300传输端口,端口未开放导致节点之间虽然能互相发现IP,但无法完成选举交互。

修复方案

1. 修正ConfigMap中的ES配置

修改es-config的elasticsearch.yml内容如下:

cluster.name: elk-cluster
network.host: "0.0.0.0"
bootstrap.memory_lock: false
node.max_local_storage_nodes: 9
# 注意这里填的是节点名,不是FQDN,3个master资格节点都要列全
cluster.initial_master_nodes:
  - es-0
  - es-1
  - es-2
discovery.seed_hosts:
  - es-entrypoint.default.svc.cluster.local

注:discovery.seed_hosts直接填无头服务的域名即可,ES会自动解析该域名下所有Pod的IP作为发现列表,无需逐个写Pod的FQDN;集群首次启动成功后,下次更新配置可以删掉cluster.initial_master_nodes配置,避免重复引导问题。

2. 修正无头服务配置

给es-entrypoint服务添加9300端口的暴露配置:

apiVersion: v1
kind: Service
metadata:
  name: es-entrypoint
spec:
  selector:
    name: es
  ports:
    - port: 9200
      targetPort: 9200
      name: http
      protocol: TCP
    # 新增节点通信端口暴露
    - port: 9300
      targetPort: 9300
      name: inter-node
      protocol: TCP
  clusterIP: None

3. 清理旧数据重新部署

因为之前启动失败的节点可能残留了异常的集群状态数据,建议删除旧的PVC,重新apply修复后的配置,集群即可正常完成选举启动。

内容的提问来源于stack exchange,提问作者Joey Yi Zhao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 10:39:03