kubernetes集群日志管理系统部署方案

news2024/9/25 11:16:12

安装前请下载各种所需yaml文件

1、安装 elasticsearch 组件

1.1 创建名称空间

#elasticsearch、fluentd、kibana都会安装到此空间下

kubectl apply -f kube-logging.yaml

1.2 查看 kube-logging 名称空间是否创建成功

kubectl get namespaces | grep kube-logging
[root@k8s-master ~]# kubectl get namespaces | grep kube-logging
kube-logging           Active   5h25m
[root@k8s-master ~]# 

1.3 安装 elasticsearch 相关服务

1.3.1 创建 headless service 服务

创建一个 headless service 的 Kubernetes 服务,服务名称是 elasticsearch,这个服务将为 3 个Pod 定义一个 DNS 域。headless service 不具备负载均衡也没有 IP

kubectl apply -f elasticsearch_svc.yaml
kubectl get svc -n kube-logging

[root@k8s-master ~]# kubectl get svc -n kube-logging
NAME            TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)             AGE
elasticsearch   ClusterIP   None            <none>        9200/TCP,9300/TCP   5h26m
kibana          NodePort    10.98.127.253   <none>        5601:30059/TCP      5h23m
[root@k8s-master ~]# 

1.3.2 通过 statefulset 创建 elasticsearch 集群

1.3.2.1 创建 Storageclass,实现存储类动态供给

安装 nfs 服务,选择 k8s 集群的 master1 节点,k8s 集群的 master1 节点的 ip 是192.168.186.128

#所有机器都执行
yum install nfs-utils -y  #yum 安装 nfs 
systemctl start nfs #启动 nfs 服务
systemctl enable nfs.service #设置 nfs 开机自启动 

#在 master1 上创建一个 nfs 共享目录 
mkdir /data/v1 -p 

#编辑/etc/exports 文件
cat >> /etc/exports << EOF
/data/v1 *(rw,no_root_squash)
EOF

#加载配置,使配置生效 
exportfs -arv 
systemctl restart nfs

1.4 创建 nfs 作为存储的供应商

1.4.1、 拉去镜像

#所有node节点拉去此镜像
docker pull registry.cn-hangzhou.aliyuncs.com/759035366/nfs-subdir-external-provisioner:v4.0.0

1.4.2、创建 sa

kubectl apply -f serviceaccount.yaml

1.4.3、对 sa 做 rbac 授权

kubectl apply -f rbac.yaml

1.4.4、创建

kubectl apply -f deployment.yaml
kubectl get pods | grep nfs

1.4.5、创建 stoorageclass

kubectl apply -f class.yaml

1.5 安装 elasticsearch 集群

kubectl apply -f elasticsearch-statefulset.yaml #更新资源清单文件 
kubectl get pods -n kube-logging
kubectl get pv,pvc -n kube-logging

[root@k8s-master ~]# kubectl get pods -n kube-logging
NAME                      READY   STATUS    RESTARTS      AGE
es-cluster-0              1/1     Running   0             5h33m
es-cluster-1              1/1     Running   0             5h33m
es-cluster-2              1/1     Running   0             5h33m
[root@k8s-master ~]# 

[root@k8s-master efk]#  kubectl get pv,pvc -n kube-logging
NAME                                                        CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                            STORAGECLASS       REASON   AGE
persistentvolume/pvc-330d3905-bd55-47a5-b60f-6d2dd19cc59a   10Gi       RWO            Delete           Bound    kube-logging/data-es-cluster-2   do-block-storage            3h8m
persistentvolume/pvc-50ef3671-a617-4b1b-b215-e08b64ad61d8   10Gi       RWO            Delete           Bound    kube-logging/data-es-cluster-1   do-block-storage            3h8m
persistentvolume/pvc-71c98dbe-4dd0-480b-9a5c-0b6937b76c93   10Gi       RWO            Delete           Bound    kube-logging/data-es-cluster-0   do-block-storage            3h8m

