文章转载自:http://www.mydlq.club/article/13/

系统环境:

  • helm 版本:v3.2.1
  • Kubernetes 版本:1.18.3
  • ElasticSearch Chart 版本:7.7.1
  • Kibana & ElasticSearch 版本:7.7.1

一、简介

  • Helm: Helm3(注意:helm 2.0 版本与 3.0 有很大区别)是与 kubernetes 的 kube-apiserver 进行交互,通过 Kubernetes API 控制应用启动、更新与删除的客户端。
  • Elasticsearch: ElasticSearch 是一个分布式的搜索和分析引擎,可以用于全文检索、结构化检索和分析,并能将这三者结合起来。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便,轻松扩展服务节点,更能用于日志收集快速检索等等一些列功能。
  • Kibana: Kibana 是一个为 ElasticSearch 平台分析和可视化的开源平台,使用 Kibana 能够搜索、展示存储在 ElasticSearch 中的索引数据。使用它可以很方便用图表、表格、地图展示和分析数据。

二、环境配置

Kubernetes 节点信息

Elastic 栈 Chart 版本说明

ElasticSearch 安装资源要求

ElasticSearch 集群环境信息

Kibana 环境信息

三、配置 StorageClass

配置一个 SotrageClass,用于创建 Kubernetes 存储用的 PV、PVC,因为 ElasticSearch 部署的是 StatefulSet 类型资源,涉及到自动卷分配,需要一个存储卷分配服务。例如,使用 NFS 存储就需要 NFS 共享网络卷的 NFS-Provisioner 服务,能够帮我们自动创建存储空间及 PV 与 PVC,请确认 Kubernetes 集群中存在这样的卷分配服务。

例如,本人使用的是 NFS 存储卷,且存在 NFS Provisioner 服务,则可以按以下配置 StorageClass,如下:

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: nfs-storage
provisioner: nfs-client ## 需要和 NFS-Provisioner 服务提供者提供的配置的保持一致
allowVolumeExpansion: true
reclaimPolicy: Delete

其他存储卷系统请自行查询如何配置 StorageClass,当然也可以提前设置 PVC,然后在 Heml 配置参数文件 values.yaml 中指定要用的 PVC 名称。

实践操作时使用rook-ceph提供的cephfs

四、提前下载镜像

提前将要部署的应用的镜像下载,避免安装时因为镜像下载过慢而导致安装失败。这里我们主要用到的两个镜像,下载操作如下:

## 拉取 elasticsearch 镜像
$ docker pull elasticsearch:7.7.1 ## 拉取 kibana 镜像
$ docker pull kibana:7.7.1

五、创建集群证书

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

1、生成证书文件

# 运行容器生成证书
$ docker run --name elastic-charts-certs -i -w /app elasticsearch:7.7.1 /bin/sh -c \
"elasticsearch-certutil ca --out /app/elastic-stack-ca.p12 --pass '' && \
elasticsearch-certutil cert --name security-master --dns \
security-master --ca /app/elastic-stack-ca.p12 --pass '' --ca-pass '' --out /app/elastic-certificates.p12" # 从容器中将生成的证书拷贝出来
$ docker cp elastic-charts-certs:/app/elastic-certificates.p12 ./ # 删除容器
$ docker rm -f elastic-charts-certs # 将 pcks12 中的信息分离出来,写入文件
$ openssl pkcs12 -nodes -passin pass:'' -in elastic-certificates.p12 -out elastic-certificate.pem

2、添加证书到 Kubernetes

#   添加证书
$ kubectl create secret -n mydlqcloud generic elastic-certificates --from-file=elastic-certificates.p12 # 设置集群用户名密码,用户名不建议修改
$ kubectl create secret -n mydlqcloud generic elastic-credentials \
--from-literal=username=elastic --from-literal=password=mydlq123

六、配置应用参数

通过 Helm 安装 ElasticSearch、Kibana 需要事先创建一个带有配置参数的 values.yaml 文件。然后再执行 Helm install 安装命令时,指定使用此文件。

1、创建 ElasticSearch Master 安装的配置文件

创建 es-master-values.yaml 文件

