在k8s集群中搭建elasticsearch+kibana+flentd日志系统

这篇具有很好参考价值的文章主要介绍了在k8s集群中搭建elasticsearch+kibana+flentd日志系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

如何在k8s中搭建efk收集集群日志

在离线环境部署一套日志采集系统我采用的是elasticsearch+kibana+flentd日志系统

首先跟大部分网友一样 创建ns,es的无头服务

yaml文件如下:
apiVersion: v1
kind: Namespace
metadata:
name: logging

kind: Service
apiVersion: v1
metadata:
name: elasticsearch
namespace: logging
labels:
app: elasticsearch
spec:
selector:
app: elasticsearch
clusterIP: None
ports:
- port: 9200
name: rest
- port: 9300
name: inter-node

2.部署es集群

apiVersion: apps/v1 kind: StatefulSet metadata: name: es namespace: logging spec: serviceName: elasticsearch replicas: 3 selector: matchLabels: app: elasticsearch template: metadata: labels: app: elasticsearch spec: nodeSelector: es: log initContainers: - name: increase-vm-max-map image: busybox imagePullPolicy: “IfNotPresent” command: [“sysctl”, “-w”, “vm.max_map_count=262144”] securityContext: privileged: true - name: increase-fd-ulimit image: busybox command: [“sh”, “-c”, “ulimit -n 65536”] securityContext: privileged: true containers: - name: elasticsearch image: docker.elastic.co/elasticsearch/elasticsearch:7.17.1 imagePullPolicy: “IfNotPresent” ports: - name: rest containerPort: 9200 - name: inter containerPort: 9300 resources: limits: cpu: 1000m requests: cpu: 1000m volumeMounts: - name: data mountPath: /usr/share/elasticsearch/data env: - name: cluster.name value: k8s-logs - name: node.name valueFrom: fieldRef: fieldPath: metadata.name - name: cluster.initial_master_nodes value: “es-0,es-1,es-2” - name: discovery.zen.minimum_master_nodes value: “2” - name: discovery.seed_hosts value: “elasticsearch” - name: ES_JAVA_OPTS value: “-Xms512m -Xmx512m” - name: network.host value: “0.0.0.0” vloumes: - name: data hostpath: path: /var/app/ocr 这里我采用的是hostpath的挂载方式,因为我还没有单独划分一块磁盘出来。接下来我们可以通过es的rest接口去测试一下es集群 使用下面的命令将本地端口9200 转发到 Elasticsearch 节点(如es-0)对应的端口: $ kubectl port-forward es-0 9200:9200 --namespace=logging Forwarding from 127.0.0.1:9200 -> 9200 Forwarding from [::1]:9200 -> 9200 另外开启终端执行:$ curl http://localhost:9200/_cluster/state?pretty apiVersion: v1 kind: ConfigMap metadata: namespace: logging name: kibana-config labels: app: kibana data: kibana.yml: | server.name: kibana server.host: “0.0.0.0” i18n.locale: zh-CN #设置默认语言为中文 elasticsearch: hosts: ${ELASTICSEARCH_HOSTS} #es集群连接地址,由于我这都都是k8s部署且在一个ns下,可以直接使用service name连接

apiVersion: v1
kind: Service
metadata:
name: kibana
namespace: logging
labels:
app: kibana
spec:
ports:

  • port: 5601
    type: NodePort
    selector:
    app: kibana

apiVersion: apps/v1
kind: Deployment
metadata:
name: kibana
namespace: logging
labels:
app: kibana
spec:
selector:
matchLabels:
app: kibana
template:
metadata:
labels:
app: kibana
spec:
nodeSelector:
es: log
containers:
- name: kibana
image: harbor.domain.com/efk/kibana:7.17.1
imagePullPolicy: “IfNotPresent”
resources:
limits:
cpu: 1000m
requests:
cpu: 1000m
env:
- name: ELASTICSEARCH_URL
value: http://elasticsearch:9200 #设置为handless service dns地址即可
- name: ELASTICSEARCH_HOSTS
value: http://elasticsearch:9200
ports:
- containerPort: 5601
这里我依旧没有挂载配置文件,通过nortport端口访问 正常能打开