NAME                                      STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS       AGE
persistentvolumeclaim/data-es-cluster-0   Bound    pvc-71c98dbe-4dd0-480b-9a5c-0b6937b76c93   10Gi       RWO            do-block-storage   3h8m
persistentvolumeclaim/data-es-cluster-1   Bound    pvc-50ef3671-a617-4b1b-b215-e08b64ad61d8   10Gi       RWO            do-block-storage   3h8m
persistentvolumeclaim/data-es-cluster-2   Bound    pvc-330d3905-bd55-47a5-b60f-6d2dd19cc59a   10Gi       RWO            do-block-storage   3h8m

kubectl port-forward es-cluster-0 9200:9200 --namespace=kube-logging #执行完毕后
在另外的终端窗口中,执行如下请求,新开一个 master1 终端:
curl http://localhost:9200/_cluster/state?pretty

2. 安装 kibana 可视化 UI 界面

kubectl apply -f kibana.yaml  #更新资源清单文件

kubectl edit svc kibana -n kube-logging  
#修改 service 的 type 类型为 NodePort
#把 type: ClusterIP 变成 type: NodePort  保存退出之后

kubectl get pods,svc -n kube-logging #查看暴露端口

[root@k8s-master ~]# kubectl get pods,svc -n kube-logging
NAME                          READY   STATUS    RESTARTS      AGE
pod/es-cluster-0              1/1     Running   0             5h37m
pod/es-cluster-1              1/1     Running   0             5h37m
pod/es-cluster-2              1/1     Running   0             5h37m
pod/kibana-7d99fd798b-6hh6q   1/1     Running   0             5h34m

NAME                    TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)             AGE
service/elasticsearch   ClusterIP   None            <none>        9200/TCP,9300/TCP   5h37m
service/kibana          NodePort    10.98.127.253   <none>        5601:30059/TCP      5h34m
[root@k8s-master ~]# 

在浏览器中打开 http://<任意节点 IP>:暴露端口 即可,如果看到如下欢迎界面证明 Kibana 已经成功

3、安装 fluentd 组件

使用 daemonset 控制器部署 fluentd 组件,这样可以保证集群中的每个节点都可以运行同样fluentd 的 pod 副本,这样就可以收集 k8s 集群中每个节点的日志,在 k8s 集群中,容器应用程序的输入输出日志会重定向到 node 节点里的 json 文件中,fluentd 可以 tail 和过滤以及把日志转换成指定的格式发送到 elasticsearch 集群中。除了容器日志,fluentd 也可以采集 kubelet、kube-proxy、docker 的日志。

kubectl apply -f fluentd.yaml  #更新资源清单文件
kubectl get pods -n kube-logging

[root@k8s-master ~]# kubectl get pods -n kube-logging
NAME                      READY   STATUS    RESTARTS      AGE
es-cluster-0              1/1     Running   0             5h40m
es-cluster-1              1/1     Running   0             5h40m
es-cluster-2              1/1     Running   0             5h40m
fluentd-2nzgv             1/1     Running   0             5h30m
fluentd-gkkx5             1/1     Running   1 (24m ago)   5h30m
kibana-7d99fd798b-6hh6q   1/1     Running   0             5h38m
[root@k8s-master ~]# 

Fluentd 启动成功后,我们可以前往 Kibana 的 Dashboard 页面中 在浏览器中打开 http://<任意节点 IP>:暴露端口 即可,如果看到如下欢迎界面证明 Kibana 已经成功

在这里插入图片描述

4、测试收集 pod 容器日志

登录到 kibana 的控制面板,在 discover 处的搜索栏中输入
kubernetes.pod_name:counter,这将过滤名为的 Pod 的日志数据 counter,如下所示:

cat > pod.yaml << EOF
apiVersion: v1
kind: Pod
metadata:
  name: counter
spec:
  containers:
  - name: count
    image: busybox
    imagePullPolicy: IfNotPresent
    args: [/bin/sh, -c,'i=0; while true; do echo "$i: $(date)"; i=$((i+1)); sleep 1; done']
EOF

kubectl apply -f pod.yaml

在这里插入图片描述

关于使用方面自己去研究!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/838854.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一分钟学会JS获取当前年近五年的年份

