基于 K8S 搭建自己的 ELK 服务

这篇具有很好参考价值的文章主要介绍了基于 K8S 搭建自己的 ELK 服务。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

基于 K8S 搭建自己的 ELK 服务

基于 K8S(K3S) 搭建自己的 ELK 服务

对应的 Yaml 资源在 https://github.com/nicelizhi/k8s-elk

elasticsearch 服务

Service

kind: Service
apiVersion: v1
metadata:
  name: elasticsearch
spec:
  ports:
    - name: elasticsearch
      protocol: TCP
      port: 9200
      targetPort: 9200
  selector:
    app: elasticsearch
  type: ClusterIP
  sessionAffinity: None

ConfigMap

kind: ConfigMap
apiVersion: v1
metadata:
  name: elasticsearch-config
data:
  elasticsearch.yml: |
    network.host: 0.0.0.0
    xpack.monitoring.collection.enabled: true
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    xpack.security.enabled: true
    xpack.security.authc.api_key.enabled: true

Deployment

kind: Deployment
apiVersion: apps/v1
metadata:
  name: elasticsearch
spec:
  replicas: 1
  selector:
    matchLabels:
      app: elasticsearch
  template:
    metadata:
      labels:
        app: elasticsearch
    spec:
      volumes:
        - name: config
          configMap:
            name: elasticsearch-config
            defaultMode: 420
        - name: es-data
          hostPath:
            path: /data/es
      initContainers:
        - name: increase-vm-max-map
          image: busybox
          command:
            - sysctl
            - '-w'
            - vm.max_map_count=262144
          securityContext:
            privileged: true
      containers:
        - name: elasticsearch
          image: 'docker.elastic.co/elasticsearch/elasticsearch:7.16.0'
          resources:
            requests:
              memory: 1524Mi
              cpu: 500m
            limits:
              memory: 1824Mi
              cpu: 1
          ports:
            - containerPort: 9200
              protocol: TCP
            - containerPort: 9300
              protocol: TCP
          env:
            - name: ES_JAVA_OPTS
              value: '-Xms256m -Xmx256m'
            - name: discovery.type
              value: single-node
          volumeMounts:
            - name: config
              mountPath: /usr/share/elasticsearch/config/elasticsearch.yml
              subPath: elasticsearch.yml
            - mountPath: /usr/share/elasticsearch/data/
              name: es-data

上面的资源有硬盘挂载与 config 类型的使用

kibana 服务

Service

kind: Service
apiVersion: v1
metadata:
  name: kibana
spec:
  ports:
    - name: kibana
      protocol: TCP
      port: 5601
      targetPort: 5601
  selector:
    component: kibana
  type: LoadBalancer

ConfigMap

kind: ConfigMap
apiVersion: v1
metadata:
  name: kibana-config
data:
  kibana.yml: >
    server.name: kibana

    server.host: 0.0.0.0

    elasticsearch.hosts: ["http://elasticsearch:9200" ]
    
    elasticsearch.username: "elastic"

    monitoring.ui.container.elasticsearch.enabled: true

Deployment

kind: Deployment
apiVersion: apps/v1
metadata:
  name: kibana
spec:
  replicas: 1
  selector:
    matchLabels:
      component: kibana
  template:
    metadata:
      labels:
        component: kibana
    spec:
      volumes:
        - name: config
          configMap:
            name: kibana-config
            defaultMode: 420
        - name: secrets
          secret:
            secretName: es-user-pass
            defaultMode: 0400
      containers:
        - name: elk-kibana
          image: 'docker.elastic.co/kibana/kibana:7.16.0'
          resources:
            requests:
              memory: 512Mi
              cpu: 200m
            limits:
              memory: 1Gi
              cpu: 1
          ports:
            - name: kibana
              containerPort: 5601
              protocol: TCP
          env:
            - name: KIBANA_SYSTEM_PASSWORD
              valueFrom: 
                secretKeyRef: 
                  name: es-user-pass
                  key: password
            - name: ELASTICSEARCH_PASSWORD
              valueFrom: 
                secretKeyRef: 
                  name: es-user-pass
                  key: password
          volumeMounts:
            - name: config
              mountPath: /usr/share/kibana/config/kibana.yml
              subPath: kibana.yml

configMap 的配置使用与 Secret内容的使用

logstash 服务

Deployment

kind: Deployment
apiVersion: apps/v1
metadata:
  name: logstash
