您现在的位置是:首页 > 正文

helm安装elasticsearch和kibana

2023-12-31 17:44:39阅读 325

一、介绍

  • Elasticsearch 是一个分布式的搜索和分析引擎,可以用于全文检索、结构化检索和分析,并能将这三者结合起来。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便,轻松扩展服务节点,更能用于日志收集快速检索等等一些列功能。
  • Kibana 是一个为 Elasticsearch 平台分析和可视化的开源平台,使用 Kibana 能够搜索、展示存储在 Elasticsearch 中的索引数据。使用它可以很方便用图表、表格、地图展示和分析数据。

二、资源准备

ElasticSearch 安装有最低安装要求,如果执行 Helm 安装命令后 Pod 无法正常启动,请检查是否符合最低要求的配置。

1、资源要求

ElasticSearch节点

CPU最小要求

内存最小要求

Kubernetes master

核心数 > 2

内存 > 2Gi

Kubernetes data

核心数 > 1

内存 > 2Gi

Kubernetes client

核心数 > 1

内存 > 2Gi

2、ElasticSearch 集群环境

集群名称

节点类型

副本数目

存储大小

网络模式

描述

elasticsearch

Kubernetes Master

3

5Gi

ClusterIP

主节节点,用于控制 ES 集群

elasticsearch

Kubernetes Data

3

50Gi

ClusterIP

数据节点,用于存储 ES 数据

elasticsearch

Kubernetes Client

2

NodePort(30200)

负责处理用户请求,实现请求转发、负载均衡

3、Kibana 环境信息

应用名称

副本数目

存储大小

网络模式

描述

Kibana

1

NodePort(30601)

用于展示 ElasticSearch 数据的应用

 

三、创建集群证书

ElasticSearch 7.x 版本默认安装了 ​​X-Pack​​ 插件,并且部分功能免费,这里我们配置安全证书文件。

生成证书

# 拉取镜像
ctr images pull docker.io/library/elasticsearch:7.7.1
# 运行容器生成证书(将本地目录/app1挂载到容器/app1上) ctr run --mount type=bind,src=/app1,dst=/app1,options=rbind:rw docker.io/library/elasticsearch:7.7.1 elastic-charts-certs /bin/sh -c \ "elasticsearch-certutil ca --out /app1/elastic-stack-ca.p12 --pass '' && \ elasticsearch-certutil cert --name security-master --dns \ security-master --ca /app1/elastic-stack-ca.p12 --pass '' --ca-pass '' --out /app1/elastic-certificates.p12" # 从容器中将生成的证书拷贝出来 # 删除容器和快照 ctr container rm elastic-charts-certs
ctr snapshots rm elastic-charts-certs

将 pcks12 中的信息分离出来,写入文件,这里将生成elastic-certificate.pem

[root@k8s-master01 app1]# ls
elastic-certificates.p12  elastic-stack-ca.p12
# 将 pcks12 中的信息分离出来,写入文件 [root@k8s-master01 app1]# openssl pkcs12 -nodes -passin pass:'' -in elastic-certificates.p12 -out elastic-certificate.pem MAC verified OK [root@k8s-master01 app1]# ls elastic-certificate.pem elastic-certificates.p12 elastic-stack-ca.p12

添加证书

# 添加证书
kubectl create secret generic elastic-certificates --from-file=elastic-certificates.p12
kubectl create secret generic elastic-certificate-pem --from-file=elastic-certificate.pem

# 设置集群用户名密码,用户名不建议修改
kubectl create secret generic elastic-credentials \
  --from-literal=username=elastic --from-literal=password=admin123

配置应用参数

ElasticSearch 与 Kibana 的 Helm Chart 模板是 ES 官方 Github 获取的,它的 Github 地址为 https://github.com/elastic/helm-charts 可以访问该地址了解更多信息。

1、配置应用参数

es-master-values.yaml

---
## 设置集群名称
clusterName: "elasticsearch"
## 设置节点名称
nodeGroup: "master"
## 设置角色
roles:
  master: "true"
  ingest: "false"
  data: "false"

## 指定镜像与镜像版本
image: "docker.elastic.co/elasticsearch/elasticsearch"
imageTag: "7.7.1"
imagePullPolicy: "IfNotPresent"
## 副本数
replicas: 3