先看效果图 上代码&#xff1a; 1、HTML <div><el-date-pickerv-model"queryYearXmgk.startYear"format"yyyy"value-format"yyyy"type"year"placeholder"开始"clearable:picker-options"pickerStartAuditYe…

EventBus 开源库学习(三)

源码细节阅读 上一节根据EventBus的使用流程把实现源码大体梳理了一遍&#xff0c;因为精力有限&#xff0c;所以看源码都是根据实现过程把基本流程看下&#xff0c;中间实现细节先忽略&#xff0c;否则越看越深不容易把握大体思路&#xff0c;这节把一些细节的部分再看看。 …

flutter开发实战-flutter_spinkit实现多种风格进度指示器

flutter开发实战-flutter_spinkit实现多种风格进度指示器 最近开发过程中flutter_spinkit&#xff0c;这个拥有多种种风格加载指示器 一、flutter_spinkit 引入flutter_spinkit # 多种风格的模糊进度指示器flutter_spinkit: ^5.1.0效果示例 const spinkit SpinKitRotatingC…

常见历史漏洞之Thinkphp

常见历史漏洞之Thinkphp 一、介绍二、Thinkphp历史漏洞三、Thinkphp特征发现四、批量漏洞检测五、漏洞总结六、5.0.23版本案例演示 一、介绍 Thinkphp是一种开源框架。是一个由国人开发的支持windows/Unix/Linux等服务器环境的轻量级PHP开发框架。很多cms就是基于thinkphp二次开…

动态规划01: 斐波那契数列模型

第 N 个泰波那契数&#xff08;easy&#xff09; 题目链接: 1137. 第 N 个泰波那契数 题目描述: 泰波那契序列 Tn 定义如下&#xff1a; T0 0, T1 1, T2 1, 且在 n > 0 的条件下 Tn3 Tn Tn1 Tn2 给你整数 n&#xff0c;请返回第 n 个泰波那契数 Tn 的值。 示例 1&…

Vue表格导出Excel数据,自定义表头,使用xlsx-style修饰

继续上篇文章封装导出方法: 效果图&#xff1a; 1、安装xlsx-style依赖&#xff1a; yarn add xlsx-style 2、安装node-polyfill-webpack-plugin依赖&#xff1a; yarn add node-polyfill-webpack-plugin -D 解决报错&#xff1a;jszip is not a constructor 3、配置vue.…

Cilium系列-13-启用XDP加速及Cilium性能调优总结

系列文章 Cilium 系列文章 前言 将 Kubernetes 的 CNI 从其他组件切换为 Cilium, 已经可以有效地提升网络的性能. 但是通过对 Cilium 不同模式的切换/功能的启用, 可以进一步提升 Cilium 的网络性能. 具体调优项包括不限于: 启用本地路由(Native Routing)完全替换 KubeProx…

广西茶叶元宇宙 武隆以茶为媒 推动茶文旅产业融合发展

8月4日&#xff0c;重庆市武隆区启动为期3天的“武隆首届玩茶荟”。本次活动以“中国最美玩茶地——武隆”为主题&#xff0c;吸引众多国内知名专家、茶企和茶馆相关负责人&#xff0c;共同探索武隆茶文旅融合发展新路径和新业态。 广西茶叶元宇宙&#xff1a;广西茶叶元宇宙 …

GD32F103的EXTI中断和EXTI事件

GD32F103的EXTI可以产生中断&#xff0c;也产生事件信号。 GD32F03的EXTI触发源: 1、I/O管脚的16根线&#xff1b; 2、内部模块的4根线(包括LVD、RTC闹钟、USB唤醒、以太网唤醒)。 通过配置GPIO模块的AFIO_EXTISSx寄存器&#xff0c;所有的GPIO管脚都可以被选作EXTI的触发源…

近阶段的一些思考

文章目录 近阶段&#xff08;大约一个多月&#xff09;一直在投入某个开发项目中&#xff0c;没有机会静下来思考一番。对于自己而言&#xff0c;忙碌是一种不好的现象&#xff0c;不应该认为是一件理所当然的事情&#xff0c;应该是一种危机的存在&#xff0c;这种状态持续两周…