spec:
  replicas: 1
  selector:
    matchLabels:
      app: logstash
  template:
    metadata:
      labels:
        app: logstash
    spec:
      volumes:
        - name: config
          configMap:
            name: logstash-config
            defaultMode: 420
        - name: pipelines
          configMap:
            name: logstash-pipelines
            defaultMode: 420
      containers:
        - name: logstash
          image: 'docker.elastic.co/logstash/logstash:7.16.0'
          resources:
            requests:
              memory: 512Mi
              cpu: 500m
            limits:
              memory: 1024Mi
              cpu: 1
          ports:
            - containerPort: 5044
              protocol: TCP
            - containerPort: 5000
              protocol: TCP
            - containerPort: 5000
              protocol: UDP
            - containerPort: 9600
              protocol: TCP
          env:
            - name: ELASTICSEARCH_HOST
              value: 'http://elasticsearch:9200'
            - name: LS_JAVA_OPTS
              value: '-Xms512m -Xmx512m'
          volumeMounts:
            - name: pipelines
              mountPath: /usr/share/logstash/pipeline
            - name: config
              mountPath: /usr/share/logstash/config/logstash.yml
              subPath: logstash.yml

Service

kind: Service
apiVersion: v1
metadata:
  name: logstash
spec:
  ports:
    - name: logstash
      protocol: TCP
      port: 10000
      targetPort: 9600
    - name: filebeat
      protocol: TCP
      port: 5044
      targetPort: 5044
  selector:
    app: logstash
  type: LoadBalancer
  sessionAffinity: None

ConfigMap

kind: ConfigMap
apiVersion: v1
metadata:
  name: logstash-config
  namespace: default
data:
  logstash.yml: >
    http.host: "0.0.0.0"

    xpack.monitoring.enabled: true

    config.reload.automatic: true

    xpack.monitoring.elasticsearch.hosts: ["elasticsearch:9200" ]

    xpack.monitoring.elasticsearch.username: "elastic"

    xpack.monitoring.elasticsearch.password: "abc123456"

ConfigMap piple

kind: ConfigMap
apiVersion: v1
metadata:
  name: logstash-pipelines
data:
  logstash.conf: |
    input {
      syslog {
        type => "syslog"
        port => 5044
      }
    }
    filter {
       grok {
          match => ["message", "%{SYSLOG5424PRI}%{NONNEGINT:syslog5424_ver} +(?:%{TIMESTAMP_ISO8601:timestamp}|-) +(?:%{HOSTNAME:heroku_drain_id}|-) +(?:%{WORD:heroku_source}|-) +(?:%{DATA:heroku_dyno}|-) +(?:%{WORD:syslog5424_msgid}|-) +(?:%{SYSLOG5424SD:syslog5424_sd}|-|) +%{GREEDYDATA:heroku_message}"]
        }
        mutate { rename => ["heroku_message", "message"] }
        kv { source => "message" }
        mutate { convert => ["sample#memory-free", "integer"]}
        mutate { convert => ["sample#memory-total", "integer"]}
        mutate { convert => ["sample#memory-redis", "integer"]}
        mutate { convert => ["sample#memory-cached", "integer"]}
        mutate { convert => ["sample#load-avg-5m", "float"]}
        mutate { convert => ["sample#load-avg-1m", "float"]}
        mutate { convert => ["sample#load-avg-15m", "float"]}
        syslog_pri { syslog_pri_field_name => "syslog5424_pri" }
    }
    output {
      elasticsearch {
        hosts => ["http://elasticsearch:9200"]
        "user" => "elastic"
        "password" => "abc123456"
        "index" => "logstash-%{heroku_dyno}"
         template_overwrite => true
      }
    }

pipe 日志处理了 Heroku 平台日志收集。并且配置了pipe的自动加载动作,这块也是实际应用中经常应用到的功能
针对与日志收集的过程中可以使用 grok 去做必要的格式转化,从而使的日志安装您的要求保存到ES 服务器中使用。

上面示例是运行在一台 2核 4G 的服务器上面,所以我们使用的是K3S 架构,并且在 ES 上只使用了一个节点数据,这些在正式的使用过程中需要多留意。文章来源地址https://www.toymoban.com/news/detail-710409.html

