自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Kube-Eventer的開掛操作

開發(fā) 前端
在Kubernetes中,事件分為兩種,一種是Warning事件,表示產(chǎn)生這個事件的狀態(tài)轉(zhuǎn)換是在非預(yù)期的狀態(tài)之間產(chǎn)生的;另外一種是Normal事件,表示期望到達的狀態(tài),和目前達到的狀態(tài)是一致的。

[[400338]]

本文轉(zhuǎn)載自微信公眾號「運維開發(fā)故事」,作者沒有文案的夏老師。轉(zhuǎn)載本文請聯(lián)系運維開發(fā)故事公眾號。

離線事件告警

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

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

在Kubernetes中,事件分為兩種,一種是Warning事件,表示產(chǎn)生這個事件的狀態(tài)轉(zhuǎn)換是在非預(yù)期的狀態(tài)之間產(chǎn)生的;另外一種是Normal事件,表示期望到達的狀態(tài),和目前達到的狀態(tài)是一致的。

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

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

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

Timestamp:事件產(chǎn)生的時間等等。

Reason:產(chǎn)生這個事件的原因。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的開掛技巧。首先看支持的參數(shù):

  • 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與負責人是一一對應(yīng)的,就可以根據(jù)configmap與sink關(guān)聯(lián)起來。變更上線部署是最容易出現(xiàn)事件的時候,通過事件是可以快速的發(fā)現(xiàn)上線的鏡像tag錯誤,鏡像配置錯誤等問題。

首先configmap,通過custom_body_configmap的值來選擇不同的配置文件??梢院唵涡揎椧幌?,使其變得更加清晰。

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

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

  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是一個數(shù)組,可以加很多條。

主要說明用webhook向企業(yè)微信的的通知。注意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 

案列:

創(chuàng)建一個企業(yè)微信群的機器人。比如: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 

 

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

 

責任編輯:武曉燕 來源: 運維開發(fā)故事
相關(guān)推薦

2017-03-01 19:45:15

戴爾服務(wù)器

2022-07-21 10:05:13

勒索軟件網(wǎng)絡(luò)安全

2015-12-31 11:30:10

趨勢科技/信息安全

2017-06-29 11:00:49

2018-02-13 14:56:24

戴爾

2017-02-10 16:39:47

戴爾商用電腦促銷

2021-09-10 09:58:35

AvlBST時間

2022-03-17 09:33:28

AI深度學習思考

2019-04-26 13:26:00

預(yù)測股票深度學習股票

2024-01-04 17:24:02

2022-01-15 23:04:03

人工智能高等數(shù)學技術(shù)

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

谷歌數(shù)學

2023-11-29 09:29:48

Kuberneteskube

2012-06-29 15:03:23

傲游瀏覽器

2020-11-10 10:10:37

首席信息官ITCIO
點贊
收藏

51CTO技術(shù)棧公眾號