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

学习笔记五:在k8s中安装EFK组件

在k8s中安装EFK组件

  • 安装elasticsearch
    • 上传压缩包
  • 安装elasticsearch组件
    • 创建kube-logging名称空间
    • 创建headless service服务
    • 创建Storageclass,实现存储类动态供给
    • 创建nfs作为存储的供应商
    • 通过deployment创建pod用来运行nfs-provisioner
    • 更新资源清单文件
  • 安装kibana组件
  • 安装fluentd组件

安装elasticsearch

查看k8s版本

kubectl get node -owide

在这里插入图片描述

上传压缩包

把elasticsearch-7-12-1.tar.gz、fluentd-containerd.tar.gz、 kibana-7-12-1.tar.gz上传到k8snode1机器上,手动解压

ctr -n=k8s.io images import elasticsearch-7-12-1.tar.gz 
ctr -n=k8s.io images import kibana-7-12-1.tar.gz 
ctr -n=k8s.io images import fluentd-containerd.tar.gz

把nfs-subdir-external-provisioner.tar.gz上传到k8snode1上,手动解压。

ctr -n=k8s.io images import nfs-subdir-external-provisioner.tar.gz

把fluentd-containerd.tar.gz上传到k8smaster1机器上,手动解压

ctr -n=k8s.io images import fluentd-containerd.tar.gz

安装elasticsearch组件

创建kube-logging名称空间

cat kube-logging.yaml 
kind: Namespace
apiVersion: v1
metadata:name: kube-logging
kubectl apply -f kube-logging.yaml

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

kubectl get namespaces | grep kube-logging

安装elasticsearch组件

创建headless service服务

cat elasticsearch_svc.yaml 
kind: Service
apiVersion: v1
metadata:name: elasticsearchnamespace: kube-logginglabels:app: elasticsearch
spec:selector:app: elasticsearchclusterIP: Noneports:- port: 9200name: rest- port: 9300name: inter-node
kubectl apply -f elasticsearch_svc.yaml 

查看elasticsearch的service是否创建成功

kubectl get services --namespace=kube-logging

现在已经为 Pod 设置了无头服务和一个稳定的域名.elasticsearch.kube-logging.svc.cluster.local,接下来我们通过 StatefulSet来创建具体的 Elasticsearch的Pod 应用。

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

安装nfs服务,选择k8s集群的k8smaster1节点,k8s集群的k8smaster1节点的ip是192.168.40.110
master和node都安装nfs

yum install nfs-utils -y
systemctl start nfs
systemctl enable nfs.service

在k8smaster1上创建一个nfs共享目录

mkdir /data/v1 -p

编辑/etc/exports文件

vim /etc/exports
/data/v1 192.168.40.0/24(rw,no_root_squash)

加载配置,使配置生效

exportfs -arv
systemctl restart nfs

创建stoorageclass

cat class.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:name: do-block-storage
provisioner: example.com/nfs
kubectl apply -f class.yaml

注:provisioner: example.com/nfs
该值需要和nfs provisioner配置的PROVISIONER_NAME处的value值保持一致

创建nfs作为存储的供应商

创建运行nfs-provisioner需要的sa账号

cat serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:name: nfs-provisioner
kubectl apply -f serviceaccount.yaml

对sa授权 :

kubectl create clusterrolebinding nfs-provisioner-clusterrolebinding --clusterrole=cluster-admin --serviceaccount=default:nfs-provisioner

通过deployment创建pod用来运行nfs-provisioner

通过百度网盘分享的文件:deployment.yaml
链接:https://pan.baidu.com/s/1ZstWt4fBVRLIAi3abIDSJw?pwd=dn6y
提取码:dn6y

vim deployment.yaml

image: registry.cn-beijing.aliyuncs.com/mydlq/nfs-subdir-external-provisioner:v4.0.0
需要修改nfs服务端所在的ip地址,nfs服务端共享的目录

          env:- name: PROVISIONER_NAMEvalue: example.com/nfs- name: NFS_SERVERvalue: 192.168.40.110
#这个需要写nfs服务端所在的ip地址,大家需要写自己安装了nfs服务的机器ip- name: NFS_PATHvalue: /data/v1
#这个是nfs服务端共享的目录volumes:- name: nfs-client-rootnfs:server: 192.168.40.110path: /data/v1
kubectl apply -f deployment.yaml

验证nfs是否创建成功

kubectl get pods | grep nfs
#如异常可查看pod细节
#kubectl get pods -A
#kubectl describe pod nfs-provisioner

显示如下说明创建成功:
在这里插入图片描述

更新资源清单文件

通过百度网盘分享的文件:elasticsearch-statefulset.yaml
链接:https://pan.baidu.com/s/1sSTBqML5ttK-3lOefu-rig?pwd=fxpj
提取码:fxpj

kubectl apply -f elasticsearch-statefulset.yaml

查看是否有3个es-cluster
在kube-logging的名称空间中定义了一个es-cluster的StatefulSet。
然后,我们使用serviceName 字段与我们之前创建的headless ElasticSearch服务相关联。
这样可以确保可以使用以下DNS地址访问StatefulSet中的每个Pod:
es-cluster-[0,1,2].elasticsearch.kube-logging.svc.cluster.local,其中[0,1,2]与Pod分配的序号数相对应。
我们指定3个replicas(3个Pod副本),将selector matchLabels 设置为app: elasticseach。
该.spec.selector.matchLabels和.spec.template.metadata.labels字段必须匹配。

