Helm 安装 ElasticSearch & Kibana 日志平台

Posted DevOps技术栈

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Helm 安装 ElasticSearch & Kibana 日志平台相关的知识,希望对你有一定的参考价值。

目录[-]

一、简介

    1、Helm 简介

    2、ElasticSearch 简介

    3、Kibana 简介

二、提前下载镜像

三、配置应用参数

    1、配置 StorageClass

    2、创建 ElasticSearch 配置参数

    3、创建 Kibana 配置参数

四、Helm 安装 ElasticSearch、Kibana

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

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

五、查看安装的应用资源

    六、访问 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

  • ElasticSearch Chart Github

  • Kibana Chart 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"

imagePullPolicy: IfNotPresent

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: "1000m"
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: "1000m"
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"

imagePullPolicy: IfNotPresent

#---设置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

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

本人已经将 http://chart.mydlq.club 仓库暴露到外网,可以按下方式将仓库加入到自己的 Helm(如果能够连接到 stable 仓库,直接用 stable 仓库中的 chart)

  • –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、方法二:下载到本地安装

(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

Helm 安装 ElasticSearch & Kibana 日志平台

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

Management->Index patterns->

Helm 安装 ElasticSearch & Kibana 日志平台Helm 安装 ElasticSearch & Kibana 日志平台

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

Helm 安装 ElasticSearch & Kibana 日志平台

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

Helm 安装 ElasticSearch & Kibana 日志平台

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

Helm 安装 ElasticSearch & Kibana 日志平台

   
     
     
   

END


Helm 安装 ElasticSearch & Kibana 日志平台推荐阅读:



 实践


Helm 安装 ElasticSearch & Kibana 日志平台


年轻时偷的懒,迟早是要还的。点亮

以上是关于Helm 安装 ElasticSearch & Kibana 日志平台的主要内容,如果未能解决你的问题,请参考以下文章

Helm 安装 ElasticSearch & Kibana 日志平台

Helm安装带验证的ElasticSearch 6.x 7.x 集群

2.使用Helm构建ElasticSearch集群

记录一下工作中遇到的一例kibana无法启动的问题

kubernetes-7:elasticsearch容器化

helm部署Filebeat + ELK