成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Kube-Eventer的開掛操作

開發 前端
在Kubernetes中,事件分為兩種,一種是Warning事件,表示產生這個事件的狀態轉換是在非預期的狀態之間產生的;另外一種是Normal事件,表示期望到達的狀態,和目前達到的狀態是一致的。

[[400338]]

本文轉載自微信公眾號「運維開發故事」,作者沒有文案的夏老師。轉載本文請聯系運維開發故事公眾號。

離線事件告警

kube-eventer是由阿里開源的k8s離線事件收集器,開源地址

https://github.com/AliyunContainerService/kube-eventer/blob/master/docs/en/webhook-sink.md

在Kubernetes中,事件分為兩種,一種是Warning事件,表示產生這個事件的狀態轉換是在非預期的狀態之間產生的;另外一種是Normal事件,表示期望到達的狀態,和目前達到的狀態是一致的。

我們以NPD的event來講解。事件影響節點的臨時性問題,但是它是對于系統診斷是有意義的。NPD就是利用kubernetes的上報機制,通過檢測系統的日志(例如centos中journal),把錯誤的信息上報到kuberntes的node上。這些日志(例如內核日志)中噪音信息太多,NPD會提取其中有價值的信息,可以將這些信息生成離線事件。這樣我就可以得到node上的時間,及時進行處理。

一個標準的Kubernetes事件有如下幾個重要的屬性,通過這些屬性可以更好地診斷和告警問題。Namespace:產生事件的對象所在的命名空間。

Kind:綁定事件的對象的類型,例如:Node、Pod、Namespace、Componenet等等。

Timestamp:事件產生的時間等等。

Reason:產生這個事件的原因。Message: 事件的具體描述。

 

目前的sinks支持大致如下:

Sink Name Description
dingtalk sink to dingtalk bot
sls sink to alibaba cloud sls service
elasticsearch sink to elasticsearch
honeycomb sink to honeycomb
influxdb sink to influxdb
kafka sink to kafka
mysql sink to mysql database
wechat sink to wechat

