当前位置: 首页 > article >正文

[单master节点k8s部署]22.构建EFK日志收集平台(一)

数据收集传输

FileBeat

fileBeat是一个轻量级的日志采集的工具,占用资源极少,可靠性高。虽然具备一定的过滤能力,但是能力有限,所以需要搭配其他的工具进行数据传输和分析。

Fluentd

Fluentd是一个用于日志收集、传输和聚合的工具根据,而且在传输过程中,Fluentd能对日志进行格式化、解析和过滤,他的优势是尽可能的用JSON作为日志输出,所以传输工具以及下游的传输线不需要猜测字符串里面的各个字段的类型。

Fluentd的灵活性并不好,资源消耗也不小,在一些小的嵌入式设备上可以安装Fluent Bit。 

Fluentd

FileBeat

日志收集、处理和传输框架日志收集和传输
基于插件的架构,支持多种输入、过滤和输出插件轻量级,专注于日志收集和传输
支持复杂的日志处理、过滤、解析和格式化处理能力有限
插件生态丰富插件较少,主要依赖于Elasticsearch
由于支持插件和处理功能,所以资源占用较高资源占用较少
适合复杂的日志管道和需要进行实时处理的场景适合轻量日志收集
是CNCF的项目,集成了很多云原生工具

是Elastic Stack的一部分,与elasticsearch、kibana集成

Logagent

是一个性能介于FLuentd和FileBeat之间的一个日志收集工具,适合容器和服务器环境,插件有限,与Sematext平台深度集成。

Logstash

数据收集与数据解析过滤,通过强大的额过滤插件,用户可以对原始数据进行结构化处理,例如提取字段、格式化时间戳、删除或添加字段。它适合处理大量数据的场景。Logstash与Elasticsearch紧密结合,适合ELK Stack。

它的致命缺点是性能以及资源消耗,尽管性能在近几年已经提升很多,但是比其他替代者还是慢很多,它的优势是使用Grok工具将非结构化数据解析为结构化和可查的结构数据。另一个痛点是 不支持缓存,有可能造成数据丢失,因此替代方案是将Redis或Kafka作为中心缓冲池。

数据分析

ElasticSearch

免费的分布式开源搜索和分析引擎,是Elastic Stack中的核心组件。

Beats工具:

fileBeat:日志文件收集

packetBeat: 网络数据收集

MetricBeat: 指标收集

WinlogBeat: windows事件收集

AuditBeat: 审计数据收集

HeartBeat: 运行时间监控

搭建

  • 创建命名空间:

创建一个叫kube-logging的命名空间

  • 创建headless-service:

headless service不会像普通service一样进行负载均衡,而是直接将pod的IP地址暴露给dns。假设我们有三个后端的pod(防止裂脑问题),有一个名为elasticsearch的Headless Service,那么DNS表为:

elasticsearch.default.svc.cluster.local -> es-node-0.default.svc.cluster.local
                                      -> es-node-1.default.svc.cluster.local
                                      -> es-node-2.default.svc.cluster.local

这个可以方便我们创建statefulset的一个elasticsearch的服务。 

我们通过如下的yaml文件创建一个headless service,则我们有了一个域名:elastic31.kube-logging31.svc.cluster.local

kind: Service
apiVersion: v1
metadata:
  name: elasticsearch31
  namespace: kube-logging31
  labels:
    app: elasticsearch
spec:
  selector:
    app: elasticsearch
  clusterIP: None
  ports:
    - port: 9200
      name: rest
    - port: 9300
      name: inter-node
  • 创建nfs空间:

在master节点创建一个目录。

 mkdir /data/v1 -p 
[root@xomaster ~]# vim /etc/exports 
/data/v1 192.168.244.128/24(rw,no_root_squash) #加载配置,使配置生效 
[root@master ~]# exportfs -arv 
[root@master ~]# systemctl restart nfs
  • 创建nfs作为存储供应商

