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

Kubernetes——part10-2 kubernetes 日志收集方案 EFK

在这里插入图片描述

一、EFK

1.1 EFK介绍

EFK为elasticsearch、fluentd、kibana的简称,本案例主要对kubernetes集群日志收集。

1.2 Fluentd介绍

fluentd是一款开源的日志收集工具,其于2016年11月8日被云原生计算基金会录取,并于2019年毕业。

在这里插入图片描述

Fluentd优势:

  • 使用 JSON 进行统一日志记录
    • 其尽可能地把数据结构化为JSON,让下游数据处理容易。
  • 可插拔架构
    • 利用插件,允许对其功能扩展
  • 对计算机资源要求少
    • 其使用c语言和ruby结合编写,需要少量系统资源即可运行。
  • 内置可靠性
    • 支持基于内存和文件的缓冲,防止节点间数据丢失
    • 支持强大故障转移并可设置为高可用性

二、EFK部署

2.1 获取EFK部署资源清单文件

把EFK部署资源清单文件复制到本地主机,本次本地主机主要指k8s master节点
# git clone https://github.com/kubernetes/kubernetes.git
进入目录并查看目录内容
# cd kubernetes/
# ls
api           cluster             docs    LICENSE   Makefile.generated_files  plugin             SUPPORT.md
build         cmd                 go.mod  LICENSES  OWNERS                    README.md          test
CHANGELOG     code-of-conduct.md  go.sum  logo      OWNERS_ALIASES            SECURITY_CONTACTS  third_party
CHANGELOG.md  CONTRIBUTING.md     hack    Makefile  pkg                       staging            vendor
查看分支
# git branch
切换对应版本的分支
# git checkout -b v1.21.10
进入目录并查看目录内容
# cd cluster/addons/fluentd-elasticsearch
# ls
create-logging-namespace.yaml  es-statefulset.yaml        fluentd-es-image        OWNERS
es-image                       fluentd-es-configmap.yaml  kibana-deployment.yaml  podsecuritypolicies
es-service.yaml                fluentd-es-ds.yaml         kibana-service.yaml     README.md

2.2 安装ES

2.2.1 创建命名空间

应用资源清单文件创建命名空间,非必须,可使用资源清单中默认的命名空间 kube-system
# kubectl create namespace logging

2.2.2 部署ES

部署ES,注意部署前的配置
# kubectl apply -f es-statefulset.yaml
应用前,请注释此文件中ClusterIP:None,并修改type类型为:NodePort,再执行
# kubectl apply -f es-service.yaml

2.2.3 查看安装情况

查看ES部署的pod是否运行
# kubectl get pods -n logging
NAME                      READY   STATUS    RESTARTS   AGE
elasticsearch-logging-0   1/1     Running   0          8m
elasticsearch-logging-1   1/1     Running   1          5m50s
查看ES部署后的SVC,验证其访问的方法
# kubectl get svc -n logging
NAME                    TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)                         AGE
elasticsearch-logging   NodePort   10.107.97.124   <none>        9200:31885/TCP,9300:32214/TCP   68s

2.2.4 验证集群是否健康

查看ES集群是否健康,下面状态为健康。
# curl 10.107.97.124:9200/_cat/health?pretty
1640939218 08:26:58 kubernetes-logging green 2 2 6 3 0 0 0 0 - 100.0%

2.3 部署fluentd

2.3.1 部署fluentd

部署前对fluentd configmap进行配置,主要修改其连接ES的地址及对应的端口,此两项根据使用环境的不同,配置也不相同。
# vim fluentd-es-configmap.yaml456   output.conf: |-
457     <match **>
458       @id elasticsearch
459       @type elasticsearch
460       @log_level info
461       type_name _doc
462       include_tag_key true
463       host elasticsearch-logging 修改此处为es主机地址
464       port 9200 使用NodePort时,此处也需要修改对应映射端口
465       logstash_format true
466       <buffer>
应用资源清单文件
# kubectl apply -f fluentd-es-configmap.yaml
修改资源清单文件
# vim fluentd-es-ds.yaml55   selector:56     matchLabels:57       k8s-app: fluentd-es58       version: v3.1.159   template:60     metadata:61       labels:62         k8s-app: fluentd-es63         version: v3.1.164     spec:65       #securityContext:66       #  seccompProfile:67       #    type: RuntimeDefault
应用资源清单文件
# kubectl apply -f fluentd-es-ds.yaml

2.3.2 查看部署状态

查看已部署的组件pod运行情况
# kubectl get pods -n logging
输出结果:
NAME                      READY   STATUS    RESTARTS   AGE
elasticsearch-logging-0   1/1     Running   0          20m
elasticsearch-logging-1   1/1     Running   1          18m
fluentd-es-v3.1.1-2chjb   1/1     Running   0          64s
fluentd-es-v3.1.1-5gpmd   1/1     Running   0          64s

