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
这里我们进行一些简单的设置,让它能看见一些系统数据。
Management->Index patterns->
然后开启 Include system 后输入 “.kibana_*” 再 Next step 进入下一步
过滤这块选择根据 “timestamp” 时间查询
进入 Discover 查询数据,时间选择 Today 就可以查询系统很多监控数据
END
推荐阅读:
实践
年轻时偷的懒,迟早是要还的。点亮
以上是关于Helm 安装 ElasticSearch & Kibana 日志平台的主要内容,如果未能解决你的问题,请参考以下文章
Helm 安装 ElasticSearch & Kibana 日志平台