3.以上我是直接参考的其他网友的操作,但是接下来如果还按照他们的配置的话,我发现自己的集群没有办法采集日志到es,浏览官网后发现,不需要自己去配置规则,官网把采集配置已经打包在镜像里面,

于是我的yaml文件只是换个镜像 apiVersion: v1 kind: ServiceAccount metadata: name: fluentd-es namespace: logging labels: k8s-app: fluentd-es kubernetes.io/cluster-service: “true” addonmanager.kubernetes.io/mode: Reconcile

kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: fluentd-es
labels:
k8s-app: fluentd-es
kubernetes.io/cluster-service: “true”
addonmanager.kubernetes.io/mode: Reconcile
rules:

  • apiGroups:
    • “”
      resources:
    • “namespaces”
    • “pods”
      verbs:
    • “get”
    • “watch”
    • “list”

kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: fluentd-es
labels:
k8s-app: fluentd-es
kubernetes.io/cluster-service: “true”
addonmanager.kubernetes.io/mode: Reconcile
subjects:

  • kind: ServiceAccount
    name: fluentd-es
    namespace: logging
    apiGroup: “”
    roleRef:
    kind: ClusterRole
    name: fluentd-es
    apiGroup: “”

apiVersion: apps/v1
kind: DaemonSet
metadata:
name: fluentd-es
namespace: logging
labels:
k8s-app: fluentd-es
kubernetes.io/cluster-service: “true”
addonmanager.kubernetes.io/mode: Reconcile
spec:
selector:
matchLabels:
k8s-app: fluentd-es
template:
metadata:
labels:
k8s-app: fluentd-es
kubernetes.io/cluster-service: “true”
# 此注释确保如果节点被驱逐,fluentd不会被驱逐,支持关键的基于 pod 注释的优先级方案。
annotations:
scheduler.alpha.kubernetes.io/critical-pod: ‘’
spec:
serviceAccountName: fluentd-es
containers:
- name: fluentd-es
image: harbor.domain.com/efk/fluentd:v3.4.0
imagePullPolicy: “IfNotPresent”
env:
- name: FLUENTD_ARGS
value: --no-supervisor -q
resources:
limits:
memory: 500Mi
requests:
cpu: 100m
memory: 200Mi
volumeMounts:
- name: varlog
mountPath: /var/log
- name: varlibdockercontainers
mountPath: /data/docker/containers
readOnly: true
- name: config-volume
mountPath: /etc/fluent/config.
tolerations:
- operator: Exists
terminationGracePeriodSeconds: 30
volumes:
- name: varlog
hostPath:
path: /var/log
- name: varlibdockercontainers
hostPath:
path: /var/lib/docker/containers
- name: config-volume
configMap:
name: fluentd-config
我又发现一个bug,挂载的时候mountpath 跟hostpath目录要保持一致,hostpath路径为docker本地的日志存放位置

4.测试服务

测试的时候发现日志能正常推送,调es的rest接口也能看到索引,但是正常运行二天过后就出现了日志无法发送es的问题,初步判断可能是跟新搭建的es集群有关系,还有kibana照网友安装 会有安全问题,导致没办法把日志吐到es,正好我们公司有公共的es,于是我
在k8s 部署elasticsearch kibana logstash redis,elasticsearch,大数据,搜索引擎
在环境变量里面添加地址跟账号信息,发现可以正常展示日志,而且是实时的,于是改成公共的es,这样还不用我们去维护
建议:还是要以官方文档位置,每个人的环境都是不一样,不能完全照搬别人的搭建思路
参考文件:https://blog.csdn.net/qq_36200932/article/details/123166613文章来源地址https://www.toymoban.com/news/detail-564552.html

