k8s helm 搭建EFK
k8 helm 搭建EFK
ELK已经被阿里巴巴收购了,目前是国际上的开源软件
例如收集全国各地的日志,以上海为例
上海地区的每台机器都部署一个logstash,然后日志转发给一个总的logstash,logstash日志转发给es的两个客户端es-C,交由es的Master端es-M,再存储在es-D的存储中。对外提供一个接口,kibana可视化对外提供数据展示

但是有个弊端,logstash和es都是java写的,java写的东西很重,起来后内存可能占到300M,而go写的占40-50M左右,如果仅仅为了收集日志,1000台机器上都安装logstash,占用资源太多了,所以我们用go写的flant,目前只有es是java写的,还可以接受
1.1 添加 Google incubator 仓库
同样,这里是外网,国内无法直接访问,我把需要安装的包存放到百度网盘上了
链接:https://pan.baidu.com/s/1jOeXtjpIxfc4obNHhDec-Q
提取码:dfbu
helm repo add incubator http://storage.googleapis.com/kubernetes-charts-incubator
下载后,在各个机器节点上导入镜像
//注意,如果自己下载的efk包,一定确保es和kibana版本一致,精确到小版本,否则无法使用,一定要同一个版本
docker load -i elasticsearch-oss.tar
docker load -i fluentd-elasticsearch.tar
docker load -i kibanaoss.tar
2.1 安装es
kubectl create ns efk
cd charts/;tar zxvf elasticsearch-1.10.2.tgz
cd elasticsearch;vim values.yaml
appVersion: "6.4.2"
image:
  repository: "docker.elastic.co/elasticsearch/elasticsearch-oss"
  tag: "6.4.2"
  pullPolicy: "IfNotPresent"
initImage:
  repository: "busybox"
  tag: "latest"
  pullPolicy: "Always"
cluster:
  name: "elasticsearch"
  #这是监控efk各个组件的功能,是收费的,如果没交费需要把这里关闭
  xpackEnable: false
  config: {}
  additionalJavaOpts: ""
  env:
  #master节点不能低于2个,否则无法对外工作
    MINIMUM_MASTER_NODES: "2"
client:
  name: client
  replicas: 2
  serviceType: ClusterIP
  loadBalancerIP: {}
  loadBalancerSourceRanges: {}
  heapSize: "512m"
  antiAffinity: "soft"
  nodeAffinity: {}
  nodeSelector: {}
  tolerations: []
  resources:
    limits:
      cpu: "1"
    requests:
      cpu: "25m"
      memory: "512Mi"
  priorityClassName: ""
  podDisruptionBudget:
    enabled: false
    minAvailable: 1
master:
  name: master
  exposeHttp: false
  replicas: 3
  heapSize: "512m"
  persistence:
  #是否开启持久卷,我们这里不开了,生产中是要打开的
    enabled: false
    accessMode: ReadWriteOnce
    name: data
    size: "4Gi"
  antiAffinity: "soft"
  nodeAffinity: {}
  nodeSelector: {}
  tolerations: []
  resources:
    limits:
      cpu: "1"
    requests:
      cpu: "25m"
      memory: "512Mi"
  priorityClassName: ""
  podDisruptionBudget:
    enabled: false
  updateStrategy:
    type: OnDelete
data:
  name: data
  exposeHttp: false
  replicas: 2
  heapSize: "1536m"
  persistence:
    enabled: false
    accessMode: ReadWriteOnce
    name: data
    size: "30Gi"
  terminationGracePeriodSeconds: 3600
  antiAffinity: "soft"
  nodeAffinity: {}
  nodeSelector: {}
  tolerations: []
  resources:
    limits:
      cpu: "1"
    requests:
      cpu: "25m"
      memory: "1536Mi"
  priorityClassName: ""
  podDisruptionBudget:
    enabled: false
    maxUnavailable: 1
  updateStrategy:
    type: OnDelete
extraInitContainers: |
helm fetch incubator/elasticsearch
helm  install --name els1 --namespace=efk -f values.yaml incubator/elasticsearch
kubectl  run cirror-$RANDOM --rm -it --image=cirros -- /bin/sh
	curl Elasticsearch:Port/_cat/nodes
2.1 部署 Fluentd
helm fetch stable/fluentd-elasticsearch
vim  values.yaml
	# 更改其中 Elasticsearch 访问地址
helm install --name flu1 --namespace=efk -f values.yaml stable/fluentd-elasticsearch
3.1 部署 kibana
helm fetch stable/kibana --version 0.14.8
helm install --name kib1 --namespace=efk -f values.yaml stable/kibana --version 0.14.8
本文来自博客园,作者:liwenchao1995,转载请注明原文链接:https://www.cnblogs.com/liwenchao1995/p/16558133.html
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号