前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Kubernetes 部署冷热架构 Elasticsearch「Helm 部署案例」

Kubernetes 部署冷热架构 Elasticsearch「Helm 部署案例」

原创
作者头像
sir5kong
修改2023-08-02 07:55:56
6410
修改2023-08-02 07:55:56
举报

上一篇 我们介绍了 Elasticsearch ILM 索引生命周期管理。使用 ILM 的前提是具有冷热架构的 ES 集群,本篇就来介绍如何在 Kubernetes 部署这样的集群。

「冷热架构」官方的说法是「热温冷架构」

今天我们讨论 2 个案例,单节点集群和大型多节点集群。

版本兼容性

  • Kubernetes 1.20+
  • Helm 3.8+
  • Elasticsearch 7.10+, 8.x

获取 helm 仓库

代码语言:txt
复制
helm repo add sir5kong https://helm-charts.itboon.top/sir5kong
helm repo update sir5kong

因为官方 helm charts 已经不维护了,并且 8.x 版本有严重 bug,所以我复刻了一份并进行了修改。

部署单节点集群

单节点集群用来做实验,或者作为开发测试环境都是可以的。

代码语言:shell
复制
helm upgrade --install elasticsearch \
  --namespace es-demo \
  --create-namespace \
  --set singleNodeEnabled="true" \
  sir5kong/elasticsearch

卸载

代码语言:shell
复制
helm uninstall elasticsearch --namespace es-demo

部署大型多节点集群

我们将会部署 3 组节点:

  • 3 个 master 节点
  • 3 个 data_hot 节点
  • 2 个 data_cold 节点

master 可以跟其他节点部署在一起,但是不建议这么操作;data_cold 是可选的,不部署也没有关系。

部署 master

代码语言:shell
复制
helm upgrade --install elasticsearch-master \
  --namespace es-demo \
  --create-namespace \
  --set clusterName="elasticsearch" \
  --set nodeGroup="master" \
  --set "roles={master,remote_cluster_client}" \
  --set replicas="3" \
  sir5kong/elasticsearch

部署 data_hot

代码语言:shell
复制
helm upgrade --install elasticsearch-data-cold \
  --namespace es-demo \
  --create-namespace \
  --set clusterName="elasticsearch" \
  --set nodeGroup="data-hot" \
  --set "roles={data,data_content,data_hot,data_warm,ingest,ml,remote_cluster_client,transform}" \
  --set replicas="3" \
  sir5kong/elasticsearch

部署 data_cold

代码语言:shell
复制
helm upgrade --install elasticsearch-data-cold \
  --namespace es-demo \
  --create-namespace \
  --set clusterName="elasticsearch" \
  --set nodeGroup="data-cold" \
  --set "roles={data_cold}" \
  --set replicas="2" \
  sir5kong/elasticsearch
  • data_cold 是可选的,不部署也没有关系。
  • data_cold 可以选择价格低廉的存储,通过 --set volumeClaimTemplate.storageClassName="Your_Storage_Class" 指定存储类型。

Values 参考

https://github.com/sir5kong/helm-charts-hub/tree/main/charts/elasticsearch/examples/tiers

代码语言:yaml
复制
## master
clusterName: elasticsearch
nodeGroup: "master"

roles:
  - master
  - remote_cluster_client

replicas: 3

esJavaOpts: "-Xmx1g -Xms1g"

resources:
  requests:
    cpu: 100m
    memory: 2G
  limits:
    cpu: 4
    memory: 6G

volumeClaimTemplate:
  accessModes: [ "ReadWriteOnce" ]
  # storageClassName: gp2
  resources:
    requests:
      storage: 20Gi
代码语言:yaml
复制
clusterName: elasticsearch
nodeGroup: "data-hot"

masterService: "elasticsearch-master"

roles:
  - data
  - data_content
  - data_hot
  - data_warm
  #- data_cold
  - ingest
  - ml
  - remote_cluster_client
  - transform

replicas: 3

esJavaOpts: "-Xmx4g -Xms4g"

resources:
  requests:
    cpu: 2
    memory: 6G
  limits:
    cpu: 6
    memory: 12G

volumeClaimTemplate:
  accessModes: [ "ReadWriteOnce" ]
  # storageClassName: gp2
  resources:
    requests:
      storage: 50Gi

具体资源配额和节点调度请根据实际环境进行调整

卸载

代码语言:shell
复制
helm uninstall elasticsearch-master --namespace es-demo
helm uninstall elasticsearch-data-hot --namespace es-demo
helm uninstall elasticsearch-data-cold --namespace es-demo

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 版本兼容性
  • 获取 helm 仓库
  • 部署单节点集群
    • 卸载
    • 部署大型多节点集群
      • 部署 master
        • 部署 data_hot
          • 部署 data_cold
            • Values 参考
              • 卸载
              相关产品与服务
              容器服务
              腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档