• 使用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内容:

     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脚本文件如下:

    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 Id} /bin/bash

    来启动镜像检查(自行替换${Image ID}为实际获得的镜像ID);

    ================================================================================================

    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文件,只起了一个副本,可根据需求调整

     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:

     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

  • 相关阅读:
    NodeJS学习笔记之Connect中间件应用实例
    NodeJS学习笔记之Connect中间件模块(二)
    NodeJS学习笔记之Connect中间件模块(一)
    前端构建工具gulpjs的使用介绍及技巧
    稳定的算法用于对象排序
    aspectJ
    SpringBoot自定义嵌入式Servlet容器
    一个对任务分而治之的java类ForkJoin详解
    VC6.0软件安装教程
    经典算法_杨辉三角,集合法
  • 原文地址:https://www.cnblogs.com/you-you-111/p/5663582.html
Copyright © 2020-2023  润新知