k8s

kubernetes-event-exporter部署

背景

在不重启apiserver的情况下,把events导出到es中。这里选择了kubernetes-event-exporter。
GitHub地址:https://github.com/resmoio/kubernetes-event-exporter

部署

我的k8s版本是1.20.15,es版本7.10.0,这里只能选择2.1.2版本的chart,别的版本es客户端高于7.10,会导致exporter无法连接es。(经过多次尝试终于有个能用的...)
https://artifacthub.io/packages/helm/bitnami/kubernetes-event-exporter/2.1.2

file

下载chart包,修改values.yaml,安装。

helm pull bitnami/kubernetes-event-exporter --version 2.1.2
tar xvf kubernetes-event-exporter-2.1.2.tgz
vim values.yaml

fullnameOverride: "event-exporter"
config:
  logLevel: debug
  logFormat: json
  kubeQPS: 100
  kubeBurst: 500
  maxEventAgeSeconds: 60
  metricsNamePrefix: event_exporter_
  receivers:
    - name: "dump"
      elasticsearch:
        hosts:
          - http://1.2.3.4:9200
        username: elastic
        password: elastic
        index: kube-events
        #indexFormat: "kube-events-{2006-01-02}"
        use_ilm: false
        useEventID: true
        layout:
          message: "{{ .Message }}"
          reason: "{{ .Reason }}"
          type: "{{ .Type }}"
          count: "{{ .Count }}"
          kind: "{{ .InvolvedObject.Kind }}"
          name: "{{ .InvolvedObject.Name }}"
          namespace: "{{ .Namespace }}"
          component: "{{ .Source.Component }}"
          host: "{{ .Source.Host }}"
        #layout: {}
  route:
    routes:
      - match:
          - receiver: "dump"

helm install event-exporter -n ns .

注意这里我的es是禁止自动创建索引的,所以我禁用了ilm生命周期管理,使用kube-events这一个索引。如果es支持自动创建索引,可以使用indexFormat。

查看pod

file

查看日志

file

查看kube-events索引

file

自动清理

创建ilm

curl -X PUT "http://elasticsearch:9200/_ilm/policy/kube-events-policy" -H 'Content-Type: application/json' -d'
{
  "policy": {
    "phases": {
      "hot": {
        "min_age": "0ms",
        "actions": {
          "rollover": {
            "max_age": "2d",    # 每2天滚动一次
            "max_size": "1gb"   # 或按大小滚动
          },
          "set_priority": {
            "priority": 100
          }
        }
      },
      "delete": {
        "min_age": "3d",        # 保留3天后删除
        "actions": {
          "delete": {}
        }
      }
    }
  }
}'

创建模板关联ilm

curl -X PUT "http://elasticsearch:9200/_index_template/kube-events-template" -H 'Content-Type: application/json' -d'
{
  "index_patterns": ["kube-events-*"], 
  "template": {
    "settings": {
      "number_of_shards": 1,
      "number_of_replicas": 1,
      "index.lifecycle.name": "kube-events-policy",        # 关联ILM策略
      "index.lifecycle.rollover_alias": "kube-events"      # 设置滚动别名
    }
  }
}'

创建索引设置别名

# 创建第一个索引
curl -X PUT "http://elasticsearch:9200/kube-events-000001" -H 'Content-Type: application/json' -d'
{
  "aliases": {
    "kube-events": {
      "is_write_index": true   # 标记为当前写入索引
    }
  }
}'

# 将ILM策略应用到初始索引
curl -X PUT "http://elasticsearch:9200/kube-events-000001/_settings" -H 'Content-Type: application/json' -d'
{
  "index.lifecycle.name": "kube-events-policy",
  "index.lifecycle.rollover_alias": "kube-events"
}'

验证配置

# 检查别名配置
curl "http://elasticsearch:9200/_cat/aliases/kube-events?v"

# 检查索引设置
curl "http://elasticsearch:9200/kube-events-000001/_settings?pretty"

# 检查ILM状态
curl "http://elasticsearch:9200/kube-events-000001/_ilm/explain?human"

file

file

分类: k8s
0 0 投票数
文章评分
订阅评论
提醒
guest

0 评论
最旧
最新 最多投票
内联反馈
查看所有评论

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部
0
希望看到您的想法,请您发表评论x