Helm 安装 ElasticSearch & Kibana

目录[-]


系统环境:

  • Kubernetes 版本:1.14.0
  • helm-Client 版本:v2.13.0
  • helm-Server 版本:v2.13.0
  • Kibana 版本:6.7.0
  • Kibana Chart 版本:2.3.0
  • ElasticSearch 版本:6.7.0
  • ElasticSearch Chart 版本:1.26.1

Charts Github 仓库地址:

架构图:

一、简介

1、Helm 简介

简介:

Helm 是一个软件包管理器,提供了一种『简单的方法来查找、共享和使用为 Kubernetes 而构建的软件』。

相关概念:

  • Chart: 一系列用于描述 k8s 资源相关文件的集合,是 Helm 用于打包 k8s 资源的方式。
  • Release: 一个 chart 被 Helm 运行后将会生成对应的一个 release。
  • Helm: Helm 的客服端,通过 gRPC 协议与 TillerServer 进行交互,主要提供了增删查改 chart、release 和 repository 相关的功能。

2、ElasticSearch 简介

简介:

Elasticsearch 是一个分布式的搜索和分析引擎,可以用于全文检索、结构化检索和分析,并能将这三者结合起来。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便,轻松扩展服务节点,更能用于日志收集快速检索等等一些列功能。

功能:

  • 简单的restful api,天生的兼容多语言开发。
  • 分布式的实时文件存储,每个字段都被索引且可用于搜索。
  • 分布式的实时分析搜索引擎,海量数据下近实时秒级响应。
  • 易扩展,处理PB级结构化或非结构化数据,海量数据近实时处理。

应用场景:

  • 内容系统:百度百科、维基百科、今日头条…
  • 论坛:开源中国、csdn、stack overflow…
  • 代码库:github、coding、oschina git…
  • 电商平台:jd、tmall、ebay…
  • 日志平台:elk、efk…

3、Kibana 简介

简介:

Kibana是一个为Elasticsearch平台分析和可视化的开源平台,使用Kibana能够搜索、展示存储在Elasticsearch中的索引数据。使用它可以很方便用图表、表格、地图展示和分析数据。

功能:

  • Elasticsearch 无缝集成: Kibana架构为Elasticsearch定制,可以将任何结构化和非结构化数据加入Elasticsearch索引。
  • 整合数据: Kibana能够更好地处理海量数据,并据此创建柱形图、折线图、散点图、直方图、饼图和地图。
  • 复杂数据分析: Kibana提升了Elasticsearch分析能力,能够更加智能地分析数据,执行数学转换并且根据要求对数据切割分块。
  • 接口灵活: 使用Kibana可以更加方便地创建、保存、分享数据,并将可视化数据快速交流。
  • 配置简单:  Kibana的配置和启用非常简单,用户体验非常友好。

二、提前下载镜像

下面是我们需要用到的两个主要镜像,提前将其下载避免下载过慢启动超时而导致失败。

  • kibana 镜像: kibana:6.7.0
  • elasticsearch 镜像: elasticsearch:6.7.0
$ docker pull docker.elastic.co/kibana/kibana:6.7.0
$ docker pull docker.elastic.co/elasticsearch/elasticsearch:6.7.0

三、配置应用参数

这里是通过 Helm 安装 ElasticSearch、Kibana 需要事先设置一个应用事先配置好的配置参数,创建一个 values.yaml 文件将对应配置写入其中,再通过 Helm 执行 install 安装命令时知道参数到此文件 values.yaml 读取即可。

1、配置 StorageClass

配置一个 SotrageClass,用于创建 Kubernetes 存储用的 PV、PVC,因为涉及到自动卷分配,需要一个分配服务,例如 NFS 共享网络卷的 NFS-Provisioner 或者分布式存储的 GlusterFS kubernetes.io/glusterfs 等,请确认 Kubernetes 集群中存在这样的卷分配服务。

例如存在 NFS Provisioner 则可以按以下配置 StorageClass

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

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

2、创建 ElasticSearch 配置参数

创建 es-values.yaml 文件

$ vi es-values.yaml 

添加内容如下:

#---从6.3开始,Xpack部分免费并默认启用---
#---所以这里我们将镜像不用 OSS 的镜像,去掉OSS用标准的 ES 镜像即可---
image:
  repository: docker.elastic.co/elasticsearch/elasticsearch
  tag: "6.7.0"

cluster:
  #---是否开启Xpack插件部分---
  xpackEnable: true   
  env:
    #---开启Xpack插件部分---
    XPACK_MONITORING_ENABLED: true  

master:
  replicas: 3
  heapSize: "512m"
  #---Master节点数据持久化---
  persistence:              
    enabled: true
    accessMode: ReadWriteOnce
    name: data
    size: "2Gi"     
    #---指定为你集群提供分配功能的StorageClass---
    storageClass: "es-storageclass"
  #---设置资源限制---
  resources:                
    limits:
      cpu: "1"
      memory: "1024Mi"
    requests:
      cpu: "100m"
      memory: "512Mi"

data:
  replicas: 2
  heapSize: "1536m"
  #---Data节点数据持久化---
  persistence:               
    enabled: true
    accessMode: ReadWriteOnce
    name: data
    size: "5Gi"
    #---指定为你集群提供分配功能的StorageClass---
    storageClass: "es-storageclass"   
  #---设置资源限制,生产环境请务必内存要大---
  resources:   
    limits:
      cpu: "1"
      memory: "2048Mi"
    requests:
      cpu: "100m"
      memory: "1536Mi"