$ vi 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"
## 副本数
replicas: 3 # ============资源配置============
## JVM 配置参数
esJavaOpts: "-Xmx1g -Xms1g"
## 部署资源配置(生成环境一定要设置大些)
resources:
requests:
cpu: "2000m"
memory: "2Gi"
limits:
cpu: "2000m"
memory: "2Gi"
## 数据持久卷配置
persistence:
enabled: true
## 存储数据大小配置
volumeClaimTemplate:
storageClassName: nfs-storage
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 5Gi # ============安全配置============
## 设置协议,可配置为 http、https
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
## 环境变量配置,这里引入上面设置的用户名、密码 secret 文件
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" ##容忍全部污点

2、创建 ElasticSearch Data 安装的配置文件

创建 es-data-values.yaml 文件

$ vi es-data-values.yaml 

# ============设置集群名称============
## 设置集群名称
clusterName: "elasticsearch"
## 设置节点名称
nodeGroup: "data"
## 设置角色
roles:
master: "false"
ingest: "true"
data: "true" # ============镜像配置============
## 指定镜像与镜像版本
image: "docker.elastic.co/elasticsearch/elasticsearch"
imageTag: "7.7.1"
## 副本数
replicas: 3 # ============资源配置============
## JVM 配置参数
esJavaOpts: "-Xmx1g -Xms1g"
## 部署资源配置(生成环境一定要设置大些)
resources:
requests:
cpu: "1000m"
memory: "2Gi"
limits:
cpu: "1000m"
memory: "2Gi"
## 数据持久卷配置
persistence:
enabled: true
## 存储数据大小配置
volumeClaimTemplate:
storageClassName: nfs-storage
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 50Gi # ============安全配置============
## 设置协议,可配置为 http、https
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
## 环境变量配置,这里引入上面设置的用户名、密码 secret 文件
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" ##容忍全部污点

3、创建 ElasticSearch Client 安装的配置文件

创建 es-data-values.yaml 文件

$ vi es-client-values.yaml 

# ============设置集群名称============
## 设置集群名称
clusterName: "elasticsearch"
## 设置节点名称
nodeGroup: "client"
## 设置角色
roles:
master: "false"
ingest: "false"
data: "false" # ============镜像配置============
## 指定镜像与镜像版本
image: "docker.elastic.co/elasticsearch/elasticsearch"
imageTag: "7.7.1"
## 副本数
replicas: 2 # ============资源配置============
## JVM 配置参数
esJavaOpts: "-Xmx1g -Xms1g"
## 部署资源配置(生成环境一定要设置大些)
resources:
requests:
cpu: "1000m"
memory: "2Gi"
limits:
cpu: "1000m"
memory: "2Gi"
## 数据持久卷配置
persistence:
enabled: false # ============安全配置============
## 设置协议,可配置为 http、https
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
## 环境变量配置,这里引入上面设置的用户名、密码 secret 文件
extraEnvs:
- name: ELASTIC_USERNAME
valueFrom:
secretKeyRef:
name: elastic-credentials
key: username
- name: ELASTIC_PASSWORD
valueFrom:
secretKeyRef:
name: elastic-credentials
key: password # ============Service 配置============
service:
type: NodePort
nodePort: "30200"

4、创建 Kibana 安装的配置文件

创建 kibana-values.yaml 文件

$ vi kibana-values.yaml 

# ============镜像配置============
## 指定镜像与镜像版本
image: "docker.elastic.co/kibana/kibana"
imageTag: "7.7.1" ## 配置 ElasticSearch 地址
elasticsearchHosts: "http://elasticsearch-client: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: "500m"
memory: "1Gi"
limits:
cpu: "500m"
memory: "1Gi" # ============配置 Kibana 参数============
## kibana 配置中添加语言配置,设置 kibana 为中文
kibanaConfig:
kibana.yml: |
i18n.locale: "zh-CN" # ============Service 配置============
service:
type: NodePort
nodePort: "30601"

七、Helm 安装 ElasticSearch、Kibana

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

这里我们只介绍下如何使用 Helm 安装 ElasticSearch 与 Kibana 应用,操作如下:

1、Helm 增加 Elastic 仓库

$ helm repo add elastic https://helm.elastic.co

2、Helm 安装 ElasticSearch