首先进行serviceaccount创建和rbac授权:

apiVersion: v1
kind: ServiceAccount
metadata:
  name: nfs-provisioner31
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: nfs-provisioner-runner31
rules:
  - 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"]
  - apiGroups: [""]
    resources: ["services", "endpoints"]
    verbs: ["get"]
  - apiGroups: ["extensions"]
    resources: ["podsecuritypolicies"]
    resourceNames: ["nfs-provisioner31"]
    verbs: ["use"]
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: run-nfs-provisioner31
subjects:
  - kind: ServiceAccount
    name: nfs-provisioner31
    namespace: default
roleRef:
  kind: ClusterRole
  name: nfs-provisioner-runner31
  apiGroup: rbac.authorization.k8s.io
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: leader-locking-nfs-provisioner
rules:
  - apiGroups: [""]
    resources: ["endpoints"]
    verbs: ["get", "list", "watch", "create", "update", "patch"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: leader-locking-nfs-provisioner31
subjects:
  - kind: ServiceAccount
    name: nfs-provisioner31
    namespace: default
roleRef:
  kind: Role
  name: leader-locking-nfs-provisioner31
  apiGroup: rbac.authorization.k8s.io

修改/etc/kubernetes/manifests/kube-apiserver.yaml的内容,添加

- --feature-gates=RemoveSelfLink=false 。

可以看到在修改之前,提供api服务的pod名叫api-server-master,当修改后,发现多了一个api-server的pod,而且是pending状态,因此删除这个pod。

[root@master 31efk]# kubectl get pods -n kube-system
NAME                                       READY   STATUS    RESTARTS          AGE
calico-kube-controllers-677cd97c8d-bqrpr   1/1     Running   0                 65d
calico-node-27c2l                          1/1     Running   176 (7h9m ago)    65d
calico-node-55kpl                          1/1     Running   185 (7h10m ago)   65d
calico-node-flv9r                          1/1     Running   178 (7h9m ago)    65d
coredns-6d8c4cb4d-c7qcr                    1/1     Running   0                 65d
coredns-6d8c4cb4d-vc77w                    1/1     Running   0                 65d
deamonset26-9psp2                          1/1     Running   0                 53d
deamonset26-c967m                          1/1     Running   0                 53d
deamonset26-pq6ns                          1/1     Running   0                 53d
etcd-master                                1/1     Running   0                 65d
kube-apiserver-master                      1/1     Running   1 (58d ago)       65d
kube-controller-manager-master             1/1     Running   10 (5d14h ago)    65d
kube-proxy-2v8x6                           1/1     Running   0                 51d
kube-proxy-45db5                           1/1     Running   0                 51d
kube-proxy-8q8rq                           1/1     Running   0                 51d
kube-scheduler-master                      1/1     Running   3 (5d14h ago)     51d
kube-state-metrics-57794dcf65-wcjkx        1/1     Running   0                 52d
monitoring-grafana-7948df75d9-jrj45        1/1     Running   0                 52d
[root@master 31efk]# vim /etc/kubernetes/manifests/kube-apiserver.yaml 
[root@master 31efk]# vim /etc/kubernetes/manifests/kube-apiserver.yaml 
[root@master 31efk]# kubectl apply -f  /etc/kubernetes/manifests/kube-apiserver.yaml 
pod/kube-apiserver created
[root@master 31efk]# kubectl get pods -n kube-system
NAME                                       READY   STATUS    RESTARTS          AGE
calico-kube-controllers-677cd97c8d-bqrpr   1/1     Running   0                 65d
calico-node-27c2l                          1/1     Running   176 (7h16m ago)   65d
calico-node-55kpl                          1/1     Running   185 (7h17m ago)   65d
calico-node-flv9r                          1/1     Running   178 (7h16m ago)   65d
coredns-6d8c4cb4d-c7qcr                    1/1     Running   0                 65d
coredns-6d8c4cb4d-vc77w                    1/1     Running   0                 65d
deamonset26-9psp2                          1/1     Running   0                 53d
deamonset26-c967m                          1/1     Running   0                 53d
deamonset26-pq6ns                          1/1     Running   0                 53d
etcd-master                                1/1     Running   0                 65d
kube-apiserver                             0/1     Pending   0                 26s
kube-apiserver-master                      1/1     Running   1 (53s ago)       30s
kube-controller-manager-master             1/1     Running   11 (113s ago)     65d
kube-proxy-2v8x6                           1/1     Running   0                 51d
kube-proxy-45db5                           1/1     Running   0                 51d
kube-proxy-8q8rq                           1/1     Running   0                 51d
kube-scheduler-master                      1/1     Running   4 (113s ago)      51d
kube-state-metrics-57794dcf65-wcjkx        1/1     Running   0                 52d
monitoring-grafana-7948df75d9-jrj45        1/1     Running   0                 52d
  • 安装nfs服务:

解压nfs镜像,并且进行deployment配置

kind: Deployment
apiVersion: apps/v1
metadata:
  name: nfs-provisioner31
spec:
  selector:
    matchLabels:
      app: nfs-provisioner31
  replicas: 1
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: nfs-provisioner31
    spec:
      serviceAccount: nfs-provisioner31
      volumes:
       - name: nfs-client-root
         nfs:
           server: 192.168.244.128
           path: /data/v1
      containers:
      - name: nfs-provisioner
        image: registry.cn-hangzhou.aliyuncs.com/open-ali/xianchao/nfs-client-provisioner:v1
        imagePullPolicy: IfNotPresent
        volumeMounts:
         - name: nfs-client-root
           mountPath: /persistentvolumes
        env:
         - name: PROVISIONER_NAME
           value: example.com/nfs
         - name: NFS_SERVER
           value: 92.168.244.128
         - name: NFS_PATH
           value: /data/v1

成功创建了nfs服务:

[root@master 31efk]# kubectl get pods | grep nfs
nfs-provisioner31-648f6c98ff-4qfs8   1/1     Running   0          9m27s
nfs-provisioner31-648f6c98ff-hcx6k   1/1     Running   0          9m27s
  • 创建storageClass

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: do-block-storage
provisioner: example.com/nfs


http://www.kler.cn/a/317734.html

相关文章:

  • 统信UOS开发接口DTK
  • docker更改数据目录
  • Linux网络——网络初识
  • 基于海思soc的智能产品开发(两个图像处理来源)
  • Spring-Webflux + Reactor + Netty 初体验
  • 前端框架大比拼:React.js, Vue.js 及 Angular 的优势与适用场景探讨
  • 网站服务器怎么计算同时在线人数?
  • python基础(1)pyenv安装和对Django使用
  • Python编码系列—Python外观模式:简化复杂系统的快捷方式
  • pytorch--流水线并行
  • pandas外文文档快速入门
  • UNet 眼底血管分割实战教程
  • Python Flask网页开发基本框架
  • 大数据新视界 --大数据大厂之 Vue.js 与大数据可视化:打造惊艳的数据界面
  • 【Java面向对象高级06】static的应用知识:代码块
  • java开发jmeter采样器
  • 【AI写作】介绍 Docker 的基本概念和优势,以及在应用程序开发中的实际应用
  • 目标检测任务中xml标签文件修改
  • 【学习笔记】Transformer架构探讨
  • [ IDE ] SEGGER Embedded Studio for RISC-V
  • C++初阶学习——探索STL奥秘——反向迭代器
  • [Leetcode 543][Easy]-二叉树的直径-递归
  • ubuntu安装StarQuant
  • 【Verilog学习日常】—牛客网刷题—Verilog快速入门—VL22
  • 【Linux】生产者消费者模型:基于阻塞队列,使用互斥锁和条件变量维护互斥与同步关系
  • 高级java每日一道面试题-2024年9月20日-分布式篇-什么是CAP理论?