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

news/2024/9/25 7:24:11/

Kibana

Kibana是elasticsearch的可视化界面。

首先创建kibana的服务,yaml文件如下。k8s里的服务分为四种,clusterIP为仅仅为pod分配k8s集群内部的一个虚拟ip,用于集群内的pod通信,而不对外暴露。elasticsearch的服务就是clusterIP。NodePort是对外开放一个端口。所以kibana就是NordPort。其余还有LoadBalancer和ExternalName。

kibana部署代码
[root@master 31efk]# kubectl get svc -n kube-logging31
NAME              TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)             AGE
elasticsearch31   ClusterIP   None          <none>        9200/TCP,9300/TCP   37d
kibana31          NodePort    10.96.72.47   <none>        5601:30159/TCP      33m
[root@master 31efk]# cat kibana_svc.yaml 
apiVersion: v1 
kind: Service 
metadata: name: kibana31 namespace: kube-logging31 labels: app: kibana 
spec: type: NodePortports: - port: 5601 selector: app: kibana

Kibana Pod 通过 ELASTICSEARCH_URL 连接到 Elasticsearch 的 Service,这个 Service 会将流量路由到实际运行的 Elasticsearch Pod。这种通信是在集群内部通过 ClusterIP 完成的,Kibana 不需要知道 Elasticsearch Pod 的具体 IP 地址,只需通过 Service 的 DNS 名称访问它。

[root@master 31efk]# cat kibana_deploy.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:name: kibana31namespace: kube-logging31labels:app: kibana
spec:replicas: 1selector:matchLabels:app: kibanatemplate:metadata:labels:app: kibanaspec:containers:- name: kibanaimage: docker.elastic.co/kibana/kibana:7.2.0imagePullPolicy: IfNotPresentresources:limits:cpu: 1000mrequests:cpu: 200menv:- name: ELASTICSEARCH_URLvalue: http://elasticsearch31.kube-logging31.svc.cluster.local:9200ports:- containerPort: 5601
 调错

在执行的过程中,我们发现kinaba连接不到elasticsearch的服务,查看kibana pod的日志,发现kibana并没有使用我们yaml文件中定义的elasticsearch的服务名称,而是使用了默认的名称:

elasticsearch:9200

[root@master 31efk]# kubectl exec -it kibana31-859c9dcfb7-ptl9z -n kube-logging31 -- cat /usr/share/kibana/config/kibana.yml
#
# ** THIS IS AN AUTO-GENERATED FILE **
## Default Kibana configuration for docker target
server.name: kibana
server.host: "0"
elasticsearch.hosts: [ "http://elasticsearch:9200" ]
xpack.monitoring.ui.container.elasticsearch.enabled

所以在yaml文件中,在ELASTICSEARCH_URL下面,再加一个环境变量:

name:ELASTICSEARCH_HOSTS
value: http://elasticsearch31.kube-logging31,svc.cluster.local:9200
kibana界面

kibana和elasticsearch连接成功

fluentd 

fluentd部署代码
第一部分

首先对fluentd进行角色绑定:

apiVersion: v1
kind: ServiceAccount
metadata:name: fluentdnamespace: kube-logging31labels:app: fluentd
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:name: fluentdlabels:app: fluentd
rules:
- apiGroups:- ""resources:- pods- namespacesverbs:- get- list- watch
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:name: fluentd
roleRef:kind: ClusterRolename: fluentdapiGroup: rbac.authorization.k8s.io
subjects:
- kind: ServiceAccountname: fluentdnamespace: kube-logging31
第二部分

使用deamonset来部署fluentd的pod,而且通过卷挂载的方式把每一个物理节点上的日志和容器日志收集起来:
path: /var/log
path: /var/lib/docker/containers