ElaticSearch 安装需要安装三次,分别安装 ElasticSearch Master、ElasticSearch Data、ElasticSearch Client 三组,安装的第一组 ElasticSearch 作为 Master 角色节点,负责集群间的管理工作;安装的第二组 ElasticSearch 作为 Data 节点,负责存储数据;安装的第三组 ElasticSearch 作为 Client 节点,负责代理 ElasticSearch Cluster 集群,负载均衡。

ElasticSearch 安装部署如下:

  • -f:指定部署配置文件
  • --version:指定使用的 Helm Chart 版本号
  • --namespace:指定部署应用的 Namespace 空间

在安装 Master 节点后 Pod 启动时候会抛出异常,就绪探针探活失败,这是个正常现象。在执行安装 Data 节点后 Master 节点 Pod 就会恢复正常。

## 安装 ElasticSearch Master 节点
$ helm install elasticsearch-master -f es-master-values.yaml --namespace mydlqcloud --version 7.7.1 elastic/elasticsearch ## 安装 ElasticSearch Data 节点
$ helm install elasticsearch-data -f es-data-values.yaml --namespace mydlqcloud --version 7.7.1 elastic/elasticsearch ## 安装 ElasticSearch Client 节点
$ helm install elasticsearch-client -f es-client-values.yaml --namespace mydlqcloud --version 7.7.1 elastic/elasticsearch

3、Helm 安装 Kibana

$ helm install kibana -f kibana-values.yaml --namespace mydlqcloud --version 7.7.1 elastic/kibana

八、查看安装的应用资源

查看部署完成后各个组件的列表与状态:

$ kubectl get service,pod -n mydlqcloud | grep -E 'elasticsearch|kibana'

service/elasticsearch-client            NodePort    10.111.34.166    <none>        9200:30200/TCP,9300:30022/TCP
service/elasticsearch-client-headless ClusterIP None <none> 9200/TCP,9300/TCP
service/elasticsearch-data ClusterIP 10.101.38.61 <none> 9200/TCP,9300/TCP
service/elasticsearch-data-headless ClusterIP None <none> 9200/TCP,9300/TCP
service/elasticsearch-master ClusterIP 10.98.230.101 <none> 9200/TCP,9300/TCP
service/elasticsearch-master-headless ClusterIP None <none> 9200/TCP,9300/TCP
service/kibana-kibana NodePort 10.106.53.52 <none> 5601:30601/TCP
pod/elasticsearch-client-0 1/1 Running 0
pod/elasticsearch-data-0 1/1 Running 0
pod/elasticsearch-master-0 1/1 Running 0
pod/elasticsearch-master-1 1/1 Running 0
pod/elasticsearch-master-2 1/1 Running 0
pod/kibana-kibana-5658b7b899-x5265 1/1 Running 0

Pod 信息描述:

  • elasticsearch-master:ES 主节点 Pod;
  • elasticsearch-data:ES 数据节点 Pod;
  • elasticsearch-client: ES 客户端节点 Pod;
  • kibana-kibana:Kibana Pod;

九、访问 Kibana 浏览 ElasticSearch 数据

由上面我们指定了 Kibana 的 NodePort 端口为 30601 而我的 Kubernetes 集群地址为 192.168.2.11,所以这里我们输入地址: http://192.168.2.11:30601 访问 Kibana 界面。

然后我们可以看到,会出现登录框,让我们输出用户名、密码,这里我们输入上面配置的用户名、密码 elastic/mydlq123 进行登录:

登录成功后就跳转到 Kibana 主界面:

