kubernetes 部署ELK日志

2019年6月5日10:52:51 發表評論 8,886 ℃

1、下載官方yaml配置文件到master服務器

https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/fluentd-elasticsearch 

主要是以下幾個文件:

es-service.yaml  es-statefulset.yaml  fluentd-es-configmap.yaml  fluentd-es-ds.yaml  kibana-deployment.yaml  kibana-service.yaml

kubernetes 部署ELK日志

#git clone https://github.com/kubernetes/kubernetes.git  #把整個項目克隆到本地


2、注釋kibana-deployment.yaml文件下面兩行,否則會因為無效的證書頒發機構無法訪問 tls: unknown certificate authority

kubernetes 部署ELK日志

         #- name: SERVER_BASEPATH

         #  value: /api/v1/namespaces/kube-system/services/kibana-logging/proxy


3、封裝fluentd-elasticsearch鏡像。

#cd kubernetes/cluster/addons/fluentd-elasticsearch/fluentd-es-image

#docker build -t k8s.gcr.io/fluentd-elasticsearch:v2.2.0 -f Dockerfile .

#把鏡像導出并發送到node節點,如果有私有倉庫,先上傳到私有倉庫,再修改fluentd-es-ds.yaml文件里面的image為自己私有倉庫鏡像。

#docker save k8s.gcr.io/fluentd-elasticsearch:v2.2.0 | bzip2 | pv | ssh root@node1 'cat | docker load'

#docker save k8s.gcr.io/fluentd-elasticsearch:v2.2.0 | bzip2 | pv | ssh root@node2 'cat | docker load'

拉取docker官方對google的容器做的鏡像啟動會報錯如下:這是因為沒有安裝插件。

[error]: config error file="/etc/fluent/fluent.conf" error_class=Fluent::ConfigError error="Unknown filter plugin 'concat'. Run 'gem search -rd fluent-plugin' to find plugins"


4、部署yaml

#節點設置標簽beta.kubernetes.io/fluentd-ds-ready=true,否則fluentd-es無法部署。

#kubectl label node node1 beta.kubernetes.io/fluentd-ds-ready=true

#kubectl label node node2 beta.kubernetes.io/fluentd-ds-ready=true

#cd ..

#kubectl apply -f ./

#kubectl get pod,svc -n kube-system

kubernetes 部署ELK日志


5、配置ingress規則訪問kibana-logging

#cat ingress.yml

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: elk-ingress
  namespace: kube-system
spec:
  rules:
  - host: elk.test.com
    http:
      paths:
      - path: /
        backend:
          serviceName: kibana-logging
          servicePort: 5601

#配置ingress控制器(traefik、Nginx-ingress等)以后就可以配置host訪問elk.test.com

kubernetes 部署ELK日志


6、日志持久化之NFS動態PV

#kubectl delete -f es-statefulset.yaml

按照 Kubernetes使用StorageClass動態生成NFS類型的PV 部署好NFS動態PV

a.更改NFS共享權限

#cat /etc/exports

/var/data 192.168.15.0/24(rw,sync,insecure,no_subtree_check,no_root_squash)

注意:權限不正確,會導致elasticsearch-logging-無法啟動,會報錯:

+ chown -R elasticsearch:elasticsearch /data

chown: changing ownership of '/data': Operation not permitted

b.修改es-statefulset.yaml文件,把默認的emptyDir改成NFS動態pv

注釋默認的volumes

kubernetes 部署ELK日志

在文件后面添加如下內容,注意格式:

volumeClaimTemplates:
  - metadata:
      name: elasticsearch-logging
    spec:
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 1Gi
      storageClassName: nfs-elk

c.啟動測試

#kubectl apply -f  es-statefulset.yaml

kubernetes 部署ELK日志

kubernetes 部署ELK日志

過一段時間后,NFS共享目錄下面已經存儲了日志內容。

[root@Master data]# du -sh kube-system-elasticsearch-logging-elasticsearch-logging-*

277M kube-system-elasticsearch-logging-elasticsearch-logging-0-pvc-05c74e78-fc65-11e8-b19e-000c29731f53

271M kube-system-elasticsearch-logging-elasticsearch-logging-1-pvc-7cbce610-fce5-11e8-981d-000c29731f53

kubernetes 部署ELK日志

【騰訊云】云服務器、云數據庫、COS、CDN、短信等云產品特惠熱賣中

發表評論

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: