国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

K8s部署輕量級日志收集系統(tǒng)EFK(elasticsearch + filebeat + kibana)

這篇具有很好參考價(jià)值的文章主要介紹了K8s部署輕量級日志收集系統(tǒng)EFK(elasticsearch + filebeat + kibana)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

目錄
  • K8s部署EFK(elasticsear + filebeat + kibana)日志收集
      • 一.準(zhǔn)備鏡像
      • 二.搭建Elasticsearch + kibana
          • 1.在可執(zhí)行kubectl命令的服務(wù)器準(zhǔn)備安裝的yml文件
          • 2.在elasticsearch-kibana目錄下創(chuàng)建配置文件elasticsearch.yml
          • 3.創(chuàng)建kibana配置文件kibana.yml
          • 4.在k8s中創(chuàng)建elasticsearch和kibana的配置文件configmap
          • 5.檢查是否有StorageClass
          • 6.創(chuàng)建es-kibana的yaml配置文件: es-statefulset.yaml
          • 7.創(chuàng)建es-kibana cluserip的svc
          • 8.創(chuàng)建es-kibana的nodeport類型的svc
      • 三.配置NFS服務(wù)器
          • 1).安裝NFS服務(wù)
          • 2).k8s注冊nfs服務(wù)
      • 四.創(chuàng)建filebeat服務(wù)
          • 1.創(chuàng)建filebeat主配置文件filebeat.settings.configmap.yml
          • 2.創(chuàng)建Filebeat索引生命周期策略配置文件
          • 3.Filebeat操作權(quán)限
          • 4.Filebeat Daemonset配置文件
      • 五.檢查File beat與es,Kibana是否配置成功
          • 1.首先在側(cè)邊欄找到Stack Management
          • 2.選擇索引管理,查看是否有以filebeat-demo加時(shí)間戳為名的索引
          • 3.創(chuàng)建索引模式
          • 4.查看日志

K8s部署EFK(elasticsear + filebeat + kibana)日志收集

一.準(zhǔn)備鏡像

# 在本機(jī)拉取鏡像
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.17.2
docker pull docker.elastic.co/kibana/kibana:7.17.2
docker pull docker.elastic.co/beats/filebeat:7.17.2

# 對鏡像重打標(biāo)簽 將${harbor_url}和${harbor_project}換成自己的harbor私服地址和目錄
docker tag docker.elastic.co/elasticsearch/elasticsearch:7.17.2 ${harbor_url}/${harbor_project}/elasticsearch:7.17.2
docker tag docker.elastic.co/kibana/kibana:7.17.2 ${harbor_url}/${harbor_project}/kibana:7.17.2
docker tag docker.elastic.co/beats/filebeat:7.17.2 ${harbor_url}/${harbor_project}/filebeat:7.17.2

# 登陸自己的harbor服務(wù)器
docker login -u admin -p ${password} ${harbor_url}

# 上傳至harbor倉庫
docker push ${harbor_url}/${harbor_project}/elasticsearch:7.17.2
docker push ${harbor_url}/${harbor_project}/kibana:7.17.2
docker push ${harbor_url}/${harbor_project}/filebeat:7.17.2

此處的目的是避免某些服務(wù)器從docker外網(wǎng)倉庫拉取不了鏡像,從而導(dǎo)致pod一直運(yùn)行不了,當(dāng)然也可以不用這一步,可以直接使用官方的鏡像地址

如果此處的Harbor目錄是私有的,則需要在k8s集群中創(chuàng)建docker拉取harbor私庫的密鑰

# -n 后是指定的空間,根據(jù)自己的情況去更改,不加-n,默認(rèn)是default空間,因?yàn)楸敬蜤FK安裝在kube-system命名空間下,所以-n為kube-system。
kubectl create secret docker-registry harbor-pull-secret --docker-server=${harbor_url} --docker-username=admin --docker-password=${password} -n kube-system

kube-system為集群默認(rèn)存在的空間,不用手動創(chuàng)建

#檢查密鑰是否創(chuàng)建成功
kubectl get secrets -n kube-system

二.搭建Elasticsearch + kibana

1.在可執(zhí)行kubectl命令的服務(wù)器準(zhǔn)備安裝的yml文件
2.在elasticsearch-kibana目錄下創(chuàng)建配置文件elasticsearch.yml
cluster.name: my-es
node.name: "node-1"
path.data: /usr/share/elasticsearch/data
#path.logs: /var/log/elasticsearch
bootstrap.memory_lock: false
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: ["127.0.0.1", "[::1]"]
cluster.initial_master_nodes: ["node-1"]
#增加參數(shù),使head插件可以訪問es
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type
xpack.monitoring.collection.enabled: true
3.創(chuàng)建kibana配置文件kibana.yml
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: "http://es-kibana-0.es-kibana.kube-system:9200"
kibana.index: ".kibana"
i18n.locale: "zh-CN"
monitoring.ui.elasticsearch.hosts: ["http://es-kibana-0.es-kibana.kube-system:9200"]
monitoring.ui.enabled: true

其中elasticsearch.hosts的地址構(gòu)成為pod名:es-kibana-0,service名:es-kibana,命名空間:kube-system,以及service中配置的端口號9200

4.在k8s中創(chuàng)建elasticsearch和kibana的配置文件configmap
#在編寫yml配置文件的目錄執(zhí)行該命令
kubectl create configmap es-config -n kube-system --from-file=elasticsearch.yml
kubectl create configmap kibana-config -n kube-system --from-file=kibana.yml
5.檢查是否有StorageClass
kubectl get sc
#如下圖所示是有StorageClass的

如果有則跳過第三步,沒有則需要按照第三步配置NFS服務(wù)器

創(chuàng)建es存儲pvc,pv配置文件:es-pvc.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: es-pv-claim
  namespace: kube-system
  labels:
    app: es
spec:
  accessModes:
    - ReadWriteMany
  storageClassName: "nfs-storage"
  resources:
    requests:
      storage: 20Gi
kubectl apply -f es-pvc.yaml
6.創(chuàng)建es-kibana的yaml配置文件: es-statefulset.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
  labels:
    app: es-kibana
  name: es-kibana
  namespace: kube-system
spec:
  replicas: 1
  selector:
    matchLabels:
      app: es-kibana
  serviceName: "es-kibana"
  template:
    metadata:
      labels:
        app: es-kibana
    spec:
      containers:
        - image: [ Harbor私庫地址 ]/elasticsearch:7.17.2
          imagePullPolicy: IfNotPresent
          name: elasticsearch
          resources:
            requests:
              memory: "800Mi"
              cpu: "800m"
            limits:
              memory: "1Gi"
              cpu: "1000m"
          volumeMounts:
            - name: es-config
              mountPath: /usr/share/elasticsearch/config/elasticsearch.yml
              subPath: elasticsearch.yml
            - name: es-persistent-storage
              mountPath: /usr/share/elasticsearch/data
          env:
            - name: TZ
              value: Asia/Shanghai
        - image: [ Harbor私庫地址 ]/kibana:7.17.2
          imagePullPolicy: IfNotPresent
          name: kibana
          env:
            - name: TZ
              value: Asia/Shanghai
          volumeMounts:
            - name: kibana-config
              mountPath: /usr/share/kibana/config/kibana.yml
              subPath: kibana.yml
      volumes:
        - name: es-config
          configMap:
            name: es-config
        - name: kibana-config
          configMap:
            name: kibana-config
        - name: es-persistent-storage
          persistentVolumeClaim:
            claimName: es-pv-claim
      #hostNetwork: true
      #dnsPolicy: ClusterFirstWithHostNet
      nodeSelector:
        kubernetes.io/hostname: k8s-uni-node3
#創(chuàng)建pod
kubectl create -f es-statefulset.yaml

# 查看
kubectl get pod -o wide -n kube-system|grep es

# 使用curl命令測試elasticsearch是否正常
kubectl get pod -o wide -n kube-system|grep es

然后在集群內(nèi)部服務(wù)器上測試是否能通信

當(dāng)然也可以在Rancher上查看pod是否運(yùn)行成功

這個(gè)pod一次運(yùn)行了兩個(gè)容器,分別是kibanah和elasticsearch,并且把elasticsearch容器中的/usr/share/elasticsearch/data目錄下的內(nèi)容,掛載到了es-pv-claim下,我們可以在第三步中的NFS服務(wù)器共享目錄中找到掛載的數(shù)據(jù)。

7.創(chuàng)建es-kibana cluserip的svc
vi es-cluster-none-svc.yaml
apiVersion: v1
kind: Service
metadata:
  labels:
    app: es-kibana
  name: es-kibana
  namespace: kube-system
spec:
  ports:
    - name: es9200
      port: 9200
      protocol: TCP
      targetPort: 9200
    - name: es9300
      port: 9300
      protocol: TCP
      targetPort: 9300
  clusterIP: None
  selector:
    app: es-kibana
  type: ClusterIP
kubectl apply -f es-cluster-none-svc.yaml

這個(gè)配置文件描述了一個(gè)名為 es-kibana 的 Kubernetes Service,該 Service 不分配 Cluster IP(ClusterIP: None),它會將流量路由到具有特定標(biāo)簽 app: es-kibana 的 Pod,這些 Pod 的端口 9200 和 9300 將被公開,并且可以通過相應(yīng)的 targetPort 進(jìn)行訪問。用于集群內(nèi)部訪問

8.創(chuàng)建es-kibana的nodeport類型的svc
vi es-nodeport-svc.yaml
apiVersion: v1
kind: Service
metadata:
  labels:
    app: es-kibana
  name: es-kibana-nodeport-svc
  namespace: kube-system
spec:
  ports:
    - name: 9200-9200
      port: 9200
      protocol: TCP
      targetPort: 9200
      #nodePort: 9200
    - name: 5601-5601
      port: 5601
      protocol: TCP
      targetPort: 5601
      #nodePort: 5601
  selector:
    app: es-kibana
  type: NodePort
kubectl apply -f es-nodeport-svc.yaml

這個(gè)配置文件創(chuàng)建了一個(gè)名為 "es-kibana-nodeport-svc" 的 Kubernetes Service。該 Service 使用 NodePort 類型,允許從集群外部訪問服務(wù)。Service 公開了兩個(gè)端口,9200 和 5601,分別將流量路由到具有相應(yīng)標(biāo)簽的 Pod 的對應(yīng)端口。Pod 的選擇基于標(biāo)簽 app: es-kibana。用于暴露端口,從集群外部訪問es和kibana

外網(wǎng)暴露的端口是k8s隨機(jī)分配的,有兩種辦法可以查看

#在服務(wù)器使用命令查看
kubectl get svc -n kube-system|grep es-kibana

Rancher上查看

可以看到Kibana的端口為31200,然后就能使用nodeip+port訪問

檢查es是否注冊上Kibana,點(diǎn)擊側(cè)邊欄找到堆棧檢測,然后點(diǎn)Nodes

至此,Elasticsearch + kibana已經(jīng)搭建完成,可以進(jìn)行第四步。


三.配置NFS服務(wù)器

1).安裝NFS服務(wù)

Ubuntu:

sudo apt update
sudo apt install nfs-kernel-server

Centos:

yum update
yum -y install nfs-utils
# 創(chuàng)建或使用用已有的文件夾作為nfs文件存儲點(diǎn)
mkdir -p /home/data/nfs/share
vi /etc/exports

寫入如下內(nèi)容

/home/data/nfs/share *(rw,no_root_squash,sync,no_subtree_check)

# 配置生效并查看是否生效
exportfs -r
exportfs
# 啟動rpcbind、nfs服務(wù)
#Centos
systemctl restart rpcbind && systemctl enable rpcbind
systemctl restart nfs && systemctl enable nfs
#Ubuntu
systemctl restart rpcbind && systemctl enable rpcbind
systemctl start nfs-kernel-server && systemctl enable nfs-kernel-server

# 查看 RPC 服務(wù)的注冊狀況
rpcinfo -p localhost
# showmount測試
showmount -e localhost

以上都沒有問題則說明安裝成功

2).k8s注冊nfs服務(wù)

新建storageclass-nfs.yaml文件,粘貼如下內(nèi)容:

## 創(chuàng)建了一個(gè)存儲類
apiVersion: storage.k8s.io/v1
kind: StorageClass                  #存儲類的資源名稱
metadata:
  name: nfs-storage                 #存儲類的名稱,自定義
  annotations:
    storageclass.kubernetes.io/is-default-class: "true"          #注解,是否是默認(rèn)的存儲,注意:KubeSphere默認(rèn)就需要個(gè)默認(rèn)存儲,因此這里注解要設(shè)置為“默認(rèn)”的存儲系統(tǒng),表示為"true",代表默認(rèn)。
provisioner: k8s-sigs.io/nfs-subdir-external-provisioner         #存儲分配器的名字,自定義
parameters:
  archiveOnDelete: "true"  ## 刪除pv的時(shí)候,pv的內(nèi)容是否要備份

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nfs-client-provisioner
  labels:
    app: nfs-client-provisioner
  # replace with namespace where provisioner is deployed
  namespace: default