## JVM 配置参数
esJavaOpts: "-Xmx1g -Xms1g"
## 部署资源配置(生成环境一定要设置大些)
resources:
  requests:
    cpu: "1000m"
    memory: "2Gi"
  limits:
    cpu: "1000m"
    memory: "2Gi"
## 数据持久卷配置
persistence:
  enabled: true
volumeClaimTemplate:
  accessModes: [ "ReadWriteOnce" ]
  resources:
    requests:
      storage: 30Gi
# ============安全配置============
protocol: http
## 证书挂载配置,这里我们挂入上面创建的证书
secretMounts:
  - name: elastic-certificates
    secretName: elastic-certificates
    path: /usr/share/elasticsearch/config/certs
## 允许您在/usr/share/elasticsearch/config/中添加任何自定义配置文件,例如 elasticsearch.yml
## ElasticSearch 7.x 默认安装了 x-pack 插件,部分功能免费,这里我们配置下
## 下面注掉的部分为配置 https 证书,配置此部分还需要配置 helm 参数 protocol 值改为 https
esConfig:
  elasticsearch.yml: |
    xpack.security.enabled: true
    xpack.security.transport.ssl.enabled: true
    xpack.security.transport.ssl.verification_mode: certificate
    xpack.security.transport.ssl.keystore.path: /usr/share/elasticsearch/config/certs/elastic-certificates.p12
    xpack.security.transport.ssl.truststore.path: /usr/share/elasticsearch/config/certs/elastic-certificates.p12
    # xpack.security.http.ssl.enabled: true
    # xpack.security.http.ssl.truststore.path: /usr/share/elasticsearch/config/certs/elastic-certificates.p12
    # xpack.security.http.ssl.keystore.path: /usr/share/elasticsearch/config/certs/elastic-certificates.p12
extraEnvs:
  - name: ELASTIC_USERNAME
    valueFrom:
      secretKeyRef:
        name: elastic-credentials
        key: username
  - name: ELASTIC_PASSWORD
    valueFrom:
      secretKeyRef:
        name: elastic-credentials
        key: password
# ============调度配置============
## 设置调度策略
## - hard:只有当有足够的节点时 Pod 才会被调度,并且它们永远不会出现在同一个节点上
## - soft:尽最大努力调度
antiAffinity: "hard"
## 容忍配置(一般 kubernetes master 或其它设置污点的节点,只有指定容忍才能进行调度,如果测试环境只有三个节点,则可以开启在 master 节点安装应用)
#tolerations:
#  - operator: "Exists"  ##容忍全部污点

​es-data-values.yaml​

---
## 设置集群名称
clusterName: "elasticsearch"
## 设置节点名称
nodeGroup: "master"
## 设置角色
roles:
  master: "false"
  ingest: "true"
  data: "true"

## 指定镜像与镜像版本
image: "docker.elastic.co/elasticsearch/elasticsearch"
imageTag: "7.7.1"
imagePullPolicy: "IfNotPresent"
## 副本数
replicas: 3

## JVM 配置参数
esJavaOpts: "-Xmx1g -Xms1g"
## 部署资源配置(生成环境一定要设置大些)
resources:
  requests:
    cpu: "1000m"
    memory: "2Gi"
  limits:
    cpu: "1000m"
    memory: "2Gi"
## 数据持久卷配置
persistence:
  enabled: true
volumeClaimTemplate:
  accessModes: [ "ReadWriteOnce" ]
  resources:
    requests:
      storage: 30Gi
# ============安全配置============
protocol: http
## 证书挂载配置,这里我们挂入上面创建的证书
secretMounts:
  - name: elastic-certificates
    secretName: elastic-certificates
    path: /usr/share/elasticsearch/config/certs
## 允许您在/usr/share/elasticsearch/config/中添加任何自定义配置文件,例如 elasticsearch.yml
## ElasticSearch 7.x 默认安装了 x-pack 插件,部分功能免费,这里我们配置下
## 下面注掉的部分为配置 https 证书,配置此部分还需要配置 helm 参数 protocol 值改为 https
esConfig:
  elasticsearch.yml: |
    xpack.security.enabled: true
    xpack.security.transport.ssl.enabled: true
    xpack.security.transport.ssl.verification_mode: certificate
    xpack.security.transport.ssl.keystore.path: /usr/share/elasticsearch/config/certs/elastic-certificates.p12
    xpack.security.transport.ssl.truststore.path: /usr/share/elasticsearch/config/certs/elastic-certificates.p12

