使用kuernetes提供高可用的kibana服务
在kubernetes集群中部署kibana步骤如下:1:kibana安装文件(目前最新版本4.5.1);
2:编写Dockerfile及执行点脚本文件run.sh,制作Kibana镜像;
3:推送镜像至某个Docker源,可以是公网的源,也可以是公司内部源;
4:在kubernetes主节点编写kibana镜像对应的RC文件,service文件;
5:在kubernetes集群中创建kibana service,kibana pods;
6:测试验证。
===============================================================================
1:kibana安装文件(以4.5.1版本为例)
安装包名为:kibana-4.5.1-linux-x64.tar.gz
如无安装包,可以从官网下载安装包,或者直接在Dockerfile中使用wget的方式下载。
===============================================================================
2:编写Dockerfile及执行点脚本文件run.sh,制作Kibana镜像;
由于需要保持与开发测试环境一致,因此这里采用了centos作为基础镜像,镜像较大,可使用ubuntu或alpine作为基础镜像,能显著缩小镜像尺寸。
以下是Dockerfile内容:
https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gifhttps://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif
1 FROM jiakai/centos.base:7.2.1511
2 MAINTAINER JiaKai "jiakai@gridsum.com"
3 ENV KIBANA_VERSION 4.5.1-linux-x64
4 COPY ./kibana-${KIBANA_VERSION}.tar.gz /opt/kibana-${KIBANA_VERSION}.tar.gz
5 RUN tar -xzf /opt/kibana-${KIBANA_VERSION}.tar.gz && \
6 mv -f /kibana-${KIBANA_VERSION} /opt/kibana-${KIBANA_VERSION} && \
7 rm -f /opt/kibana-${KIBANA_VERSION}.tar.gz
8 ADD ./run.sh /run.sh
9 EXPOSE 5601
10 CMD /bin/bash /run.sh
View Code 入口点的shell脚本文件如下:
https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gifhttps://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif
1 #!/bin/sh
2 set -e
3 KIBANA_CONF_FILE="/opt/kibana-${KIBANA_VERSION}/config/kibana.yml"
4 KIBANA_ES_URL=${KIBANA_ES_URL:-http://localhost:9200}
5 sed -i "s;^.*elasticsearch.url:.*;elasticsearch.url: ${KIBANA_ES_URL};" "${KIBANA_CONF_FILE}"
6 exec /opt/kibana-${KIBANA_VERSION}/bin/kibana
View Code 此时可以制作kibana的 Docker镜像:
sudo docker build -t="jiakai/kibana:4.5" .
无误的话将得到名为jiakai/kibana,Tag为4.5的kibana镜像,可以通过
sudo docker run -it ${Image>
来启动镜像检查(自行替换${Image> ================================================================================================
3:推送镜像至某个Docker源,可以是公网的源,也可以是公司内部源
推送镜像之前需要为镜像重新标记(TAG),这里以公司的内部源为例,将制作好的镜像推送至目标源:
sudo docker Tag jiakai/kibana:4.5 10.200.XXX.XXX:5000/gridsum/logstash:4.5
================================================================================================
4:在kubernetes主节点编写kibana镜像对应的RC文件,service文件
由于kibana需要向外界提供web服务,因此需要在kubernetes中对kibana建立RC及service;
下面是RC文件,只起了一个副本,可根据需求调整
https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gifhttps://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif
1 apiVersion: v1
2 kind: ReplicationController
3 metadata:
4 name: kibana
5 namespace: default
6 labels:
7 component: elk
8 name: kibana
9 spec:
10 replicas: 1
11 selector:
12 component: elk
13 name: kibana
14 template:
15 metadata:
16 labels:
17 component: elk
18 name: kibana
19 spec:
20 containers:
21 - name: kibana
22 image: 10.XXX.XXXX.XXX:5000/gridsum/ld/kibana:4.5
23 env:
24 - name: KIBANA_ES_URL
25 value: "http://10.XXX.XXX.XXX:9200"
26 ports:
27 - containerPort: 5601
28 name: http
29 protocol: TCP
View Code 下面是service文件,将自行LB所有的kibana pod:
https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gifhttps://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif
1 apiVersion: v1
2 kind: Service
3 metadata:
4 name: kibana
5 namespace: default
6 labels:
7 component: elk
8 name: kibana
9 spec:
10 type: NodePort
11 ports:
12 - port: 5601
13 targetPort: 5601
14 nodePort: 30601
15 selector:
16 component: elk
17 name: kibana
View Code =================================================================================================
5:在kubernetes集群中创建kibana service,kibana pods
正确建立了kibana的RC及service文件后,即可在kubernetes集群中部署kibana服务对外提供服务;
这里我们在第4步建立的RC文件名为kibana-controller.yaml,建立的service文件名为kibana-service.yaml:
启动kibana service:
kubectl create -f kibana-service.yaml
启动kibana pods:
kubectl create -f kibana-controller.yaml
=================================================================================================
6:测试验证
在kubernetes集群中可以通过
kubectl get pods
查看当前所有pods状态;
通过
kubectl get service
查看当前所有service状态。
确定服务状态及pod状态正常后,即可通过浏览器来访问kibana服务,不过这里要注意一点就是kubernetes集群提供的kibana服务不再是通过5601端口,而是在service文件中定义的30601端口,可访问这个URL测试kubernetes集群提供的kibana服务。
Kibana默认安装路径 /opt/kibana
默认配置文件路径 /opt/kibana/config/kibana.yml
页:
[1]