关注提示工程—本世纪最重要的技能可能就是与AI人工智能对话

本文目录与主要结构 引言&#xff1a;介绍提示工程的概念和背景&#xff0c;说明为什么它是本世纪最重要的技能之一。 正文&#xff1a; 一、提示工程的基本原理和方法&#xff1a;介绍什么是提示、如何设计和优化提示、如何使用提示与语言模型进行交互。 二、提示工程的应…

Nginx启动报错- Failed to start The nginx HTTP and reverse proxy server

根据日志&#xff0c;仍然出现 “bind() to 0.0.0.0:8888 failed (13: Permission denied)” 错误。这意味着 Nginx 仍然无法绑定到 8888 端口&#xff0c;即使使用 root 权限。 请执行以下操作来进一步排查问题&#xff1a; 确保没有其他进程占用 8888 端口&#xff1a;使用以…

【动态规划】回文子串专题

文章目录 1. 【LeetCode】647. 回文子串1.1 思路讲解1.1.1 方法选择1.1.2 dp表的创建1.1.3 状态转移方程1.1.4 填表顺序 1.2 整体代码 2. 【LeetCode】5. 最长回文串2.1 思路讲解2.2 代码实现 3.【LeetCode】094. 分割回文串II3.1 解题思路3.1.1 创建dp表3.1.2 状态转移方程3.1…

[每日习题]第一个只出现一次的字符 小易的升级之路——牛客习题

hello,大家好&#xff0c;这里是bang___bang_&#xff0c;本篇记录2道牛客习题&#xff0c;第一个只出现一次的字符&#xff08;简单&#xff09;&#xff0c;小易的升级之路&#xff08;简单&#xff09;&#xff0c;如有需要&#xff0c;希望能有所帮助&#xff01; 目录 1️…

继承(Inheritance)

Odoo的一个强大方面是它的模块化。模块专用于业务需求&#xff0c;但模块也可以相互交互。这对于扩展现有模块的功能非常有用。例如&#xff0c;在我们的房地产场景中&#xff0c;我们希望在常规用户视图中直接显示销售人员的财产列表。 在介绍特定的Odoo模块继承之前&#xf…

vue diff 双端比较算法

文章目录 双端指针比较策略命中策略四命中策略二命中策略三命中策略一未命中四种策略&#xff0c;遍历旧节点列表新增情况一新增情况二 删除节点双端比较的优势 双端指针 使用四个变量 oldStartIdx、oldEndIdx、newStartIdx 以及 newEndIdx 分别存储旧 children 和新 children …

26 MFC序列化函数

文章目录 Serialize对于存储文件的序列化 Serialize Serialize 是一个在 MFC (Microsoft Foundation Classes) 中常用的函数或概念。它用于将对象的数据进行序列化和反序列化&#xff0c;便于在不同的场景中保存、传输和恢复对象的状态。 在 MFC 中&#xff0c;Serialize 函数…

如何查询显卡算力

感谢阅读 找到demo_suite此目录下打开控制台 找到demo_suite 一般在 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\extras\demo_suite 这个目录 注意&#xff1a; 1.V后面的数字表示版本&#xff0c;请根据自己的版本进行更改 2.此目录为我的安装目录&#xff0…

python批量检查folder中的文件是否符合要求

目录 问题描述&#xff1a; 问题解决&#xff1a; 问题描述&#xff1a; 最近在手动整理一些文档&#xff0c;要求是每一个folder以ID命名&#xff0c;每一个folder中存放三个内容&#xff08;如下图&#xff09;。如何实现批量检查每一个folder三个内容是否存在&#xff1f;…

【2023年电赛国一必备】E题报告模板--可直接使用

创作不易&#xff0c;麻烦关注CSDN【技术交流、免费报告资料】 通过百度网盘分享的文件&#xff1a;https://pan.baidu.com/s/1aXzYwLMLx_b59abvplUiYw?pwddn71 提取码:dn71 复制这段内容打开「百度网盘APP 即可获取」 任务 图1 任务内容 要求 图2 基本要求内容 图3 发挥部…