3、创建 Kibana 配置参数

创建 kibana-values.yaml 文件

$ vi kibana-values.yaml 

添加内容如下:

#---由于 ElasticSearch 已经带上 Xpack 插件等---
#---所以这里我们也不用默认的OSS镜像,去掉OSS用标准镜像---
image:
  repository: "docker.elastic.co/kibana/kibana"
  tag: "6.7.0"
  
#---设置Service网络模式为NodePort---
service:
  type: NodePort 
  
#---创建RBAC的权限角色---
serviceAccount:
  create: true   
  
files:
  kibana.yml:
    server.name: kibana
    server.host: "0"
    #---设置为 ES 负载节点地址,这个地址请按集群情况修改
    elasticsearch.hosts: http://elasticsearch-client:9200  

#---设置资源限制---
resources:    
  limits:
    cpu: 100m
    memory: 500Mi
  requests:
    cpu: 100m
    memory: 300Mi

四、Helm 安装 ElasticSearch、Kibana

由于 stable 官方仓库涉及国外无法连接,所以本人已经将 ElasticSearch Chart 存入私有仓库,地址为 http://chart.mydlq.club 可以直接加入到你的 Helm 当中,如果不愿使用此方法,也可以选择从 Chart 官方 GitHub 上下载对应包到本地,然后安装亦可。

1、方法一:增加 Helm 仓库安装

本人已经将 http://chart.mydlq.club 仓库暴露到外网,可以按下方式将仓库加入到自己的 Helm

  • –name: 应用名称
  • –namespace:应用启动到的 namespace 空间
  • –version:指定安装的 chart 包版本
  • mydlq/elasticsearch:仓库名/应用名
  • -f:指定配置参数从文件中读取

(1)、增加仓库

$ helm repo add mydlq http://chart.mydlq.club

(2)、安装 ElasticSearch

$ helm install --name elasticsearch --namespace logging -f es-values.yaml mydlq/elasticsearch --version 1.26.1

(3)、安装 Kibana

$ helm install --name kibana --namespace logging -f kibana-values.yaml mydlq/kibana

2、方法二:下载到本地安装

可以进入 Charts 的 Stable 仓库 Github 地址 https://github.com/helm/charts/tree/master下载下来进行安装。

(1)、从 GitHub 拉取官方 chart stable 包

$ git clone https://github.com/helm/charts.git

(2)、安装 ElasticSearch

$ helm install --name elasticsearch --namespace logging ./charts/stable/elasticsearch --version 1.26.1

(3)、安装 Kibana

$ helm install --name kibana --namespace logging -f kibana-values.yaml ./charts/stable/kibana 

五、查看安装的应用资源

Service 信息说明:

  • elasticsearch-client: ElasticSearch 的客户端,直接与数据节点连接做负载用。
  • elasticsearch-discovery: ElasticSearch 的 Master,用于 ES 集群间管理。
  • kibana: Kibana 客户端,用于展示 ES 存储的信息。

Pod 信息说明:

  • elasticsearch-client: ElasticSearch 的负载均衡客户端 Pod,用于连接 Data 节点,做数据间存入和查询。
  • elasticsearch-data: ElasticSearch 的 Data Pod,启动方式为 StatefulSet 方式,是有状态集,用于管理存入的数据的读写。
  • elasticsearch-master: ElasticSearch 的 Master Pod,启动方式为 StatefulSet 方式,是有状态集,用于维护 ES 集群稳定性,不做查询和存入。
  • kibana: Kibana Pod。
$ kubectl get service,pod -n logging | grep -E 'elasticsearch|kibana'

service/elasticsearch-client      ClusterIP   10.10.49.253    <none>    9200/TCP       125m
service/elasticsearch-discovery   ClusterIP   None            <none>    9300/TCP       125m
service/kibana                    NodePort    10.10.80.135    <none>    443:30393/TCP  4h9m
pod/elasticsearch-client-8485c49867-7bjf5   1/1     Running   0      125m
pod/elasticsearch-client-8485c49867-lqzhp   1/1     Running   0      125m
pod/elasticsearch-data-0                    1/1     Running   0      125m
pod/elasticsearch-data-1                    1/1     Running   0      124m
pod/elasticsearch-master-0                  1/1     Running   0      125m
pod/elasticsearch-master-1                  1/1     Running   0      121m
pod/elasticsearch-master-2                  1/1     Running   0      120m
pod/kibana-98ff6c8f5-nqv9m                  1/1     Running   0      134m

PS:后面的 elasticsearch & kibana 请设置为你 helm 设置的应用名称

六、访问 Kibana

由上面获取 Kubernetes 中的相关 Service 资源可知 Kibana Service 的 NodePort 端口为 “30393”,而我的 Kubernetes 集群地址为 “192.168.2.11”,所以这里我们访问这个端口进入 Kibana 界面。

输入地址: http://192.168.2.11:30393

这里我们进行一些简单的设置,让它能看见一些系统数据。

Management->Index patterns->

然后开启 Include system 后输入 “.kibana_*” 再 Next step 进入下一步

过滤这块选择根据 “timestamp” 时间查询

进入 Discover 查询数据,时间选择 Today 就可以查询系统很多监控数据

博客
32132
07-14 364
07-12 297
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值