k8s~部署EFK框架

EFK,ELK都是目前最爲流行的分佈式日誌框架,主要實現了日誌的收集,存儲,分析等,它能夠與docker容器進行結合,來收集docker的控制檯日誌,就是stdout日誌.css

elasticsearch.master_data_client說明

  默認狀況下,每一個節點都有成爲主節點的資格,也會存儲數據,還會處理客戶端的請求。在一個生產集羣中咱們能夠對這些節點的職責進行劃分。node

  1. 建議集羣中設置 3臺 以上的節點做爲 master 節點node.master: true node.data: false node.ingest:false,這些節點只負責成爲主節點,維護整個集羣的狀態。
  2. 再根據數據量設置一批 data節點node.master: false node.data: true node.ingest:false,這些節點只負責存儲數據,後期提供創建索引和查詢索引的服務,這樣的話若是用戶請求比較頻繁,這些節點的壓力也會比較大
  3. 因此在集羣中建議再設置一批 ingest 節點也稱之爲 client 節點node.master: false node.data: false node.ingest:true,這些節點只負責處理用戶請求,實現請求轉發,負載均衡等功能。

  master節點:普通服務器便可(CPU 內存 消耗通常)
  data 節點:主要消耗磁盤,內存
  client | ingest 節點:普通服務器便可(若是要進行分組聚合操做的話,建議這個節點內存也分配多一點)docker

部署 elasticsearch

爲elasticsearch打鏡像包,使用docker-elasticsearch-kubernetes-master裏的Dockerfile便可,這在創建k8s的pod時須要用到服務器

docker build -t quay.io/pires/docker-elasticsearch-kubernetes:6.1.1 .

能夠依次執行k8s的yaml文件,就能夠部署elasticsearch集羣到k8s了負載均衡

kubectl create -f es-discovery-svc.yaml
kubectl create -f es-svc.yaml
kubectl create -f es-master.yaml
kubectl rollout status -f es-master.yaml
kubectl create -f es-client.yaml
kubectl rollout status -f es-client.yaml
kubectl create -f es-data.yaml
kubectl rollout status -f es-data.yaml

執行成功後,看一下是否啓來了框架

curl http://ip:9200

{
  "name" : "es-client-76fb6ffdf4-nn5b2",
  "cluster_name" : "myesdb",
  "cluster_uuid" : "SEjviHIJQ8-SEloYYcez8w",
  "version" : {
    "number" : "6.1.1",
    "build_hash" : "bd92e7f",
    "build_date" : "2017-12-17T20:23:25.338Z",
    "build_snapshot" : false,
    "lucene_version" : "7.1.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

部署kibana

構建鏡像Dockerfileless

FROM docker.elastic.co/kibana/kibana:6.4.2
RUN bin/kibana-plugin remove x-pack

生成鏡像curl

docker build -t cfontes/kibana-xpack-less:6.4.2 .

部署到k8s裏elasticsearch

kubectl create -f kibana.yaml
kubectl create -f kibana-svc.yaml

注意:在這裏有一個環境變量SERVER_BASEPATH,若是沒有使用代理,這個值須要設爲空,不然你的js,css和其它文件都是404,這塊要注意一下;另外CLUSTER_NAME表示的是elasticsearch集羣的名稱.分佈式

部署fluentd

有兩個yaml文件,mapconfig爲配置文件,另外一個就是deploy文件,咱們先執行配置 ,再運行pod便可

kubectl create -f fluentd-es-configmap.yaml
kubectl create -f fluentd-es-ds.yaml
相關文章
相關標籤/搜索