Helm3 安装 ElasticSearch & Kibana 7.x 版本的更多相关文章

  1. 【最新】docker 安装elasticsearch + kibana步骤【第一篇_elasticsearch】

     最近在用docker 安装elasticsearch + kibana 遇到了很多坑,最后成功安装elasticsearch + kibana (6.8.1)版本   安装了一下午,现总结过程中遇到 ...

  2. 【最新】docker 安装elasticsearch + kibana步骤【第二篇_kibana】

    本文主要讲解Docker 安装 kibana并设置中文语言 [如果有需要安装elasticsearch 的朋友请移步博主第一篇文章] 话不多说! 第一步:docker 下载kibana docker ...

  3. Centos 6.4 安装elasticsearch+kibana

    elasticsearch和kibanna的链接地址:https://www.elastic.co/downloads,我的环境里用的包为kibana-4.1.1-linux-x64.tar.gz和e ...

  4. docker安装Elasticsearch Kibana和Cerebro

    环境:win10家庭版,基于Docker Toolbox 首先先做好以下两步准备工作: ①.打开Oracle VM VirtualBox,设置虚拟机内存大小,默认不够安装,建议如下设置: ②.启动虚拟 ...

  5. 安装elasticsearch+kibana+searchguard

    ---------------------------------安装es的search-guard-------------------------------------------------- ...

  6. Ubuntu16.04下安装elasticsearch+kibana实现php客户端的中文分词

    1.下载安装java, elasticsearch和kibana apt-get install default-jre default-jdk wget https://artifacts.elas ...

  7. Docker 安装 Elasticsearch+kibana

    1 下载镜像 docker pull elasticsearch:7.4.1 docker pull kibana:7.4.1 拉取的镜像如下: 2 创建network 创建一个网络,名字任意取,使得 ...

  8. 【Elasticsearch】Docker 安装 Elasticsearch 2.4.4 版本(高版本方式不同)

    1. 下载  elasticsearch docker pull docker.elastic.co/elasticsearch/elasticsearch:6.4.3 2.启动 elasticsea ...

  9. 通过docker安装elasticsearch和安装ik分词器插件及安装kibana

    前提: 已经安装好docker运行环境: 步骤: 1.安装elasticsearch 6.2.2版本,目前最新版是7.2.0,这里之所以选择6.2.2是因为最新的SpringBoot2.1.6默认支持 ...

随机推荐

  1. 一题多解,ASP.NET Core应用启动初始化的N种方案[下篇]

    [接上篇]"天下大势,分久必合,合久必分",ASP.NET应用通过GenericWebHostService这个承载服务被整合到基于IHostBuilder/IHost的服务承载系 ...

  2. 2022-7-15 java 数据结构入门

    @ 目录 数据结构 1.二分查找 动图演示: 2.冒泡排序 1.冒泡排序原理 2.冒泡排序基础版 3.冒泡排序代码优化版 4.冒泡排序代码升级版 3.选择排序 1. 算法步骤 2.插入排序图解: 3. ...

  3. HCNP Routing&Switching之BFD

    BFD技术背景 什么是BFD?它的主要作用是做什么的,这是我们学习BFD需要搞清楚的地方: BFD是Bidirectional Forwarding Detection的缩写,翻译成中文就是双向转发检 ...

  4. 第十二天python3 匿名函数

    python借助lambda表达式构建匿名函数: 参数列表不需要小括号: 冒号是用来分割参数列表和表达式的: 不需要使用return,表达式的值,就是匿名函数返回值: lambda表达式(匿名函数)只 ...

  5. python jinjia2 使用语法

    简介 对于jinjia2来说,模板仅仅是文本文件,可以生成任何基于文本的文件格式,例如HTML.XML.CSV.LaTex 等等,以下是基础的模板内容: <!DOCTYPE html> & ...

  6. 王霸雄图荣华敝屣,谈笑间尽归尘土|基于Python3双队列数据结构搭建股票/外汇交易匹配撮合系统

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_192 如果你爱他,那么送他去股市,因为那里是天堂:如果你恨他,送他去股市,因为那里是地狱. 在过去的一年里,新冠疫情持续冲击世界经 ...

  7. 【原创】Python 二手车之家车辆档案数据爬虫

    本文仅供学习交流使用,如侵立删! 二手车之家车辆档案数据爬虫 先上效果图 环境 win10 python3.9 lxml.retrying.requests 需求分析 需求: 主要是需要车辆详情页中车 ...

  8. 一键到位「GitHub 热点速览 v.22.32」

    作者:HelloGitHub-小鱼干 上上周在 B 站观看了智能键盘--瀚文的制作过程,本周 GitHub 热榜上出现了它的软硬件开源项目 HelloWord-Keyboard,如果你的动手能力强不妨 ...

  9. 解决beego运行程序报错问题:stderr: go: github.com/astaxie/beego@v1.12.1: missing go.sum entry

    使用命令bee new beegodemo02创建beego程序后,使用VScode打开后,便会报错无法运行,报错信息如下: Error loading workspace: err: exit st ...

  10. Luogu P1903 [国家集训队]数颜色 / 维护队列 (带修莫队)

    #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> ...