extraEnvs:
  - name: ELASTIC_USERNAME
    valueFrom:
      secretKeyRef:
        name: elastic-credentials
        key: username
  - name: ELASTIC_PASSWORD
    valueFrom:
      secretKeyRef:
        name: elastic-credentials
        key: password
# ============调度配置============
## 设置调度策略
## - hard:只有当有足够的节点时 Pod 才会被调度,并且它们永远不会出现在同一个节点上
## - soft:尽最大努力调度
antiAffinity: "hard"
## 容忍配置(一般 kubernetes master 或其它设置污点的节点,只有指定容忍才能进行调度,如果测试环境只有三个节点,则可以开启在 master 节点安装应用)
#tolerations:
#  - operator: "Exists"  ##容忍全部污点

​es-client-values.yaml​

---
## 设置集群名称
clusterName: "elasticsearch"
## 设置节点名称
nodeGroup: "master"
## 设置角色
roles:
  master: "false"
  ingest: "false"
  data: "false"

## 指定镜像与镜像版本
image: "docker.elastic.co/elasticsearch/elasticsearch"
imageTag: "7.7.1"
imagePullPolicy: "IfNotPresent"
## 副本数
replicas: 3

## JVM 配置参数
esJavaOpts: "-Xmx1g -Xms1g"
## 部署资源配置(生成环境一定要设置大些)
resources:
  requests:
    cpu: "1000m"
    memory: "2Gi"
  limits:
    cpu: "1000m"
    memory: "2Gi"
## 数据持久卷配置
persistence:
  enabled: true
volumeClaimTemplate:
  accessModes: [ "ReadWriteOnce" ]
  resources:
    requests:
      storage: 30Gi
# ============安全配置============
protocol: http
## 证书挂载配置,这里我们挂入上面创建的证书
secretMounts:
  - name: elastic-certificates
    secretName: elastic-certificates
    path: /usr/share/elasticsearch/config/certs
## 允许您在/usr/share/elasticsearch/config/中添加任何自定义配置文件,例如 elasticsearch.yml
## ElasticSearch 7.x 默认安装了 x-pack 插件,部分功能免费,这里我们配置下
## 下面注掉的部分为配置 https 证书,配置此部分还需要配置 helm 参数 protocol 值改为 https
esConfig:
  elasticsearch.yml: |
    xpack.security.enabled: true
    xpack.security.transport.ssl.enabled: true
    xpack.security.transport.ssl.verification_mode: certificate
    xpack.security.transport.ssl.keystore.path: /usr/share/elasticsearch/config/certs/elastic-certificates.p12
    xpack.security.transport.ssl.truststore.path: /usr/share/elasticsearch/config/certs/elastic-certificates.p12

extraEnvs:
  - name: ELASTIC_USERNAME
    valueFrom:
      secretKeyRef:
        name: elastic-credentials
        key: username
  - name: ELASTIC_PASSWORD
    valueFrom:
      secretKeyRef:
        name: elastic-credentials
        key: password
# ============调度配置============
## 设置调度策略
## - hard:只有当有足够的节点时 Pod 才会被调度,并且它们永远不会出现在同一个节点上
## - soft:尽最大努力调度
antiAffinity: "hard"
## 容忍配置(一般 kubernetes master 或其它设置污点的节点,只有指定容忍才能进行调度,如果测试环境只有三个节点,则可以开启在 master 节点安装应用)
#tolerations:
#  - operator: "Exists"  ##容忍全部污点

Kibana 安装的配置文件es-kibana-values.yaml​

---
## 指定镜像与镜像版本
image: "docker.elastic.co/kibana/kibana"
imageTag: "7.7.1"
## 配置 ElasticSearch 地址
elasticsearchHosts: "http://elasticsearch-master:9200"
# ============环境变量配置============
## 环境变量配置,这里引入上面设置的用户名、密码 secret 文件
extraEnvs:
  - name: ELASTICSEARCH_USERNAME
    valueFrom:
      secretKeyRef:
        name: elastic-credentials
        key: username
  - name: ELASTICSEARCH_PASSWORD
    valueFrom:
      secretKeyRef:
        name: elastic-credentials
        key: password
