学习笔记五:在k8s中安装EFK组件
创始人
2024-11-05 15:11:25
0

在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: elasticsearch   namespace: kube-logging   labels:     app: elasticsearch spec:   selector:     app: elasticsearch   clusterIP: None   ports:     - port: 9200       name: rest     - port: 9300       name: 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_NAME               value: example.com/nfs             - name: NFS_SERVER               value: 192.168.40.110 #这个需要写nfs服务端所在的ip地址,大家需要写自己安装了nfs服务的机器ip             - name: NFS_PATH               value: /data/v1 #这个是nfs服务端共享的目录       volumes:         - name: nfs-client-root           nfs:             server: 192.168.40.110             path: /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://: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,可看到如下

在这里插入图片描述

相关内容

热门资讯

第十分钟了解!wepokerp... 第十分钟了解!wepokerplus脚本,hardrock作弊,策略教程(有挂总结)1、wepoke...
方式辅助!川娱竞技血战辅助器!... 方式辅助!川娱竞技血战辅助器!有挂有辅助教程(揭秘有挂)1、打开软件启动之后找到中间准星的标志长按。...
第六分钟了解!impoker辅... 第六分钟了解!impoker辅助,拱趴大菠萝挂哪里,法门教程(有挂解惑)1)拱趴大菠萝挂哪里有没有挂...
举措辅助!丰城双剑辅助器是真的... 举措辅助!丰城双剑辅助器是真的吗!开挂是真的有辅助工具(讲解有挂)丰城双剑辅助器是真的吗脚本下载中分...
四分钟了解!约局吧作弊脚本,h... 四分钟了解!约局吧作弊脚本,hhpoker免费透视脚本,技法教程(有挂透明挂)1、很好的工具软件,可...
法门辅助!大当家辅助脚本下载!... 法门辅助!大当家辅助脚本下载!推荐有辅助攻略(果真有挂)一、大当家辅助脚本下载游戏安装教程牌型概率发...
第7分钟了解!wepoker私... 第7分钟了解!wepoker私人局规律,拱趴大菠萝有挂吗,窍门教程(果真有挂);该软件可以轻松地帮助...
教材辅助!浙江游戏大厅模拟器!... 教材辅助!浙江游戏大厅模拟器!揭幕真的有辅助攻略(今日头条)1、超多福利:超高返利,海量正版游戏,浙...
五分钟了解!wepokerpl... 五分钟了解!wepokerplus脚本,佛手大菠萝辅助,办法教程(新版有挂)1、让任何用户在无需佛手...
技法辅助!微友联盟有辅助吗!总... 技法辅助!微友联盟有辅助吗!总结是有辅助技巧(有挂总结)1、玩家可以在微友联盟有辅助吗线上大神俱乐部...