前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >kube-eventer的使用

kube-eventer的使用

作者头像
保持热爱奔赴山海
发布2022-01-11 13:31:25
1.3K0
发布2022-01-11 13:31:25
举报
文章被收录于专栏:DevOps数据库相关

https://github.com/AliyunContainerService/kube-eventer

kube-event是一个事件发射器,将kubernetes事件发送到sink (或者dingtalk,sls,kafka 企业微信等)。

kubernetes的核心设计理念是状态机。因此,当转换到所需状态时将出现Normal事件,而当转换到意外状态时将出现Warning事件。kube-event可以帮助诊断、分析和报警问题。

我下面是是私人的dingtalk机器人的token获取方法如下图:

kube-eventer的使用_k8s
kube-eventer的使用_k8s

cat aliyun-kube-eventer.deploy.yaml 内容如下:

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    name: kube-eventer
  name: kube-eventer
  namespace: kube-system
spec:
  replicas: 1
  selector:
    matchLabels:
      app: kube-eventer
  template:
    metadata:
      labels:
        app: kube-eventer
      annotations:  
        scheduler.alpha.kubernetes.io/critical-pod: ''
    spec:
      dnsPolicy: ClusterFirstWithHostNet
      serviceAccount: kube-eventer
      containers:
        - image: registry.aliyuncs.com/acs/kube-eventer-amd64:v1.2.0-484d9cd-aliyun
          name: kube-eventer
          command:
            - "/kube-eventer"
            - "--source=kubernetes:https://kubernetes.default"
            ## .e.g,dingtalk sink demo
            - --sink=dingtalk:https://oapi.dingtalk.com/robot/send?access_token=222222222222222222222222222222222222222222&label=test-k8s&level=Warning&msg_type=markdown
          env:
          # If TZ is assigned, set the TZ value as the time zone
          - name: TZ
            value: "Asia/Shanghai" 
          volumeMounts:
            - name: localtime
              mountPath: /etc/localtime
              readOnly: true
            - name: zoneinfo
              mountPath: /usr/share/zoneinfo
              readOnly: true
          resources:
            requests:
              cpu: 100m
              memory: 100Mi
            limits:
              cpu: 500m
              memory: 250Mi
      volumes:
        - name: localtime
          hostPath:
            path: /etc/localtime
        - name: zoneinfo
          hostPath:
            path: /usr/share/zoneinfo
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: kube-eventer
rules:
  - apiGroups:
      - ""
    resources:
      - configmaps
      - events
    verbs:
      - get
      - list
      - watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: kube-eventer
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: kube-eventer
subjects:
  - kind: ServiceAccount
    name: kube-eventer
    namespace: kube-system
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: kube-eventer
  namespace: kube-system

> kubectl apply -f aliyun-kube-eventer.deploy.yaml

> kubectl get pods -n kube-system| grep kube-event

代码语言:javascript
复制
kube-eventer-5dbcb78f59-wsjld     1/1     Running   0          11m

> kubectl logs -n kube-system kube-eventer-5dbcb78f59-wsjld

代码语言:javascript
复制
I0627 15:03:40.668622       1 eventer.go:67] /kube-eventer --source=kubernetes:https://kubernetes.default --sink=dingtalk:https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&label=dbatest-k8s&level=Warning&msg_type=markdown
I0627 15:03:40.668693       1 eventer.go:68] kube-eventer version: v1.2.0 commit: 484d9cd
I0627 15:03:40.670438       1 eventer.go:94] Starting with DingTalkSink sink
I0627 15:03:40.670474       1 eventer.go:108] Starting eventer
I0627 15:03:40.670715       1 eventer.go:116] Starting eventer http service
I0627 15:04:00.001057       1 manager.go:102] Exporting 3 events
I0627 15:04:30.000654       1 manager.go:102] Exporting 11 events
I0627 15:05:00.000131       1 manager.go:102] Exporting 12 events
I0627 15:05:30.000129       1 manager.go:102] Exporting 0 events
I0627 15:06:00.000130       1 manager.go:102] Exporting 0 events
I0627 15:06:30.000121       1 manager.go:102] Exporting 0 event

然后,我们执行一个暴力删除的操作(delete pod -n default web-0 --force --grace-period 0), 模拟一个异常事件出来。

稍等片刻,钉钉就会收到提示如下:

kube-eventer的使用_k8s_02
kube-eventer的使用_k8s_02

当然,我们的event消息也可以配置让它落到kafka中,后续通过自定义的程序去消费做各种各样的操作,也便于通过logstash消费kafka将数据入到ES中,便于做统计汇总。

如果要接到企业微信,可以使用这样配置:

代码语言:javascript
复制
--sink=wechat:?corp_id=wwxxxxxxxxxx1a&corp_secret=xxxxxxxxxxxxxxxxxxxxxxxxxxx4U&agent_id=10xxxxxx7&to_user=&level=Warning&label=K8S-Alert-Prod&msg_type=markdown

参考:

https://github.com/AliyunContainerService/kube-eventer

https://www.imooc.com/article/301284

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/06/27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档