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界面。
相关文章:

Kubernetes——part10-2 kubernetes 日志收集方案 EFK
一、EFK 1.1 EFK介绍 EFK为elasticsearch、fluentd、kibana的简称,本案例主要对kubernetes集群日志收集。 1.2 Fluentd介绍 fluentd是一款开源的日志收集工具,其于2016年11月8日被云原生计算基金会录取,并于2019年毕业。 Fluentd优势&…...

mockito+junit完成单元测试
一:单元测试的特点 配合断言使用(可以杜绝System.out)可以重复执行不依赖环境不会对数据产生影响spring的上下文环境不是必须的一般都需要配合mock类框架来实现 二:常用的mock类框架 mockito 官网:Mockito framew…...

基于web的便捷饭店点餐小程序的设计与实现(lw+演示+源码+运行)
摘 要 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对高校教师成果信息管理混乱,出错率高,信息安全…...

CUDA环境安装终极指南——Linux(其它系统也一样)
文章目录 前言检查驱动配置nvcc安装cudnn完活 前言 不用看其它文章了,这篇文章保你不踩任何坑,安装方法简单快速 检查驱动 检查驱动是否安装,输入以下命令 nvidia-smi如果驱动已经安装,则可跳过此步,否则ÿ…...

安卓开发之登录页面(跳转版)
目录 前言:基础夯实:效果展示:核心代码:网盘源码: 前言: 熟悉安卓开发的基础知识,了解,弹窗,两个页面进行跳转,页面的布局,按钮,文本…...

solidworks学习6吊环-20241030
solidworks学习6吊环 图 1 使用到的命名:拉伸曲面,旋转曲面,镜像实体,剪裁曲面, 前视基准面绘制 图 2 绘制旋转轴 图 3 旋转曲面 图 4 上视基准面绘制,标准圆边尺寸的时候需要按住shift键标注&#x…...

数据结构和算法-动态规划(3)-经典问题
动态规划常见问题 打家劫舍 题目 [力扣198] 198. 打家劫舍 - 力扣(LeetCode) 题目描述 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&…...

Java算法-一维前缀和与差分
一、一维前缀和 ① 什么是一维前缀和? 📚 其实通过名字就能知道" 一维前缀和 "的意思: 通过一个一维数组"arr1"而创建的另一个一维数组"arr2","arr2"的每一个元素都是"arr1"…...

Elasticsearch 安装教程:驾驭数据海洋的星际导航仪
目录 一、准备工作1. ES的下载 二、安装步骤三、注意事项四、启动报错1. org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root2. max virtual memory areas vm.max_map_count [65530] is too low, increase to at l…...

【解决方案】微信小程序如何使用 ProtoBuf 进行 WebSocket 通信
前言 故事背景 简单说下背景,项目中需要用 ProtoBuf 协议转换请求参数,并通过 WebSocket 进行双向通信。重点!一个是 web端(Vue3 TS),一个是微信小程序端(原生 JS)。 剧情发展 …...

独立游戏开发者面临的挑战与困境
在当今竞争激烈的游戏市场中,独立游戏开发者面临着诸多挑战与困境。从游戏版号申请到游戏被抄袭,再到产品同质化以及流量获取难题,乃至外包内卷现象,每一个环节都考验着开发者的智慧与毅力。以下是对这些挑战与闲境的详细分析。 …...

KVM 虚拟机Anolis OS 8.9 下利用宝塔面板中的 Docker 配置 Nextcloud + onlyoffice
第一部分:安装配置 nextcloud 准备 (1)启动一个 Anolis OS 8.9 虚拟机,见下图。该虚拟机为 anlisos8…0.2 虚拟机的 ssh、hostname 、IP地址都已配置好。 (2)宝塔面板也已安装好docker 一、环境 do…...
串口扫盲TTL,TX/TR/GND
1. 串口扫盲TTL,TX/TR/GND 1. 串口扫盲TTL,TX/TR/GND 1.1. TTL1.2. USB转TTL1.3. 串口通信1.4. 引脚缩写1.5. 参考资料 1.1. TTL TX(TXD) 来源于 Transmit 一词,意思为发送,发射RX(RXD) 来源于 Receive 一词 意思为接收,收到GND 地线&…...

Python酷库之旅-第三方库Pandas(181)
目录 一、用法精讲 836、pandas.api.types.is_file_like函数 836-1、语法 836-2、参数 836-3、功能 836-4、返回值 836-5、说明 836-6、用法 836-6-1、数据准备 836-6-2、代码示例 836-6-3、结果输出 837、pandas.api.types.is_list_like函数 837-1、语法 837-2、…...

Python数据分析NumPy和pandas(十七、pandas 二进制格式文件处理)
以二进制格式存储(或序列化)数据的一种简单方法是使用 Python 的内置 pickle 模块。同时,pandas 构造的对象都有一个 to_pickle 方法,该方法以 pickle 格式将数据写入磁盘。 我们先把之前示例用到的ex1.csv文件加载到pandas对象中…...
matlab计算相关物理参数
function Rx1Jetfire1_1(di,Ct,Tf,Tj,alpha,Ma,Mf,RH,P0,P,k,Cd,elta,deltaHc,tau,directory) % 一共15个独立变量,为了方便输入修改,所有变量存入Jetfire1_1excel表, % dj为孔口直径,m;Ct为燃料空气混合摩尔系数,可…...
nmcli、ip、ifcfg配置网络区分方法
文章目录 一、检查NetworkManager状态使用nmcli命令:检查NetworkManager服务状态: 二、检查ip命令的使用三、检查ifcfg文件查看/etc/sysconfig/network-scripts/目录:查看/etc/network/interfaces文件(针对Debian系)&a…...

第四届智能电力与系统国际学术会议(ICIPS 2024)
文章目录 一、会议详情二、重要信息三、大会介绍四、出席嘉宾五、征稿主题六、咨询 一、会议详情 二、重要信息 大会官网:https://ais.cn/u/vEbMBz提交检索:EI Compendex、IEEE Xplore、Scopus 三、大会介绍 四、出席嘉宾 五、征稿主题 如想"投稿…...
区块链样题第4套解析 后端应用开发部分
任务3-2:区块链应用后端开发 使用JAVA-SDK与区块链进行交互,通过solc2Java工具将Solidity智能合约转译为可供Java调用的文件,实现区块链编程。 前言:题目只是单纯考了对于fisco-java-sdk的简单使用 教程参考: 1.这边建议还是学习完JavaWeb课程。 黑马程序员JavaWeb...

C语言实现408考研真题2016年43题
#include <iostream> // 定义分区函数,返回两个子数组之和的差值 int setPartition(int a[], int n) { int pivotkey, low 0, low0 0, high n - 1, high0 n - 1, flag 1, k n / 2, i; int s1 0, s2 0; // 当low等于k-1,…...

华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...

css实现圆环展示百分比,根据值动态展示所占比例
代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...
深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法
深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...

在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

MySQL 知识小结(一)
一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库,分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷,但是文件存放起来数据比较冗余,用二进制能够更好管理咱们M…...
Go 并发编程基础:通道(Channel)的使用
在 Go 中,Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式,用于在多个 Goroutine 之间传递数据,从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...