如何用Kubernetes部署Elasticsearch

老婷君_9285

老婷君_9285

2026-09-24

583人浏览

原创

必须用statefulset而非deployment,因elasticsearch是有状态服务,需稳定节点名(如elasticsearch-0)、固定dns解析(配合headless service)、独占pvc持久存储,否则将导致集群发现失败、分片丢失或脑裂。

如何用kubernetes部署elasticsearch

直接上生产环境,别用 Deployment —— Elasticsearch 是有状态服务,节点名、网络标识、存储卷必须稳定,否则集群发现失败、分片丢失、脑裂频发。

为什么必须用 StatefulSet 而不是 Deployment

Deployment 会随机生成 Pod 名(如 es-5f8b9d7c4-xyz),而 Elasticsearch 节点间靠固定主机名通信(如 elasticsearch-0.elasticsearch)。StatefulSet 保证:elasticsearch-0 永远调度到同一 PV、永远解析为同一 DNS 记录、重启后名字不变。

  • Headless Service(clusterIP: None)是必须的,它让每个 Pod 拥有独立可解析的 DNS 名
  • 若用 Deployment + ClusterIP Service,所有请求都打到同一个入口,节点无法互相发现
  • 官方镜像启动时检查 discovery.seed_hosts,若解析不到真实 Pod IP,日志里会反复报 failed to resolve host

vm.max_map_count 必须提前调,否则 Pod 卡在 Pending 或 CrashLoopBackOff

Elasticsearch 启动时强制检查内核参数 vm.max_map_count,默认值(通常 65530)远低于要求(最低 262144)。Kubernetes 不会帮你改宿主机内核,Pod 启动直接失败,日志里只有一行:ERROR: [1] bootstrap checks failed

Kubernetes Skills
Kubernetes Skills

针对 Kubernetes 仪表板和 Web UI 的浏览器自动化。适用于与 Kubernetes Dashboard、Grafana、ArgoCD UI 或其他 Web 界面交互。需要设置 MCP_BROWSER_ENABLED=true。

下载
  • 在所有 Worker 节点执行:sysctl -w vm.max_map_count=262144
  • 写入持久化配置:echo "vm.max_map_count=262144" >> /etc/sysctl.conf
  • 注意:仅修改 kubelet 所在节点,Master 节点不运行 ES Pod 就不用动

ConfigMap 中的 discovery.seed_hosts 和 cluster.initial_master_nodes 容易配错

这两个配置项决定集群能否完成首次选举。常见错误是写死 IP 或用 Service 名代替 Headless Service 的 DNS 格式。

  • discovery.seed_hosts 应填 StatefulSet 域名格式:elasticsearch-0.elasticsearch,elasticsearch-1.elasticsearch(注意后缀是 Service 名,不是命名空间)
  • cluster.initial_master_nodes 必须与 Pod 名完全一致:elasticsearch-0,elasticsearch-1(不能带域名,不能有空格)
  • 若用 Helm Chart 或 ECK,这些由模板自动生成;手写 YAML 时最容易漏掉 .elasticsearch 这个 DNS 后缀
  • ES 8.x 默认启用安全认证,xpack.security.enabled: true 时,还需提前创建 Secret 存密码,否则健康检查 401

PV/PVC 绑定失败常因 StorageClass 不匹配或 local-path 权限问题

StatefulSet 每个副本需独占 PVC,而 PVC 绑定 PV 失败会导致 Pod 一直卡在 Pending 状态,kubectl describe pod 显示 Waiting for volume to be created

  • 确认 StorageClass 名与 PVC 中 storageClassName 字段严格一致(大小写敏感)
  • 若用 local-path 类型 PV,宿主机目录(如 /data/es)必须属主为 UID 1001(Elasticsearch 官方镜像默认用户)且权限 755
  • NFS 场景下,确保 export 配置含 no_root_squash,否则容器以 root 写入会被拒绝
  • ES 8.x 对磁盘剩余空间有硬性要求(默认需 > 5%),PV 空间不足也会拒绝挂载

真正麻烦的不是写完 YAML,而是节点加入后分片不分配、_cat/shards 里一堆 UNASSIGNED,那往往是 discovery.seed_hosts 解析对了但 network.host 没监听对网卡——它默认只绑 127.0.0.1,得显式设成 0.0.0.0 或具体 Pod IP。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Elasticsearch 从入门到搜索引擎实战
Elasticsearch 从入门到搜索引擎实战

本专题带你从零掌握 Elasticsearch 分布式搜索引擎。深入解析倒排索引核心原理,涵盖单机与 Docker 环境搭建、IK 中文分词器配置及索引文档的 CRUD 操作。通过丰富的 Query DSL 实战案例,详解布尔查询、聚合分析与高亮显示,助你快速构建毫秒级响应的企业级高性能搜索服务。

2026.05.12

39

10

Elasticsearch 高级查询与性能优化
Elasticsearch 高级查询与性能优化

本专题深入解析 Elasticsearch 高级查询与性能优化实战。详解 Bool 复合查询、复杂过滤及聚合分析技巧,解决多条件精准检索难题。从索引设计、JVM 调优到硬件规划,全方位分享 Filter 缓存、深分页优化及集群架构调优策略,助你突破性能瓶颈,打造毫秒级响应的高并发企业级搜索服务。

2026.05.12

64

10

Elasticsearch 企业级开发与运维实践专题
Elasticsearch 企业级开发与运维实践专题

本专题聚焦 Elasticsearch 企业级开发与运维实战。深入解析生产环境集群架构规划、节点角色分离及冷热数据分层策略。涵盖索引生命周期管理(ILM)、安全权限控制、快照备份及全链路监控告警体系搭建。通过分享高可用部署与故障排查经验,助你构建安全、稳定且可扩展的企业级分布式搜索平台。

2026.05.12

41

10

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

2026.09.23

0

15

Buffalo框架路由与请求处理实操指南
Buffalo框架路由与请求处理实操指南

本专题讲解Buffalo框架路由与请求处理机制,涵盖路由注册与分组、资源路由、Handler编写规范、Context上下文方法、参数绑定、中间件编写挂载、Session与Cookie读写、Flash消息及错误页面定制方法。

2026.09.23

0

15

Buffalo框架零基础入门教程
Buffalo框架零基础入门教程

本专题整理Buffalo框架入门内容,涵盖Go环境准备、buffalo CLI安装、新项目生成、目录结构说明、dev热加载启动、数据库连接配置与常见报错排查,帮助新手按约定优于配置的思路跑通第一个Buffalo框架应用。

2026.09.23

0

15

Conan创建软件包配方指南
Conan创建软件包配方指南

本专题介绍通过conanfile.py创建软件包的方法,讲解包名、版本、依赖和构建设置等基础信息,以及source、build、package、package_info等常用方法的作用及编写思路。

2026.09.22

0

12

Conan二进制包配置指南
Conan二进制包配置指南

本专题介绍Conan根据操作系统、编译器、架构和构建类型生成二进制包的方法,讲解Profile、Settings、Options及Package ID的作用,帮助管理不同平台和编译环境下的包版本。

2026.09.22

0

13

Conan私有仓库搭建教程
Conan私有仓库搭建教程

本专题系统的讲解Conan私有仓库的搭建流程,涵盖仓库服务部署、存储目录配置、用户认证、权限划分和远程地址添加,并介绍内部C++依赖包的上传、下载及版本维护方法。

2026.09.22

0

19

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Kubernetes官方教程手册
Kubernetes官方教程手册

共0课时 | 0人学习

Kubernetes官方中文文档
Kubernetes官方中文文档

共0课时 | 0人学习