到了这里,关于基于 K8S 搭建自己的 ELK 服务的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 微服务 & 云原生:搭建 K8S 集群

    为节约时间和成本,仅供学习使用,直接在两台虚拟机上模拟 K8S 集群搭建 踩坑之旅 系统环境:CentOS-7-x86_64-Minimal-2009 镜像,为方便起见,直接在 root 账户下操作,现实情况最好不要这样做。 关闭防火墙 关闭 selinux 禁用 Swap 设置存储库 安装配置 Docker 安装 Docker Compose 最好使

    2024年02月16日
    浏览(40)
  • 【K8S&RockyLinux】基于开源操作系统搭建K8S高可用集群(详细版)

    角色 主机名 IP地址 系统版本 CPU/MEM master m1 192.168.200.61 Rocky Linux 8.5 2C/2GB master m2 192.168.200.62 Rocky Linux 8.5 2C/2GB master m3 192.168.200.63 Rocky Linux 8.5 2C/2GB node n1 192.168.200.64 Rocky Linux 8.5 2C/4GB node n2 192.168.200.65 Rocky Linux 8.5 2C/4GB node n3 192.168.200.66 Rocky Linux 8.5 2C/4GB VIP 192.168.200.68 !!!注意

    2024年02月09日
    浏览(33)
  • 2、基于kubeadm搭建K8S环境

    目录   一、环境说明 二、初始化所有节点 三、修改三台服务器主机名,并写入host文件 四、调整内核参数 五、所有节点安装Docker 六、所有节点配置K8S源 七、所有节点安装kubeadm,kubelet和kubectl 八、部署 kubernetes Master 节点 九、k8s-node 节点加入 master 节点 十、master节点部署

    2024年02月15日
    浏览(21)
  • 通过k8s搭建部署服务(nacos为例)

    前言:写这篇文章也算是自己对k8s的一种学习,加深一下k8s对服务部署的印象。 环境:使用的本地windows系统下的docker desktop工具,高版本的docker desktop自带了k8s服务所以就不需要特地去linux系统上装k8s了。docker desktop相当于在windows系统下配置了docker环境和k8s环境,可以直接在

    2024年02月14日
    浏览(32)
  • 在k8s集群部署ELK

    使用kubeadm或者其他方式部署一套k8s集群。 在k8s集群创建一个namespace:halashow 3.1 准备资源配置清单  Deployment中存在一个es的业务容器,和一个init容器,init容器主要是配置vm.max_map_count=262144。 service暴露了9200端口,其他服务可通过service name加端口访问es。 3.1 准备资源配置清单

    2024年02月04日
    浏览(42)
  • 搭建NFS服务器,部署k8s集群,并在k8s中使用NFS作为持久化储存

    🐇明明跟你说过:个人主页 🏅个人专栏:《Kubernetes航线图:从船长到K8s掌舵者》 🏅 🔖行路有良友,便是天堂🔖 目录 一、前言 1、k8s概述 2、NFS简介 二、NFS服务器搭建 1、准备NFS 服务器 2、搭建NFS服务 三、安装k8s集群 1、环境准备 2、禁用防火墙和SELinux 3、设置时间同步

    2024年04月13日
    浏览(29)
  • 基于ECS云主机搭建k8s集群-详细过程

    K8S集群部署过程耗时:不到1小时。 经过最近几次的k8s部署操作,自己也是踩过很多坑,总结记录一下详细、完整的部署过程,供对Kubernetes感兴趣的朋友参考,一起学习; 本次使用的3台2C4G的ECS百度云服务器,确保可以相互访问,如果跨VPC,可以建立“对等连接”: 主机名

    2024年01月16日
    浏览(31)
  • k8s 搭建基于session模式的flink集群

    不废话直接上代码,都是基于官网的,在此记录一下 Kubernetes | Apache Flink flink-configuration-configmap.yaml jobmanager-service.yaml  Optional service, which is only necessary for non-HA mode. Session cluster resource definitions # jobmanager-session-deployment-non-ha.yaml taskmanager-session-deployment.yaml  kubectl apply -f xxx.ya

    2024年02月10日
    浏览(25)
  • 基于昇腾910B搭建多节点K8s集群

    自从 2013 年 Docker 诞生以来,容器一跃成为 IT 界最热门的话题。而 Kubernetes 趁着容器的东风,击败众多竞争对手,成为了“容器编排”领域的King。可以说,现在 Kubernetes 已经没有了实际意义上的竞争对手,它的地位就如同 Linux 一样,成为了事实上的云原生操作系统,是构建

    2024年01月19日
    浏览(24)
  • 基于M1芯片的Mac的k8s搭建

    centos8 macbook pro M1 vm vm安装centos8参考:MacBook M1芯片 安装Centos8 教程(无界面安装)_m1安装centos 8.4_Mr_温少的博客-CSDN博客 参考: MacOS M1芯片CentOS8部署搭建k8s集群_Liu_Shihao的博客-CSDN博客 1.设置对应的hostname 2.关闭防火墙 3.关闭selinux 4.关闭swap 5.允许 iptables 检查桥接流量 6.更新yum源

    2024年02月16日
    浏览(31)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包