spec:
  replicas: 1                 #只運(yùn)行一個(gè)副本應(yīng)用
  strategy: #描述了如何用新的POD替換現(xiàn)有的POD
    type: Recreate            #Recreate表示重新創(chuàng)建Pod
  selector: #選擇后端Pod
    matchLabels:
      app: nfs-client-provisioner
  template:
    metadata:
      labels:
        app: nfs-client-provisioner
    spec:
      serviceAccountName: nfs-client-provisioner          #創(chuàng)建賬戶
      containers:
        - name: nfs-client-provisioner
          image: registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/nfs-subdir-external-provisioner:v4.0.2      #使用NFS存儲分配器的鏡像
          volumeMounts:
            - name: nfs-client-root           #定義個(gè)存儲卷,
              mountPath: /persistentvolumes   #表示掛載容器內(nèi)部的路徑
          env:
            - name: PROVISIONER_NAME          #定義存儲分配器的名稱
              value: k8s-sigs.io/nfs-subdir-external-provisioner         #需要和上面定義的保持名稱一致
            - name: NFS_SERVER                                       #指定NFS服務(wù)器的地址,你需要改成你的NFS服務(wù)器的IP地址
              value: 192.168.0.0 ## 指定自己nfs服務(wù)器地址
            - name: NFS_PATH
              value: /home/data/nfs/share  ## nfs服務(wù)器共享的目錄            #指定NFS服務(wù)器共享的目錄
      volumes:
        - name: nfs-client-root           #存儲卷的名稱,和前面定義的保持一致
          nfs:
            server: 192.168.0.0            #NFS服務(wù)器的地址,和上面保持一致,這里需要改為你的IP地址
            path: /home/data/nfs/share               #NFS共享的存儲目錄,和上面保持一致
---
apiVersion: v1
kind: ServiceAccount                 #創(chuàng)建個(gè)SA賬號
metadata:
  name: nfs-client-provisioner        #和上面的SA賬號保持一致
  # replace with namespace where provisioner is deployed
  namespace: default
---
#以下就是ClusterRole,ClusterRoleBinding,Role,RoleBinding都是權(quán)限綁定配置,不在解釋。直接復(fù)制即可。
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: nfs-client-provisioner-runner
rules:
  - apiGroups: [ "" ]
    resources: [ "nodes" ]
    verbs: [ "get", "list", "watch" ]
  - apiGroups: [ "" ]
    resources: [ "persistentvolumes" ]
    verbs: [ "get", "list", "watch", "create", "delete" ]
  - apiGroups: [ "" ]
    resources: [ "persistentvolumeclaims" ]
    verbs: [ "get", "list", "watch", "update" ]
  - apiGroups: [ "storage.k8s.io" ]
    resources: [ "storageclasses" ]
    verbs: [ "get", "list", "watch" ]
  - apiGroups: [ "" ]
    resources: [ "events" ]
    verbs: [ "create", "update", "patch" ]
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: run-nfs-client-provisioner
subjects:
  - kind: ServiceAccount
    name: nfs-client-provisioner
    # replace with namespace where provisioner is deployed
    namespace: default
roleRef:
  kind: ClusterRole
  name: nfs-client-provisioner-runner
  apiGroup: rbac.authorization.k8s.io
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: leader-locking-nfs-client-provisioner
  # replace with namespace where provisioner is deployed
  namespace: default
rules:
  - apiGroups: [ "" ]
    resources: [ "endpoints" ]
    verbs: [ "get", "list", "watch", "create", "update", "patch" ]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: leader-locking-nfs-client-provisioner
  # replace with namespace where provisioner is deployed
  namespace: default
subjects:
  - kind: ServiceAccount
    name: nfs-client-provisioner
    # replace with namespace where provisioner is deployed
    namespace: default
roleRef:
  kind: Role
  name: leader-locking-nfs-client-provisioner
  apiGroup: rbac.authorization.k8s.io

需要修改的就只有服務(wù)器地址和共享的目錄

創(chuàng)建StorageClass

kubectl apply -f storageclass-nfs.yaml

# 查看是否存在
kubectl get sc

四.創(chuàng)建filebeat服務(wù)

1.創(chuàng)建filebeat主配置文件filebeat.settings.configmap.yml
vi filebeat.settings.configmap.yml
apiVersion: v1
kind: ConfigMap
metadata:
  namespace: kube-system
  name: filebeat-config
  labels:
    app: filebeat