到了这里,关于在k8s集群中搭建elasticsearch+kibana+flentd日志系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 容器化(Docker、K8S)部署Elasticsearch + Kibana

    ElasticSearch简介 本次实验目标 实验环境 Docker部署Elasticsearch + Kibana 安装中文分词器插件,配置认证 基本操作 在华为云CCE中部署 使用Logstash进行数据迁移

    2024年01月19日
    浏览(75)
  • k8s使用ECK形式部署elasticsearch+kibana

    在k8s上基于ECK(2.4)部署elasticsearch,简单记录一下,主要是quickstart的快速模式下增加了nodeport端口和可以定义密码的超级管理员账号。不说废话,直接上干货。 参考链接 ECK官网链接: https://www.elastic.co/cn/elastic-cloud-kubernetes ECK快速启动链接: https://www.elastic.co/guide/en/cloud-on-k8s

    2024年02月06日
    浏览(46)
  • k8s部署新版elasticsearch+kibana并配置快照备份

    版本:es 7.17.6 kibana 7.17.6 k8s:1.19.16 Elasticsearch和Kibana是一对强大的开源工具,通常一起使用以构建实时数据分析和可视化解决方案。 Elasticsearch: Elasticsearch是一个分布式、高性能的实时搜索和分析引擎。它构建在开源搜索引擎库Lucene之上,并提供了一个分布式、可扩展的架构,用

    2024年02月13日
    浏览(35)
  • k8s部署elk+filebeat+logstash+kafka集群(一)ES集群+kibana部署

    前言: 这次是在部署后很久才想起来整理了下文档,如有遗漏见谅,期间也遇到过很多坑有些目前还没头绪希望有大佬让我学习下 一、环境准备 k8s-master01 3.127.10.209 k8s-master02 3.127.10.95 k8s-master03 3.127.10.66 k8s-node01 3.127.10.233 k8s-node02 3.127.33.173 harbor 3.127.33.174 1、k8s各节点部署nf

    2023年04月23日
    浏览(40)
  • 【搞定排错】k8s集群日志管理

    提示:本节只讲第一种 k8s集群日志主要有两种方式管理,指定主机上的指定目录、输出到某个外部系统。 容器应用输出到三个目标位置:输出到标准输出设备,就是通过命令让它显示在屏幕;输出到日志文件;输出到某个外部系统(需要额外搭建) 容器里面日志保存位置,

    2024年02月13日
    浏览(33)
  • 【云原生】Elasticsearch + kibana on k8s 讲解与实战操作

    Elasticsearch是一个基于Lucene的搜索引擎。它提供了具有HTTP Web界面和无架构JSON文档的分布式,多租户能力的全文搜索引擎。Elasticsearch是用Java开发的,根据Apache许可条款作为开源发布。 官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/master/getting-started.html GitHub: https://gith

    2023年04月08日
    浏览(38)
  • k8s Operator 部署 elasticsearch 7.10 + kibana + cerebro

    1.1 部署 ECK Elastic Cloud on Kubernetes,这是一款基于 Kubernetes Operator 模式的新型编排产品,用户可使用该产品在 Kubernetes 上配置、管理和运行 Elasticsearch 集群。ECK 的愿景是为 Kubernetes 上的 Elastic 产品和解决方案提供 SaaS 般的体验。 k8s 版本 部署 ECK 1)If you are running a version of Kub

    2024年02月08日
    浏览(45)
  • k8s部署 elk(Elasticsearch,Kibana,Logstash,Redis,Filebea)

    目录 一、nfs存储 二、部署镜像,制作tag 三、 filebeat收集数据  四、logstash过滤数据 五、elasticsearch存储数据+nfs做存储(自动注册pv详见前文) 六、kibana展示数据 七、验证安装 参考链接:k8s 配置hadoop集群,nfs作为存储_疯飙的蜗牛的博客-CSDN博客

    2024年02月11日
    浏览(44)
  • k8s安装elasticsearch集群

    搭建es集群需要使用的技术如下:k8s集群、StatefulSet控制器、Service(NodePort)服务、PV、PVC、volumeClaimTemplates(存储卷申请模板)。 StatefulSet控制器创建的Pod适合用于分布式存储系统,它最大的特点是各个Pod的数据不一样,各个Pod无法使用同一个存储卷。注意StatefulSet会给所有的

    2024年02月12日
    浏览(46)
  • 本地k8s集群搭建保姆级教程(3)-安装k8s集群

    1.1 增加镜像替换脚本 注意:请在master机器上执行 添加脚本内容: 1.2 查看k8s版本 1.3 执行脚本 2.1 初始化master节点 在master机器上执行如下命令: 说明: –apiserver-advertise-address= 你master节点的ip 看到如下内容,说明master节点初始化成功 图片中最后一行记得要保存起来,worker节

    2024年02月15日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包