今天主要帶來webhook的開掛技巧。首先看支持的參數:

  • level - Level of event (optional. default: Warning. Options: Warning and Normal)
  • namespaces - Namespaces to filter (optional. default: all namespaces,use commas to separate multi namespaces, namespace filter doesn't support regexp)
  • kinds - Kinds to filter (optional. default: all kinds,use commas to separate multi kinds. Options: Node,Pod and so on.)
  • reason - Reason to filter (optional. default: empty, Regexp pattern support). You can use multi reason fields in query.
  • method - Method to send request (optional. default: GET)
  • header - Header in request (optional. default: empty). You can use multi header field in query.
  • custom_body_configmap - The configmap name of request body template. You can use Template to customize request body. (optional.)
  • custom_body_configmap_namespace - The configmap namespace of request body template.

如果每個項目namespace與負責人是一一對應的,就可以根據configmap與sink關聯起來。變更上線部署是最容易出現事件的時候,通過事件是可以快速的發現上線的鏡像tag錯誤,鏡像配置錯誤等問題。

首先configmap,通過custom_body_configmap的值來選擇不同的配置文件。可以簡單修飾一下,使其變得更加清晰。

添加加Cluster:name可以知道是哪個集群的event。

添加加"mentioned_list":["wangqin","@all"]可以@對應的負責人。

  1. --- 
  2. apiVersion: v1 
  3. data: 
  4.   content: >- 
  5.        {"msgtype""text","text": {"content""Cluster:name\nEventType:{{ .Type }}\nEventNamespace:{{ .InvolvedObject.Namespace }}\nEventKind:{{ .InvolvedObject.Kind }}\nEventObject:{{ .InvolvedObject.Name }}\nEventReason:{{ .Reason }}\nEventTime:{{ .LastTimestamp }}\nEventMessage:{{ .Message }}","mentioned_list":["wangqing","@all"]}} 
  6. kind: ConfigMap 
  7. metadata: 
  8.   name: custom-webhook-body 
  9.   namespace: nameapce 

命令部分的技巧

sink是一個數組,可以加很多條。

主要說明用webhook向企業微信的的通知。注意reason是可以支持正則表達式的。通過configmap就一起完成了k8s機器的事件告警。

  1. command: 
  2.   - "/kube-eventer" 
  3.   - "--source=kubernetes:https://kubernetes.default" 
  4.   ## .e.g,dingtalk sink demo 
  5.  - --sink=webhook:https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxxx&level=Warning&reason=[^Unhealthy]&namespaces=xxxx&header=Content-Type=application/json&custom_body_configmap=custom-webhook-body0&custom_body_configmap_namespace=xxxx&method=POST 
  6.  - --sink=webhook:https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxxx&level=Warning&reason=BackOff&namespaces=xxxx&header=Content-Type=application/json&custom_body_configmap=custom-webhook-body1&custom_body_configmap_namespace=xxxx&method=POST 
  7.  - --sink=webhook:https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxxx&level=Warning&reason=Failed&namespaces=xxxx&header=Content-Type=application/json&custom_body_configmap=custom-webhook-body2&custom_body_configmap_namespace=xxxxx&method=POST 

案列:

創建一個企業微信群的機器人。比如:https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxxx。

  1. apiVersion: apps/v1 
  2. kind: Deployment 
  3. metadata: 
  4.   labels: 
  5.     name: kube-eventer 
  6.   name: kube-eventer 
  7.   namespace: namespace 
  8. spec: 
  9.   replicas: 1 
  10.   selector: 
  11.     matchLabels: 
  12.       app: kube-eventer 
  13.   template: 
  14.     metadata: 
  15.       labels: 
  16.         app: kube-eventer 
  17.       annotations:  
  18.         scheduler.alpha.kubernetes.io/critical-pod: '' 
  19.     spec: 
  20.       dnsPolicy: ClusterFirstWithHostNet 
  21.       serviceAccount: kube-eventer 
  22.       containers: 
  23.         - image: registry.aliyuncs.com/acs/kube-eventer-amd64:v1.2.0-484d9cd-aliyun 
  24.           name: kube-eventer 
  25.           command: 
  26.             - "/kube-eventer" 
  27.             - "--source=kubernetes:https://kubernetes.default" 
  28.             ## .e.g,dingtalk sink demo 
  29.             - --sink=webhook:https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxxx&level=Warning&reason=[^Unhealthy]&namespaces=xxxx&header=Content-Type=application/json&custom_body_configmap=custom-webhook-body0&custom_body_configmap_namespace=xxxx&method=POST 
  30.             #- --sink=webhook:https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxxx&level=Warning&reason=BackOff&namespaces=xxxx&header=Content-Type=application/json&custom_body_configmap=custom-webhook-body1&custom_body_configmap_namespace=xxxx&method=POST 
  31.             #- --sink=webhook:https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxxx&level=Warning&reason=Failed&namespaces=xxxx&header=Content-Type=application/json&custom_body_configmap=custom-webhook-body2&custom_body_configmap_namespace=xxxxx&method=POST 
  32.           env: 
  33.           # If TZ is assigned, set the TZ value as the time zone 
  34.           - name: TZ 
  35.             value: "Asia/Shanghai"  
  36.           volumeMounts: 
  37.             - name: localtime 
  38.               mountPath: /etc/localtime 
  39.               readOnly: true 
  40.             - name: zoneinfo 
  41.               mountPath: /usr/share/zoneinfo 
  42.               readOnly: true 
  43.           resources: 
  44.             requests: 
  45.               cpu: 200m 
  46.               memory: 100Mi 
  47.             limits: 
  48.               cpu: 500m 
  49.               memory: 250Mi 
  50.       volumes: 
  51.         - name: localtime 
  52.           hostPath: 
  53.             path: /etc/localtime 
  54.         - name: zoneinfo 
  55.           hostPath: 
  56.             path: /usr/share/zoneinfo 
  57. --- 
  58. apiVersion: rbac.authorization.k8s.io/v1 
  59. kind: ClusterRole 
  60. metadata: 
  61.   name: kube-eventer 
  62. rules: 
  63.   - apiGroups: 
  64.       - "" 
  65.     resources: 
  66.       - events 
  67.       - configmaps 
  68.     verbs: 
  69.       - get 
  70.       - list 
  71.       - watch 
  72. --- 
  73. apiVersion: rbac.authorization.k8s.io/v1 
  74. kind: ClusterRoleBinding 
  75. metadata: 
  76.   name: kube-eventer 
  77. roleRef: 
  78.   apiGroup: rbac.authorization.k8s.io 
  79.   kind: ClusterRole 
  80.   name: kube-eventer 
  81. subjects: 
  82.   - kind: ServiceAccount 
  83.     name: kube-eventer 
  84.     namespace: namespace 
  85. --- 
  86. apiVersion: v1 
  87. kind: ServiceAccount 
  88. metadata: 
  89.   name: kube-eventer 
  90.   namespace: namespace 
  91.  
  92. --- 
  93. apiVersion: v1 
  94. data: 
  95.   content: >- 
  96.        {"msgtype""text","text": {"content""Cluster:name\nEventType:{{ .Type }}\nEventNamespace:{{ .InvolvedObject.Namespace }}\nEventKind:{{ .InvolvedObject.Kind }}\nEventObject:{{ .InvolvedObject.Name }}\nEventReason:{{ .Reason }}\nEventTime:{{ .LastTimestamp }}\nEventMessage:{{ .Message }}","mentioned_list":["wangqing","@all"]}} 
  97. kind: ConfigMap 
  98. metadata: 
  99.   name: custom-webhook-body 
  100.   namespace: nameapce 

 

這樣就可以完成向誰告警,誰進行處理的簡單分配。有了事件告警,可以及時發現服務問題與集群問題并進行修復。

 

責任編輯:武曉燕 來源: 運維開發故事
相關推薦

2017-03-01 19:45:15

戴爾服務器

2017-06-29 11:00:49

2015-12-31 11:30:10

趨勢科技/信息安全

2022-07-21 10:05:13

勒索軟件網絡安全

2018-02-13 14:56:24

戴爾

2021-09-10 09:58:35

AvlBST時間

2017-02-10 16:39:47

戴爾商用電腦促銷

2022-03-17 09:33:28

AI深度學習思考

2019-04-26 13:26:00

預測股票深度學習股票

2024-01-04 17:24:02

2022-01-15 23:04:03

人工智能高等數學技術

2025-03-03 00:00:00

2015-07-30 13:49:23

2020-04-07 11:12:23

編程IBM印度裔

2023-04-03 14:52:00

谷歌數學

2012-06-29 15:03:23

傲游瀏覽器

2023-11-29 09:29:48

Kuberneteskube

2020-11-10 10:10:37

首席信息官ITCIO
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品国产免费人成在线观看 | 97国产精品 | 欧美三级视频 | 亚洲精品一区在线 | 一区二区三区欧美在线观看 | 欧美三级在线 | 国产黄色精品 | 成人免费视屏 | 一区二区三区精品视频 | 中文字幕一区二区在线观看 | 91看片视频| 久久aⅴ乱码一区二区三区 亚洲欧美综合精品另类天天更新 | 国产一区二区毛片 | 国产精品成人品 | 密色视频| 成人影院在线 | 亚洲福利精品 | 色婷婷一区二区三区四区 | 99re99| 亚洲精品视频免费观看 | 国产乱码精品1区2区3区 | 日韩精品一区二区在线 | 女人av | 日韩av第一页| 日本视频在线播放 | 午夜国产一级片 | 国产中文字幕在线观看 | 国产成人综合在线 | 99九九视频 | 欧美日韩在线一区二区 | 精品亚洲一区二区 | 国产网站在线 | 日韩在线电影 | 69av在线视频| 成人三级视频在线观看 | 黄色在线免费观看视频 | 网站国产 | 色视频一区二区 | 在线播放国产一区二区三区 | 亚洲喷水 | 欧美一级毛片免费观看 |