美文网首页
KubeOperator-基于Helm安装ELK

KubeOperator-基于Helm安装ELK

作者: do_young | 来源:发表于2020-08-08 09:37 被阅读0次

    前置准备

    • 环境确认
      KubeOperator默认安装已经在k8s集群主结点安装了Helm。
      可以在主结点执行命令进行验证。
    helm
    
    image.png
    • 下载镜像
      使用docker指令下载相关镜像
    docker pull docker.elastic.co/logstash/logstash:7.7.1
    docker pull docker.elastic.co/kibana/kibana:7.7.7
    docker pull docker.elastic.co/elasticsearch/elasticsearch:7.7.7
    docker pull docker.elastic.co/beats/metricbeat:7.7.7
    docker pull docker.elastic.co/beats/filebeat:7.7.7
    docker pull docker.elastic.co/apm/apm-server:7.7.7
    

    下载完成以后,确认一下


    image.png
    • 将镜像上传到registry仓库
      KubeOperator默认会安装一个私有docker仓库。
      要将镜像上传到registry仓库,首先将上面的镜像进行名称修改,在原有镜像名称前加上私有仓库地址路径,如下所示:
     docker tag 7f059e3dee67 registry.kubeops.io:8191/docker.elastic.co/logstash/logstash:7.7.1
     docker tag 6de54f813b39 registry.kubeops.io:8191/docker.elastic.co/kibana/kibana:7.7.1
     docker tag 830a894845e3 registry.kubeops.io:8191/docker.elastic.co/docker.elastic.co/elasticsearch/elasticsearch:7.7.1
    ......
    

    然后在结点上登录镜像私仓库用户

    docker login registry.kubeops.io:8191
    
    Username: admin #用户名
    Password: #密码,KubeOperator默认为admin123
    WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
    Configure a credential helper to remove this warning. See
    https://docs.docker.com/engine/reference/commandline/login/#credentials-store
    
    Login Succeeded
    

    登录以后,将镜像提交到私仓中。

     docker push registry.kubeops.io:8191/docker.elastic.co/logstash/logstash:7.7.1
     docker push registry.kubeops.io:8191/docker.elastic.co/kibana/kibana:7.7.1
     docker push registry.kubeops.io:8191/docker.elastic.co/docker.elastic.co/elasticsearch/elasticsearch:7.7.1
    ... ...
    
    • 将ELK部署的charts文件下载到K8S集群主结点。
      elastic官方GIT地址下载helm部署文件。

    我这里使用的是7.7.1版本,所以版本链接地址为7.7.1
    解压压缩包到指定目录下,如:/home/root/helm/helm-charts-7.7

    ELK安装

    查看charts目录,每一个目录及为ELK组件的配置文件。
    关于Helm Charts的说明,可以查看了解。

    image.png

    首先需要安装elasticesearch,其它的可以无序安装。

    • 确认安装配置
      使用以下命令,查看一下默认elasticsearch安装配置
    helm install --dry-run --debug ./elasticsearch
    

    通过查看,对参数不对的地方进行调整,主要是修改./helm-charts/elasticsearch/下的values.xml文件,如:
    镜像 : 因为提交到私库以后,镜像多了私仓前缀,所以要改为

    registry.kubeops.io:8191/docker.elastic.co/elasticsearch/elasticsearch:7.7.1
    主结点数量: 因为是测试环境,主结点一个就可以了。
    工作结点数量:因为是测试环境,两个结点就可以了,没有多大数据量。


    image.png

    其它参数就看情况进行配置就行,修改完成以后执行上的命令试安装一下。

    • 安装
      确认安装配置没问题以后就可以正式安装了,安装命令如下:
    helm install --namespace=elk  --name elasticsearch ./elasticsearc
    

    相关日志如下所示:


    image.png
    • 安装情况查看
      使用命令可以查看安装的情况
    kubectl get all -n elk
    
    image.png

    *删除安装
    如果安装有问题,可以删除安装

    helm delete  --purge elasticsearch
    

    通过以上相同方式,安装kibana以及logstash

    helm install --dry-run --debug ./kibana
    helm install --namespace=elk  --name kibana ./kibana
    helm install --dry-run --debug ./logstash
    helm install --namespace=elk  --name logstash ./logstash
    

    其它组件安装 - cerebro安装

    cerebro可以提供UI界面管理elasticesearch创建的索引文件
    首先下载镜像

    docker pull lmenezes/cerebro:0.9.2
    

    下载charts

    https://kubernetes-charts.storage.googleapis.com/cerebro-1.9.2.tgz
    

    安装

    helm install --dry-run --debug ./cerebro
    helm install --namespace=elk  --name cerebro ./cerebro
    

    其它注意事项

    local-volume

    由于使用rook-ceph 异常比较差,而且很容易出现异常(CPU飙升为100%)。
    所以后续K8S改为local-volume,但基于helm-charts部署的时候,发现master-0以外的结点一直处于pending状态,后面查询对应pod,发现是没有匹配的pv。
    再继续查看,发现除了master-0有创建对应的pv,其它的pod都没有创建对应的pv,所以这个pv需要手动创建一下。
    可以基于自动创建的pv作为参考进行修改:elk/elasticsearch-master-elasticsearch-master-0 。
    相关配置可以考虑以下:

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      annotations:
        pv.kubernetes.io/bound-by-controller: "yes"
      finalizers:
      - kubernetes.io/pv-protection
      name: local-pv-elk1 #pv name
    spec:
      accessModes:
      - ReadWriteOnce
      capacity:
        storage: 100Gi
      claimRef:
        apiVersion: v1
        kind: PersistentVolumeClaim
        name: elasticsearch-master-elasticsearch-master-1 # pvc name
        namespace: elk  # pvc namesapce
      local:
        path: /home/local-volume/elk # k8s node path
      nodeAffinity:
        required:
          nodeSelectorTerms:
          - matchExpressions:
            - key: kubernetes.io/hostname
              operator: In
              values:
              - worker2.mycluster.k8s.com # k8s nodeName
      persistentVolumeReclaimPolicy: Retain
      storageClassName: storageclass-default
      volumeMode: Filesystem
    

    相关文章

      网友评论

          本文标题:KubeOperator-基于Helm安装ELK

          本文链接:https://www.haomeiwen.com/subject/enbfdktx.html