k8s~部(bu)署EFK框架(jia)
EFK,ELK都是目前最(zui)為流行的(de)分布(bu)式日(ri)志框(kuang)架,主要實現了日(ri)志的(de)收集,存儲,分析等,它可以與docker容器進行結合,來收集docker的(de)控制(zhi)臺日(ri)志,就是stdout日(ri)志.
elasticsearch.master_data_client說明
默認情況(kuang)下,每個節點(dian)都(dou)有成為主節點(dian)的資格(ge),也會存(cun)儲數據,還會處理客(ke)戶端的請(qing)求。在一個生產(chan)集群中我們可以對這些節點(dian)的職責進(jin)行劃分。
- 建議集群中設置 3臺 以上的節點作為 master 節點node.master: true node.data: false node.ingest:false,這些節點只負責成為主節點,維護整個集群的狀態。
- 再根據數據量設置一批 data節點node.master: false node.data: true node.ingest:false,這些節點只負責存儲數據,后期提供建立索引和查詢索引的服務,這樣的話如果用戶請求比較頻繁,這些節點的壓力也會比較大
- 所以在集群中建議再設置一批 ingest 節點也稱之為 client 節點node.master: false node.data: false node.ingest:true,這些節點只負責處理用戶請求,實現請求轉發,負載均衡等功能。
master節點:普通服務器即可(CPU 內存 消耗一般)
data 節點:主要消耗磁盤,內存
client | ingest 節(jie)點:普通服(fu)務(wu)器即可(ke)(如果(guo)要進行分組聚合操作(zuo)的(de)話,建議這個節(jie)點內存也(ye)分配多(duo)一點)
部署 elasticsearch
為elasticsearch打鏡像包,使用docker-elasticsearch-kubernetes-master里的Dockerfile即可,這(zhe)在建立k8s的pod時需要用(yong)到
docker build -t quay.io/pires/docker-elasticsearch-kubernetes:6.1.1 .
可以依次執行(xing)k8s的yaml文(wen)件,就(jiu)可以部署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
執行成功(gong)后,看一下(xia)是(shi)否(fou)啟來了
curl //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
構建鏡像(xiang)Dockerfile
FROM docker.elastic.co/kibana/kibana:6.4.2
RUN bin/kibana-plugin remove x-pack
生成鏡像
docker build -t cfontes/kibana-xpack-less:6.4.2 .
部署到k8s里
kubectl create -f kibana.yaml
kubectl create -f kibana-svc.yaml
注意:在這里有一個環境變量
SERVER_BASEPATH,如果沒有使用代理,這個值需要設為空,否則你的js,css和其它文件都是404,這塊要注意一下;另外CLUSTER_NAME表(biao)示的(de)是elasticsearch集群的(de)名稱.
部署fluentd
有兩個(ge)yaml文件,mapconfig為配置文件,另一(yi)個(ge)就是deploy文件,我們先執行配置 ,再運行pod即可
kubectl create -f fluentd-es-configmap.yaml
kubectl create -f fluentd-es-ds.yaml