2.4 部署Kibana

2.4.1 部署Kibana

修改资源清单文件
# vim kibana-deployment.yaml18     spec:以下三行注释掉19      # securityContext: 20      #   seccompProfile:21      #     type: RuntimeDefault22       containers:23         - name: kibana-logging24           image: docker.elastic.co/kibana/kibana-oss:7.10.225           resources:26             # need more cpu upon initialization, therefore burstable class27             limits:28               cpu: 1000m29             requests:30               cpu: 100m31           env:32             - name: ELASTICSEARCH_HOSTS33               value: http://elasticsearch-logging.logging.svc.cluster.local.:920034             - name: SERVER_NAME35               value: kibana-logging以下两行注释掉36             #- name: SERVER_BASEPATH37             #  value: /api/v1/namespaces/logging/services/kibana-logging/proxy
应用资源清单文件
# kubectl apply -f kibana-deployment.yaml
修改kibana service资源清单文件,以NodePort类型暴露服务,供K8S集群外用户访问
# vim kibana-service.yamlspec:ports:- port: 5601protocol: TCPtargetPort: uiselector:k8s-app: kibana-loggingtype: NodePort 添加此行内容
应用资源清单文件
# kubectl apply -f kibana-service.yaml

2.4.2 查看Kibana部署状态

查看已部署组件pod运行状态
# kubectl get pods -n logging
NAME                             READY   STATUS    RESTARTS   AGE
elasticsearch-logging-0          1/1     Running   0          25m
elasticsearch-logging-1          1/1     Running   1          22m
fluentd-es-v3.1.1-2chjb          1/1     Running   0          5m45s
fluentd-es-v3.1.1-5gpmd          1/1     Running   0          5m45s
kibana-logging-c46f6b9c5-g9fsl   1/1     Running   0          11s
获取kibana对外提供的主机地址及对应的端口
# kubectl get svc -n logging
NAME                    TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)                         AGE
elasticsearch-logging   NodePort   10.107.97.124   <none>        9200:31885/TCP,9300:32214/TCP   15m
kibana-logging          NodePort   10.99.171.38    <none>        5601:31739/TCP                  7s
在K8S集群任意主机查看是否打开kibana对外的端口(服务类型为NodePort)# ss -anput | grep "31739"
tcp    LISTEN     0      4096      *:31739                 *:*                   users:(("kube-proxy",pid=4569,fd=23))

通过浏览器访问kibana web界面。

在这里插入图片描述

http://www.lryc.cn/news/473117.html

相关文章:

  • mockito+junit完成单元测试
  • 基于web的便捷饭店点餐小程序的设计与实现(lw+演示+源码+运行)
  • CUDA环境安装终极指南——Linux(其它系统也一样)
  • 安卓开发之登录页面(跳转版)
  • solidworks学习6吊环-20241030
  • 数据结构和算法-动态规划(3)-经典问题
  • Java算法-一维前缀和与差分
  • Elasticsearch 安装教程:驾驭数据海洋的星际导航仪
  • 【解决方案】微信小程序如何使用 ProtoBuf 进行 WebSocket 通信
  • 独立游戏开发者面临的挑战与困境
  • KVM 虚拟机Anolis OS 8.9 下利用宝塔面板中的 Docker 配置 Nextcloud + onlyoffice
  • 串口扫盲TTL,TX/TR/GND
  • Python酷库之旅-第三方库Pandas(181)
  • Python数据分析NumPy和pandas(十七、pandas 二进制格式文件处理)
  • matlab计算相关物理参数
  • nmcli、ip、ifcfg配置网络区分方法
  • 第四届智能电力与系统国际学术会议(ICIPS 2024)
  • 区块链样题第4套解析 后端应用开发部分
  • C语言实现408考研真题2016年43题
  • 2024年,Rust开发语言,现在怎么样了?
  • 三种网络配置方法nmcli、ip、ifcfg文件
  • AES_ECB算法C++与Java相互加解密Demo
  • H7-TOOL自制Flash读写保护算法系列,为兆易创新GD32E23X制作使能和解除算法,支持在线烧录和脱机烧录使用(2024-10-29)
  • FFmpeg 深度教程音视频处理的终极工具
  • Java程序设计:spring boot(13)——全局异常与事务控制
  • 金和OA-C6 ApproveRemindSetExec.aspx XXE漏洞复现(CNVD-2024-40568)
  • Redis集群及Redis存储原理
  • 基于Springboot的图书个性化推荐系统【源码】+【论文】
  • 科普 | 子母钟系统是什么?网络时钟同步的重要性?
  • 批量删除redis数据【亲测可用】