动一下小手点一下赞。谢谢! 你的赞就是我更新的动力。

k8s部署EKF(Elasticsearch + Fluentd + Kibana)

整体流程

步骤

操作

工具/命令

1

创建Elasticsearch资源

kubectl apply -f

2

创建Fluentd资源

kubectl apply -f

3

创建Kibana资源

kubectl apply -f

操作步骤
步骤一:创建Elasticsearch资源
  1. 下载并编辑Elasticsearch配置文件
# elasticsearch.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: elasticsearch
spec:
  replicas: 1
  serviceName: elasticsearch
  selector:
    matchLabels:
      app: elasticsearch
  template:
    metadata:
      labels:
        app: elasticsearch
    spec:
      containers:
      - name: elasticsearch
        image: docker.elastic.co/elasticsearch/elasticsearch:7.14.0
        ports:
        - containerPort: 9200
        env:
        - name: discovery.type
          value: single-node
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  1. 应用Elasticsearch资源
kubectl apply -f elasticsearch.yaml
  • 1.
步骤二:创建Fluentd资源
  1. 下载并编辑Fluentd配置文件
# fluentd.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: fluentd-config
data:
  fluent.conf: |-
    @type forward
    port 24224
    
    @type elasticsearch
    host "elasticsearch"
    port 9200
    logstash_format true
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  1. 创建ConfigMap
kubectl apply -f fluentd.yaml
  • 1.
  1. 创建Fluentd Deployment
# fluentd-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: fluentd
spec:
  replicas: 1
  selector:
    matchLabels:
      app: fluentd
  template:
    metadata:
      labels:
        app: fluentd
    spec:
      containers:
      - name: fluentd
        image: fluent/fluentd-kubernetes-daemonset:v1-debian-elasticsearch
        env:
        - name: FLUENT_ELASTICSEARCH_HOST
          value: "elasticsearch"
        - name: FLUENT_ELASTICSEARCH_PORT
          value: "9200"
        volumeMounts:
        - name: config-volume
          mountPath: /fluentd/etc
      volumes:
      - name: config-volume
        configMap:
          name: fluentd-config
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  1. 部署Fluentd
kubectl apply -f fluentd-deployment.yaml
  • 1.
步骤三:创建Kibana资源
  1. 下载并编辑Kibana配置文件
# kibana.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: kibana
spec:
  replicas: 1
  selector:
    matchLabels:
      app: kibana
  template:
    metadata:
      labels:
        app: kibana
    spec:
      containers:
      - name: kibana
        image: docker.elastic.co/kibana/kibana:7.14.0
        ports:
        - containerPort: 5601
        env:
        - name: ELASTICSEARCH_URL
          value: http://elasticsearch:9200
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  1. 部署Kibana
kubectl apply -f kibana.yaml
  • 1.

通过以上步骤,你已成功部署了Elasticsearch、Fluentd和Kibana在Kubernetes集群中,实现了EFK日志收集和展示的功能。