data:
  filebeat.yml: |-
    filebeat.inputs:
    - type: container
      enabled: true
      paths:
      - /var/log/containers/*.log
      include_lines: ['ERROR', 'WARN']
      multiline:
        pattern: ^\d{4}-\d{1,2}-\d{1,2}\s\d{1,2}:\d{1,2}:\d{1,2}
        negate: true
        match: after
      processors:
      - add_kubernetes_metadata:
          in_cluster: true
          host: ${NODE_NAME}
          matchers:
          - logs_path:
              logs_path: "/var/log/containers/"

      - add_cloud_metadata:
      - add_kubernetes_metadata:
          matchers:
          - logs_path:
              logs_path: "/var/log/containers/"
      - add_docker_metadata:
    output.elasticsearch:
      hosts: ["http://[k8s節(jié)點(diǎn)ip]:32494"]
      index: "filebeat-demo-%{[agent.version]}-%{+yyyy.MM.dd}"
    setup.template.name: "filebeat-demo"
    setup.template.pattern: "filebeat-demo-*"
    setup.ilm.rollover_alias: "filebeat-demo"
    setup.ilm:
      policy_file: /etc/indice-lifecycle.json
#執(zhí)行
kubectl apply  -f filebeat.settings.configmap.yml

filebeat.inputs: 定義輸入配置,這里配置了從容器日志中收集數(shù)據(jù)。

  • type: 定義輸入類型為 container,表示從容器日志中收集數(shù)據(jù)。

  • enabled: 啟用該輸入配置。

  • paths: 指定要監(jiān)視的日志文件路徑,這里是容器日志路徑。k8s容器的日志默認(rèn)是保存在在服務(wù)器的/var/log/containers/下的。

  • multiline: 多行日志配置,用于將多行日志合并為單個(gè)事件。正則表示如果前面幾個(gè)數(shù)字不是4個(gè)數(shù)字開頭,那么就會合并到一行,解決Java堆棧錯(cuò)誤日志收集問題

  • processors: 定義處理器,用于添加元數(shù)據(jù)。add_kubernetes_metadata:為日志事件添加 Kubernetes 相關(guān)的元數(shù)據(jù)信息,例如 Pod 名稱、命名空間、標(biāo)簽等。

output.elasticsearch: 定義輸出配置,將收集到的日志發(fā)送到 Elasticsearch。

  • hosts: 指定 Elasticsearch 節(jié)點(diǎn)的地址和端口。端口號為第二步安裝es時(shí),nodeport暴露的端口號。
  • indices: 定義索引模式,這里以日期為后綴,創(chuàng)建每日索引。

setup.ilm: 配置索引生命周期管理 (ILM),用于管理索引的生命周期。

  • policy_file:后面定義的是生命周期配置文件的地址

此處禁用了filebeat默認(rèn)的索引格式。默認(rèn)的索引格式為filebeat-%{[agent.version]}-%{+yyyy.MM.dd},在Kibana上呈現(xiàn)的就是filebeat-2023.10.21-000001這樣的索引命名格式,而且默認(rèn)的索引模板和索引生命周期都與index中設(shè)置的filebeat-demo-%{[agent.version]}-%{+yyyy.MM.dd}無關(guān)。故出現(xiàn)的問題就是我們所需的日志內(nèi)容在索引filebeat-demo-%{[agent.version]}-%{+yyyy.MM.dd}中,但是并不能被準(zhǔn)確分片和使用索引生命周期管理。

#相關(guān)模板字段意義

setup.template.name: “filebeat-demo” # 設(shè)置一個(gè)新的模板,模板的名稱為filebeat-demo

setup.template.pattern: “filebeat-demo-*” # 模板匹配那些索引,這里表示以filebeat-demo開頭的所有的索引

setup.ilm.rollover_alias: "filebeat-demo" #索引生命周期寫別名。默認(rèn)值為 filebeat-%{[agent.version]}。設(shè)置此選項(xiàng)將更改別名為filebeat-demo。用以滾動更新大索引文件的分片

同時(shí)該配置過濾了其他info級別的日志,只收集了'ERROR', 'WARN'級別的日志,相關(guān)配置:

include_lines: ['ERROR', 'WARN'] 該配置可根據(jù)實(shí)際使用情況進(jìn)行刪改

下圖為,索引格式配置正確的示范截圖:

2.創(chuàng)建Filebeat索引生命周期策略配置文件

為了防止大量的數(shù)據(jù)存儲,可以利用 indice 的生命周期來配置數(shù)據(jù)保留。 如下所示的文件中,配置成每天或每次超過5GB的時(shí)候就對 indice 進(jìn)行輪轉(zhuǎn),并刪除所有超過30天的 indice 文件。

vi filebeat.indice-lifecycle.configmap.yml
---
apiVersion: v1
kind: ConfigMap
metadata:
  namespace: kube-system
  name: filebeat-indice-lifecycle
  labels:
    app: filebeat
data:
  indice-lifecycle.json: |-
    {
      "policy": {
        "phases": {
          "hot": {
            "actions": {
              "rollover": {
                "max_size": "5GB" ,
                "max_age": "1d"
              }
            }
          },
          "delete": {
            "min_age": "30d",
            "actions": {
              "delete": {}
            }
          }
        }
      }
    }
#執(zhí)行
kubectl apply  -f filebeat.indice-lifecycle.configmap.yml
3.Filebeat操作權(quán)限
vi filebeat.permission.yml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: filebeat
rules:
  - apiGroups: [ "" ]
    resources:
      - namespaces
      - pods
      - nodes
    verbs:
      - get
      - watch
      - list
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: filebeat
subjects:
  - kind: ServiceAccount
    name: filebeat
    namespace: kube-system
roleRef:
  kind: ClusterRole
  name: filebeat
  apiGroup: rbac.authorization.k8s.io
---
apiVersion: v1
kind: ServiceAccount
metadata:
  namespace: kube-system
  name: filebeat
#執(zhí)行
kubectl apply  -f filebeat.permission.yml
  1. ClusterRole:
    • 作用:定義了一個(gè) ClusterRole,它是一種權(quán)限集合,指定了 Filebeat 在集群范圍內(nèi)可以執(zhí)行的操作,如獲?。╣et)、監(jiān)視(watch)、列出(list)等。
    • 權(quán)限:
      • 可以對命名空間執(zhí)行 get、watch、list 操作。
      • 可以對 Pod 執(zhí)行 get、watch、list 操作。
      • 可以對節(jié)點(diǎn)執(zhí)行 get、watch、list 操作。
  2. ClusterRoleBinding:
    • 作用:定義了一個(gè) ClusterRoleBinding,將 ClusterRole (filebeat) 綁定到特定的 ServiceAccount (filebeat)。
    • 意義:將 ClusterRole 與 ServiceAccount 綁定,以使 Filebeat 具有在 Kubernetes 中執(zhí)行相應(yīng)操作的權(quán)限。
  3. ServiceAccount:
    • 作用:定義了一個(gè) ServiceAccount (filebeat),它是 Kubernetes 中用于身份驗(yàn)證和授權(quán)的實(shí)體。
    • 意義:創(chuàng)建了一個(gè)用于 Filebeat 的身份實(shí)體,使得 Filebeat 在 Kubernetes 中能夠以其身份運(yùn)行。
4.Filebeat Daemonset配置文件
vi filebeat.daemonset.yml
---
apiVersion: apps/v1
kind: DaemonSet
metadata:
  namespace: kube-system
  name: filebeat
  labels:
    app: filebeat
spec:
  selector:
    matchLabels:
      app: filebeat
  template:
    metadata:
      labels:
        app: filebeat
    spec:
      serviceAccountName: filebeat
      terminationGracePeriodSeconds: 30
      containers:
        - name: filebeat
          image: [ Harbor私服地址 ]/filebeat:7.17.2
          args: [
              "-c", "/etc/filebeat.yml",
              "-e",
          ]
          env:
            - name: NODE_NAME
              valueFrom:
                fieldRef:
                  fieldPath: spec.nodeName
          securityContext:
            runAsUser: 0
          resources:
            limits:
              memory: 200Mi
            requests:
              cpu: 100m
              memory: 100Mi
          volumeMounts:
            - name: config
              mountPath: /etc/filebeat.yml
              readOnly: true
              subPath: filebeat.yml
            - name: filebeat-indice-lifecycle
              mountPath: /etc/indice-lifecycle.json
              readOnly: true
              subPath: indice-lifecycle.json
            - name: data
              mountPath: /usr/share/filebeat/data
            - name: varlog
              mountPath: /var/log
              readOnly: true
            - name: varlibdockercontainers
              mountPath: /var/lib/docker/containers
              readOnly: true
            - name: dockersock
              mountPath: /var/run/docker.sock
      volumes:
        - name: config
          configMap:
            defaultMode: 0600
            name: filebeat-config
        - name: filebeat-indice-lifecycle
          configMap:
            defaultMode: 0600
            name: filebeat-indice-lifecycle
        - name: varlog
          hostPath:
            path: /var/log
        - name: varlibdockercontainers
          hostPath:
            path: /var/lib/docker/containers
        - name: dockersock
          hostPath:
            path: /var/run/docker.sock
        - name: data
          hostPath:
            path: /var/lib/filebeat-data
            type: DirectoryOrCreate
#執(zhí)行
kubectl apply  -f filebeat.daemonset.yml

volumeMounts配置示意:

  1. name: config:
    • 作用: 創(chuàng)建一個(gè)掛載點(diǎn),將 ConfigMap 中的 filebeat.yml 配置文件掛載到容器中的 /etc/filebeat.yml 路徑。
    • readOnly: 設(shè)置為 true,表示只讀訪問該配置文件。
  2. name: filebeat-indice-lifecycle:
    • 作用: 創(chuàng)建一個(gè)掛載點(diǎn),將 ConfigMap 中的 indice-lifecycle.json 文件掛載到容器中的 /etc/indice-lifecycle.json 路徑。
    • readOnly: 設(shè)置為 true,表示只讀訪問該文件。
  3. name: data:
    • 作用: 創(chuàng)建一個(gè)掛載點(diǎn),將宿主機(jī)的 /var/lib/filebeat-data 目錄掛載到容器中的 /usr/share/filebeat/data 路徑。
    • type: DirectoryOrCreate: 指定掛載類型為目錄,如果該目錄不存在則創(chuàng)建。
  4. name: varlog:
    • 作用: 創(chuàng)建一個(gè)掛載點(diǎn),將宿主機(jī)的 /var/log 目錄掛載到容器中的 /var/log 路徑。
    • readOnly: 設(shè)置為 true,表示只讀訪問該目錄。
  5. name: varlibdockercontainers:
    • 作用: 創(chuàng)建一個(gè)掛載點(diǎn),將宿主機(jī)的 /var/lib/docker/containers 目錄掛載到容器中的 /var/lib/docker/containers 路徑。
    • readOnly: 設(shè)置為 true,表示只讀訪問該目錄。
  6. name: dockersock:
    • 作用: 創(chuàng)建一個(gè)掛載點(diǎn),將宿主機(jī)的 Docker socket 文件 /var/run/docker.sock 掛載到容器中的 /var/run/docker.sock 路徑。

volumes配置示意:

  1. name: config:
    • 作用: 與volumeMounts中的name: config相對應(yīng)。
    • defaultMode: 0600: 表示只有文件所有者可讀寫,其他用戶無權(quán)限。
    • name:filebeat-config對應(yīng)第一步創(chuàng)建的filebeat.settings.configmap.yml中的Configmap的名字
  2. name: filebeat-indice-lifecycle:
    • 作用: 與volumeMounts中的filebeat-indice-lifecycle相對應(yīng)。
    • defaultMode: 0600: 表示只有文件所有者可讀寫,其他用戶無權(quán)限。
    • name:filebeat-indice-lifecycle對應(yīng)第二步創(chuàng)建的filebeat.indice-lifecycle.configmap.yml中的Configmap的名字
  3. name: data
    • 作用:與volumeMounts中的name: data相對應(yīng)。
    • path:需要掛載的目錄路徑
    • type:DirectoryOrCreatea表示容器啟動時(shí)會檢查宿主機(jī)是否存在該目錄,不存在則創(chuàng)建。因?yàn)镕ilebeat在每個(gè)節(jié)點(diǎn)的宿主機(jī)上都會運(yùn)行,所以直接掛載到宿主機(jī)目錄

檢查是否執(zhí)行成功

kubectl get pod -o wide -n kube-system|grep filebeat
#如下圖,全為Running則表示運(yùn)行成功

也可以在Rancher上查看

五.檢查File beat與es,Kibana是否配置成功

1.首先在側(cè)邊欄找到Stack Management
2.選擇索引管理,查看是否有以filebeat-demo加時(shí)間戳為名的索引
3.創(chuàng)建索引模式
4.查看日志

點(diǎn)擊側(cè)邊欄,選擇discover,就能看到Filebeat收集到的容器日志,可以按照自己的需求進(jìn)行日志篩選文章來源地址http://www.zghlxwxcb.cn/news/detail-710607.html

到了這里,關(guān)于K8s部署輕量級日志收集系統(tǒng)EFK(elasticsearch + filebeat + kibana)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • EFK簡單部署收集K8S日志

    EFK簡單部署收集K8S日志

    安裝ES kibana K8S部署

    2024年04月27日
    瀏覽(24)
  • K8S部署EFK(fluentd)收集日志

    首先部署es和kinban es部署 創(chuàng)建es-svc es-statefulset.yaml 開啟es跨域訪問 部署kinban 創(chuàng)建kibana的configmap kinban開啟中文 創(chuàng)建kibana 部署fluentd 創(chuàng)建fluentd-configmap 只收集pod label 標(biāo)記為 logging=true 的日志 注意掛載的日志目錄出現(xiàn)unreadable 說明日志軟連接有問題,無法讀取日志 部署fluentd-dae

    2024年02月16日
    瀏覽(26)
  • ELK 日志系統(tǒng)收集K8s中日志

    ELK 日志系統(tǒng)收集K8s中日志

    ? K8s彈性伸縮性:導(dǎo)致不能預(yù)先確定采集的目標(biāo) ? 容器隔離性:容器的文件系統(tǒng)與宿主機(jī)是隔離,導(dǎo)致日志采集器讀取日志文件受阻。 應(yīng)用程序日志記錄體現(xiàn)方式分為兩類: ? 標(biāo)準(zhǔn)輸出:輸出到控制臺,使用kubectl logs可以看到。 例如 nginx日志是將訪問日志輸出到標(biāo)準(zhǔn)輸出

    2024年02月09日
    瀏覽(25)
  • 云原生之使用Docker部署Teedy輕量級文檔管理系統(tǒng)

    云原生之使用Docker部署Teedy輕量級文檔管理系統(tǒng)

    Teedy是一個(gè)開源的、功能豐富、易于使用和自定義的文檔管理工具,它能夠幫助用戶管理和組織文檔,適用于個(gè)人、小組和組織使用。 創(chuàng)建和編輯文檔:用戶可以使用Markdown格式創(chuàng)建和編輯文檔,還可以添加標(biāo)簽和注釋。 文件上傳和管理:用戶可以上傳和管理文檔、圖片和其

    2024年01月20日
    瀏覽(98)
  • 開源輕量級分布式文件系統(tǒng)FastDFS本地部署并實(shí)現(xiàn)遠(yuǎn)程訪問服務(wù)器

    開源輕量級分布式文件系統(tǒng)FastDFS本地部署并實(shí)現(xiàn)遠(yuǎn)程訪問服務(wù)器

    FastDFS是一個(gè)開源的輕量級分布式文件系統(tǒng),它對文件進(jìn)行管理,功能包括:文件存儲、文件同步、文件訪問(文件上傳、文件下載)等,解決了大容量存儲和負(fù)載均衡的問題。特別適合以文件為載體的在線服務(wù),如相冊網(wǎng)站、視頻網(wǎng)站等等。 FastDFS為互聯(lián)網(wǎng)量身定制,充分考

    2024年02月04日
    瀏覽(116)
  • C#輕量級日志功能(只有一個(gè)類)

    最近在開發(fā)基于.net6的一個(gè)數(shù)據(jù)監(jiān)控軟件,使用其它開源log庫都有點(diǎn)麻煩,就想著對Console.WriteLine()方法重定向到文件,非常方便的實(shí)現(xiàn)日志記錄功能,同時(shí)也不影響之前的代碼結(jié)構(gòu)。 軟件開始的地方要設(shè)置該重定向:

    2024年01月21日
    瀏覽(96)
  • 一種輕量級日志采集解決方案

    前言 目前各大公司生產(chǎn)部署很多都是采用的集群+微服務(wù)的部署方式,如果讓日志散落在各個(gè)主機(jī)上,查詢起來會非常的困難,所以目前我了解到的都是采用的日志中心來統(tǒng)一收集管控日志,日志中心的實(shí)現(xiàn)方案大多基于ELK(即Elasticsearch、Logstash和Kibana三個(gè)開源軟件的縮寫),

    2024年02月07日
    瀏覽(20)
  • k8s容器日志收集方案

    k8s容器日志收集方案

    ? ? log-pilot安裝 ? ? ? ? ? ?

    2024年02月16日
    瀏覽(27)
  • 『SEQ日志』在 .NET中快速集成輕量級的分布式日志平臺

    『SEQ日志』在 .NET中快速集成輕量級的分布式日志平臺

    ??讀完這篇文章里你能收獲到 如何在Docker中部署 SEQ:介紹了如何創(chuàng)建和運(yùn)行 SEQ 容器,給出了詳細(xì)的執(zhí)行操作 如何使用 NLog 接入 .NET Core 應(yīng)用程序的日志:詳細(xì)介紹了 NLog 和 NLog.Seq 來配置和記錄日志的步驟 日志記錄示例:博客提供了一個(gè)簡單的日志記錄示例,展示了如何在

    2024年02月11日
    瀏覽(101)
  • k8s日志收集方案及實(shí)戰(zhàn)

    k8s日志收集方案及實(shí)戰(zhàn)

    k8s 日志收集方案 三種收集方案的優(yōu)缺點(diǎn): 日志收集環(huán)境: k8s日志收集架構(gòu) k8s日志收集所用到的安裝包及軟件: 1、elasticsearch安裝配置 1.1 es安裝 1.2 es配置 1.3 啟動es 2、kibana安裝配置 2.1 kibana安裝 2.2 kibana配置 2.3 啟動kibana 3、zookeeper安裝配置 3.1 zookeeper安裝 下載安裝包,下載

    2024年02月04日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包