---
apiVersion: apps/v1
kind: DaemonSet
metadata:name: fluentdnamespace: kube-logging31labels:app: fluentd
spec:selector:matchLabels:app: fluentdtemplate:metadata:labels:app: fluentdspec:serviceAccount: fluentdserviceAccountName: fluentdtolerations:- key: node-role.kubernetes.io/mastereffect: NoSchedulecontainers:- name: fluentdimage: fluent/fluentd-kubernetes-daemonset:v1.4.2-debian-elasticsearch-1.1imagePullPolicy: IfNotPresentenv:- name:  FLUENT_ELASTICSEARCH_HOSTvalue: "elasticsearch31.kube-logging31.svc.cluster.local"- name:  FLUENT_ELASTICSEARCH_PORTvalue: "9200"- name: FLUENT_ELASTICSEARCH_SCHEMEvalue: "http"- name: FLUENTD_SYSTEMD_CONFvalue: disableresources:limits:memory: 512Mirequests:cpu: 100mmemory: 200MivolumeMounts:- name: varlogmountPath: /var/log- name: varlibdockercontainersmountPath: /var/lib/docker/containersreadOnly: trueterminationGracePeriodSeconds: 30volumes:- name: varloghostPath:path: /var/log- name: varlibdockercontainershostPath:path: /var/lib/docker/containers
部署结果
[root@master 31efk]# kubectl get pods -n kube-logging31
NAME                        READY   STATUS    RESTARTS   AGE
elastic-cluster31-0         1/1     Running   0          3h31m
elastic-cluster31-1         1/1     Running   0          3h31m
elastic-cluster31-2         1/1     Running   0          3h31m
fluentd-8255m               1/1     Running   0          3m58s
fluentd-8rwbz               1/1     Running   0          3m58s
fluentd-sffhh               1/1     Running   0          3m58s
kibana31-8669689dbf-mvntd   1/1     Running   0          101m
kibana界面

此时经过一些配置,kibana的界面就可以显示log数据:

这里的索引为logstash,是因为fluentd默认情况下会将日志写入 Elasticsearch 中的索引名称与 Logstash 命名规则一致。


http://www.ppmy.cn/news/1530176.html

相关文章

Python_面向对象属性与方法

Python完全采用了面向对象的思想&#xff0c;是真正面向对象的编程语言&#xff0c;完全支持面向对象的基本功能&#xff0c;例如&#xff1a;继承、多态、封装等。Python中&#xff0c;一切皆对象。我们在前面学习的数据类型、函数等&#xff0c;都是对象。 面向过程和面向对象…

新160个crackme - 060-snake

运行分析 需破解Name和Serial PE分析 32位&#xff0c;未知程序和壳 点击Scan/t按钮外部扫描&#xff0c;发现是C程序 静态分析&动态调试 ida搜索关键字符串&#xff0c;双击进入 发现无法反编译 选中该函数&#xff08;地址&#xff1a;401048 - 401172&#xff09;Edit -…

第十四届蓝桥杯嵌入式国赛

一. 前言 本篇博客主要讲述十四届蓝桥杯嵌入式的国赛题目&#xff0c;包括STM32CubeMx的相关配置以及相关功能实现代码以及我在做题过程中所遇到的一些问题和总结收获。如果有兴趣的伙伴还可以去做做其它届的真题&#xff0c;可去 蓝桥云课 上搜索历届真题即可。 二. 题目概述 …

【ArcGIS微课1000例】0121:面状数据共享边的修改方法

文章目录 一、共享边概述二、快速的修改办法1. 整形共享边2. 修改边3. 概化边缘一、共享边概述 面状数据共享边指的是两个或多个面状数据(如多边形)共同拥有的边界。在地理信息系统(GIS)、三维建模、大数据分析等领域,面状数据共享边是描述面状空间数据拓扑关系的重要组成…

新能源汽车充电桩怎么选?

新能源汽车是我国七大战略性新兴产业之一&#xff0c;已成为汽车产业转型升级的重要推动力。毫无疑问。充电桩作为我国新能源汽车产业链下游的重要环节&#xff0c;在国家政策的大力支持和市场需求的带动下&#xff0c;有着非常广阔的前景。安科瑞叶西平187-06160015 新能源汽…

VsCode C语言 SDL包配置 2024.9

写这篇文章的起因是&#xff0c;最近我需要使用 SDL 包&#xff0c;我懒得下载V-studio ,所以直接在VsCode 里配置C环境。我搞了好几个小时&#xff0c;啥都弄好了&#xff0c;但是一直被下面几个问题缠绕导致demo启动不了&#xff0c;现在我记录一下这奇葩的解决过程。所有路径…

遨游信息技术的浩瀚宇宙:探索MySQL的深邃奥秘

遨游信息技术的浩瀚宇宙&#xff1a;探索MySQL的深邃奥秘 在信息技术的浩瀚宇宙中&#xff0c;MySQL犹如一颗璀璨的星辰&#xff0c;以其稳定、高效、灵活的特性&#xff0c;照亮了无数开发者与数据管理者的前行之路。作为关系型数据库管理系统的佼佼者&#xff0c;MySQL不仅承…

使用数据泵(Data Pump)迁移Oracle数据库数据

目的 将一个oracle数据库实例数据复制给另一个实例 注意事项 sqlplus&#xff08;即在本机linux环境下执行sql&#xff09;、expdp、impdp等命令一般需要切换到oracle用户才能执行 如果你当前是linux的root用户&#xff0c;请切换用户 su - oracle //一般在oracle账号下才能…