# ============资源配置============
resources:
  requests:
    cpu: "1000m"
    memory: "2Gi"
  limits:
    cpu: "1000m"
    memory: "2Gi"
# ============配置 Kibana 参数============
kibanaConfig:
  kibana.yml: |
    i18n.locale: "zh-CN"
# ============Service 配置============
service:
  type: NodePort
  nodePort: "30601"

五、Helm 安装 ElasticSearch

ElaticSearch 安装需要安装三次,分别安装 ElasticSearch Master、ElasticSearch Data、ElasticSearch Client 三组。

  • 安装的第一组 ElasticSearch 作为 Master 角色节点,负责集群间的管理工作;
  • 安装的第二组 ElasticSearch 作为 Data 节点,负责存储数据;
  • 安装的第三组 ElasticSearch 作为 Client 节点,负责代理 ElasticSearch Cluster 集群,负载均衡。
# 添加 Chart 仓库
helm repo add  elastic    https://helm.elastic.co
helm repo update

# 安装 ElasticSearch Master 节点
helm install elasticsearch-master -f es-master-values.yaml --version 7.7.1 elastic/elasticsearch

# 安装 ElasticSearch Data 节点
helm install elasticsearch-data -f es-data-values.yaml --version 7.7.1 elastic/elasticsearch

# 安装 ElasticSearch Client 节点
helm install elasticsearch-client -f es-client-values.yaml --version 7.7.1 elastic/elasticsearch

3 Helm 安装 Kibana

helm install kibana -f es-kibana-values.yaml --version 7.7.1 elastic/kibana

网站文章

  • helm基本命令操作

    一、安装 wget -c https://get.helm.sh/helm-v3.9.2-linux-amd64.tar.gz tar -xf helm-v3.9.2-linux-amd64.tar....

    2023-12-31 16:59:21
  • elasticsearch入门介绍

    一、介绍 1.1 ES简介 Elasticsearch(简称ES)是使用iava开发,基于Lucene、分布式、通过Restful7方式进行交互的近实时搜索平台框架。它的特点有:分布式,零配置,自动发...

    2023-12-31 16:04:14
  • springboot springsession 结合caffeine

    maven配置 <dependency> <groupId>com.github.gotson</groupId> ...

    2023-12-31 12:04:47
  • springboot caffeine缓存配置

    maven配置 <dependency> <groupId>com.github.ben-manes.caffeine</grou...

    2023-12-31 11:59:32
  • springboot ehcache缓存配置

    maven配置 <dependency> <groupId>org.springframework.boot</groupId&g...

    2023-12-31 11:49:15
  • k8s集成KubeSphere的第一个应用程序wordpress

    示例wordpress部署 这里使用project-regular权限账号进行登录,可以通过admin用户添加指定账号,然后创建空间demo-wordspace,并且创建demo-project项目 ...

    2023-12-31 11:00:44
  • k8s二进制快速集成KubeSphere

    一、KubeSphere 介绍 KubeSphere 是在 Kubernetes 之上构建的面向云原生应用的分布式操作系统,完全开源,支持多云与多集群管理,提供全栈的 IT 自动化运维能力,简化企业的...

    2023-12-31 10:48:21
  • 二进制部署kubernetes集群的推荐方式

    软件版本: 软件 版本 containerd v1.6.5 etcd v3.5.0 kubernetes v1.24.0 一、系统环境 1.1 环境准备 角色 IP 服务 k8s-master01 1...

    2023-12-31 00:43:12
  • 如何在一台服务器上安装etcd集群

    一、环境 角色 IP etcd-1 192.168.10.10 (12379、12380) etcd-2 192.168.10.10 (22379、22380) etcd-3 192.168.10.1...

    2023-12-31 00:21:23
  • containerd镜像构建

    实用buildkit构建 wget https://github.com/moby/buildkit/releases/download/v0.10.5/buildkit-v0.10.5.linux-...

    2023-12-30 23:55:46