tigercn 2020-03-05
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 就可以查询系统很多监控数据
另外一部分,则需要先做聚类、分类处理,将聚合出的分类结果存入ES集群的聚类索引中。数据处理层的聚合结果存入ES中的指定索引,同时将每个聚合主题相关的数据存入每个document下面的某个field下。