Kibana:提供了一个 Web GUI,用户可以浏览和搜索存储在 Elasticsearch 中的日志。
部署EFK
这里采用的是Helm部署的方式
首先新建一个目录
1 2
mkdir efk cd efk
添加Google incubator仓库
1 2 3 4 5 6 7 8 9 10 11 12 13 14
[root@k8s-masterefk]# helm repo add incubator http://storage.googleapis.com/kubernetes-charts-incubator "incubator" has been added to your repositories [root@k8s-masterefk]# helm repo update Hang tight while we grab the latest from your chart repositories... ...Skip local chart repository ...Successfully got an update from the "stable" chart repository ...Successfully got an update from the "incubator" chart repository Update Complete. ⎈ Happy Helming!⎈ [root@k8s-masterefk]# helm repo list NAME URL stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts local http://127.0.0.1:8879/charts incubator http://storage.googleapis.com/kubernetes-charts-incubator
RESOURCES: ==> v1/ConfigMap NAME DATA AGE els1-elasticsearch41s
==> v1/Pod(related) NAME READY STATUS RESTARTS AGE els1-elasticsearch-client-59bcdcbfb7-hwbc20/1 Init:0/101s els1-elasticsearch-data-00/1 Init:0/201s els1-elasticsearch-master-00/1 Init:0/200s
==> v1/Service NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE els1-elasticsearch-client ClusterIP 10.108.189.128 <none> 9200/TCP 1s els1-elasticsearch-discovery ClusterIP None <none> 9300/TCP 1s
==> v1beta1/Deployment NAME READY UP-TO-DATE AVAILABLE AGE els1-elasticsearch-client0/1101s
==> v1beta1/StatefulSet NAME READY AGE els1-elasticsearch-data0/11s els1-elasticsearch-master0/11s
NOTES: The elasticsearch cluster has been installed.
*** Please note that this chart has been deprecated and moved to stable. Going forward please use the stable version of this chart. ***
Elasticsearch can be accessed:
* Within your cluster, at the following DNS name at port 9200:
els1-elasticsearch-client.efk.svc
* From outside the cluster, run these commands in the same shell:
export POD_NAME=$(kubectl get pods --namespace efk -l"app=elasticsearch,component=client,release=els1"-o jsonpath="{.items[0].metadata.name}") echo"Visit http://127.0.0.1:9200 to use Elasticsearch" kubectl port-forward --namespace efk $POD_NAME9200:9200
## 查看pod、svc [root@k8s-masterelasticsearch]# kubectl get pods -n efk NAME READY STATUS RESTARTS AGE els1-elasticsearch-client-59bcdcbfb7-hwbc20/1 Running 043s els1-elasticsearch-data-00/1 Running 043s els1-elasticsearch-master-01/1 Running 042s [root@k8s-masterelasticsearch]# kubectl get svc -n efk NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE els1-elasticsearch-client ClusterIP 10.108.189.128 <none> 9200/TCP 48s els1-elasticsearch-discovery ClusterIP None <none> 9300/TCP 48s
## 验证 [root@k8s-masterk8s-install]# kubectl run cirros-$RANDOM --rm -it --image=cirros -- /bin/sh kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectl run --generator=run-pod/v1 or kubectl create instead. If you don't see a command prompt, try pressing enter. / # curl 10.108.189.128:9200/_cat/nodes 10.244.3.22 16 97 14 1.01 0.97 0.67 i - els1-elasticsearch-client-59bcdcbfb7-hwbc2 10.244.3.23 5 97 10 1.01 0.97 0.67 di - els1-elasticsearch-data-0 10.244.3.24 16 97 8 1.01 0.97 0.67 mi * els1-elasticsearch-master-0 / #
[root@k8s-masterefk]# helm fetch incubator/fluentd-elasticsearch [root@k8s-masterefk]# tar -zxvf fluentd-elasticsearch-2.0.7.tgz [root@k8s-masterefk]# cd fluentd-elasticsearch
vim values.yaml # 更改其中Elasticsearch访问地址`elasticsearch.host` 更改为 els1-elasticsearch-client的clusterip地址 [root@k8s-masterfluentd-elasticsearch]# helm install --name flu2 --namespace=efk -f values.yaml . NAME: flu2 LAST DEPLOYED: Fri Feb 704:24:242020 NAMESPACE: efk STATUS: DEPLOYED
RESOURCES: ==> v1/ClusterRole NAME AGE flu2-fluentd-elasticsearch1s
==> v1/ClusterRoleBinding NAME AGE flu2-fluentd-elasticsearch1s
==> v1/ConfigMap NAME DATA AGE flu2-fluentd-elasticsearch61s
==> v1/DaemonSet NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE flu2-fluentd-elasticsearch11010 <none> 1s
==> v1/Pod(related) NAME READY STATUS RESTARTS AGE flu2-fluentd-elasticsearch-pnsdm0/1 ContainerCreating 01s
==> v1/ServiceAccount NAME SECRETS AGE flu2-fluentd-elasticsearch11s
NOTES: 1. To verify that Fluentd has started, run:
kubectl --namespace=efk get pods -l"app.kubernetes.io/name=fluentd-elasticsearch,app.kubernetes.io/instance=flu2"
THIS APPLICATION CAPTURES ALL CONSOLE OUTPUT AND FORWARDS IT TO elasticsearch . Anything that might be identifying, including things like IP addresses, container images, and object names will NOT be anonymized.