查看es的pod是否创建成功

kubectl get pods -n kube-logging

pod部署完成之后,可以通过REST API检查elasticsearch集群是否部署成功,使用下面的命令将本地端口9200转发到 Elasticsearch 节点(如es-cluster-0)对应的端口:

kubectl get svc -n kube-logging

安装kibana组件

通过百度网盘分享的文件:kibana.yaml
链接:https://pan.baidu.com/s/1VmsJ8-NQKozZqteNQRfSOA?pwd=j9lq
提取码:j9lq

cat kibana.yaml 
kubectl apply -f kibana.yaml

检查kibana

kubectl get pods -n kube-logging
kubectl get svc -n kube-logging

修改service的type类型为NodePort:

kubectl edit svc kibana -n kube-logging
type: ClusterIP变成type: NodePort
保存退出
kubectl get svc -n kube-logging

在浏览器中打开http://<k8s集群任意节点IP>:32462即可,如果看到如下欢迎界面证明 Kibana 已经成功部署到了Kubernetes集群之中。
在这里插入图片描述

安装fluentd组件

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

cat fluentd.yaml 

通过百度网盘分享的文件:fluentd.yaml
链接:https://pan.baidu.com/s/1PHNeM3mSxb9BjplsBZecSw?pwd=9ih7
提取码:9ih7

kubectl apply -f fluentd.yaml
kubectl get pods -n kube-logging

Fluentd 启动成功后,我们可以前往 Kibana 的 Dashboard 页面中,点击左侧的Discover,可以看到如下配置页面:在这里插入图片描述

在这里插入图片描述

在这里可以配置我们需要的 Elasticsearch 索引,前面 Fluentd 配置文件中我们采集的日志使用的是 logstash 格式,这里只需要在文本框中输入logstash-*即可匹配到 Elasticsearch 集群中的所有日志数据,然后点击下一步,进入以下页面:

在这里插入图片描述

点击next step,出现如下

在这里插入图片描述

选择@timestamp,创建索引
点击左侧的discover,可看到如下

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Java多商户新零售超市外卖商品系统
  • Project Euler_Problem 587_Concave Triangle (背包问题)
  • 力扣399.除法求值
  • Python 日志处理分析简介
  • AD交互式布局以及快捷键的设置
  • 内网穿透原理,免费内网穿透(简单使用),公网主动访问内网。
  • 【Python机器学习】利用AdaBoost元算法提高分类性能——在数据集上应用AdaBoost
  • 【EI会议征稿通知】第六届光电科学与材料国际学术会议 (ICOSM 2024)
  • Unity补完计划 之Tilemap
  • 白骑士的Matlab教学基础篇 1.2 MATLAB基础语法
  • 常见VPS服务器附加组件一览
  • 牛客JS题(二十五)Symbol
  • 【OpenCV C++20 学习笔记】给图片加边框-copyMakeBorder
  • Flink开发语言使用java还是Scala合适
  • C#中的Hangfire和Quartz.NET 任务调度的区别
  • Java方法详解
  • Redis 中的布隆过滤器
  • Redis字符串类型内部编码剖析
  • vue-cli3搭建项目
  • 初探 Vue 生命周期和钩子函数
  • 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 利用DataURL技术在网页上显示图片
  • 区块链共识机制优缺点对比都是什么
  • 使用API自动生成工具优化前端工作流
  • const的用法,特别是用在函数前面与后面的区别
  • ​Python 3 新特性:类型注解
  • ​数据链路层——流量控制可靠传输机制 ​
  • # 达梦数据库知识点
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • (2024)docker-compose实战 (9)部署多项目环境(LAMP+react+vue+redis+mysql+nginx)
  • (待修改)PyG安装步骤
  • (附源码)c#+winform实现远程开机(广域网可用)
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (六)Flink 窗口计算
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (推荐)叮当——中文语音对话机器人
  • (一)Linux+Windows下安装ffmpeg
  • (转)EXC_BREAKPOINT僵尸错误
  • .mysql secret在哪_MYSQL基本操作(上)
  • .NET 4.0中的泛型协变和反变
  • .NET教程 - 字符串 编码 正则表达式(String Encoding Regular Express)
  • [ web基础篇 ] Burp Suite 爆破 Basic 认证密码
  • [1181]linux两台服务器之间传输文件和文件夹
  • [12] 使用 CUDA 进行图像处理
  • [16/N]论得趣
  • [2019.2.28]BZOJ4033 [HAOI2015]树上染色
  • [23] 4K4D: Real-Time 4D View Synthesis at 4K Resolution
  • [4]CUDA中的向量计算与并行通信模式
  • [AIGC] Spring Interceptor 拦截器详解
  • [Algorithm][动态规划][简单多状态DP问题][按摩师][打家劫舍Ⅱ][删除并获得点数][粉刷房子]详细讲解
  • [BUUCTF 2018]Online Tool(特详解)