BotKube

BotKube 是一个用于监控和调试 Kubernetes 集群的消息传递工具。 BotKube 可以与多个消息传递平台(如 Slack、Mattermost 或 Microsoft Teams)集成,以帮助您监控 Kubernetes 集群、调试关键部署,并通过对 Kubernetes 资源运行检查来提供标准实践建议。

安装BotKube

1、本文使用slack作为消息接收平台,需要自行注册slack,拿到Access token

  1. xoxb-2169032185141-2256603089394-qeLWxe0sUtwfdlwnk6VWbw11

2、将 BotKube 用户添加到 Slack 频道

将 BotKube 应用程序安装到您的 Slack 工作区后,您会看到一个名为“BotKube”的新机器人用户添加到您的工作区中。 将该机器人添加到您想要接收通知的 Slack 频道。

(您可以通过在频道中邀请@BotKube 来添加它)

3、使用helm把BotKube安装到kubernrtes集群

  1. helm repo add infracloudio https://infracloudio.github.io/charts
  2. helm repo update
  3. 请自行替换<>内的信息:
  4. helm install --version v0.12.1 botkube --namespace botkube \
  5. --set communications.slack.enabled=true \
  6. --set communications.slack.channel=<SLACK_CHANNEL_NAME> \
  7. --set communications.slack.token=<SLACK_API_TOKEN_FOR_THE_BOT> \
  8. --set config.settings.clustername=<CLUSTER_NAME> \
  9. --set config.settings.kubectl.enabled=<ALLOW_KUBECTL> \
  10. --set image.repository=infracloudio/botkube \
  11. --set image.tag=v0.12.1 \
  12. infracloudio/botkube
  13. - SLACK_CHANNEL_NAME 是添加@BotKube 的频道名称
  14. - SLACK_API_TOKEN_FOR_THE_BOT 是将 BotKube 应用程序安装到 Slack 工作区后收到的令牌
  15. - CLUSTER_NAME 是在传入消息中设置的集群名称
  16. - ALLOW_KUBECTL 设置为 true 以允许 BotKube 在集群上执行 kubectl 命令

4、查看安装信息

  1. # helm list -n botkube
  2. NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
  3. botkube botkube 1 2021-07-09 10:41:35.813245746 +0800 CST deployed botkube-v0.12.1 v0.12.1
  4. # kubectl get all -n botkube
  5. NAME READY STATUS RESTARTS AGE
  6. pod/botkube-747ff4dc5d-795hz 1/1 Running 0 2d22h
  7. NAME READY UP-TO-DATE AVAILABLE AGE
  8. deployment.apps/botkube 1/1 1 1 2d22h
  9. NAME DESIRED CURRENT READY AGE
  10. replicaset.apps/botkube-747ff4dc5d 1 1 1 2d22h

5、如果你需要修改配置,可以更新botkube-configmap,默认设置如下

  1. recommendations: true
  2. resources:
  3. - events:
  4. - create
  5. - delete
  6. - error
  7. name: v1/pods
  8. namespaces:
  9. ignore:
  10. - null
  11. include:
  12. - all
  13. - events:
  14. - create
  15. - delete
  16. - error
  17. name: v1/services
  18. namespaces:
  19. ignore:
  20. - null
  21. include:
  22. - all
  23. - events:
  24. - create
  25. - update
  26. - delete
  27. - error
  28. name: apps/v1/deployments
  29. namespaces:
  30. ignore:
  31. - null
  32. include:
  33. - all
  34. updateSetting:
  35. fields:
  36. - spec.template.spec.containers[*].image
  37. - status.availableReplicas
  38. includeDiff: true
  39. - events:
  40. - create
  41. - update
  42. - delete
  43. - error
  44. name: apps/v1/statefulsets
  45. namespaces:
  46. ignore:
  47. - null
  48. include:
  49. - all
  50. updateSetting:
  51. fields:
  52. - spec.template.spec.containers[*].image
  53. - status.readyReplicas
  54. includeDiff: true
  55. - events:
  56. - create
  57. - delete
  58. - error
  59. name: networking.k8s.io/v1beta1/ingresses
  60. namespaces:
  61. ignore:
  62. - null
  63. include:
  64. - all
  65. - events:
  66. - create
  67. - delete
  68. - error
  69. name: v1/nodes
  70. namespaces:
  71. ignore:
  72. - null
  73. include:
  74. - all
  75. - events:
  76. - create
  77. - delete
  78. - error
  79. name: v1/namespaces
  80. namespaces:
  81. ignore:
  82. - null
  83. include:
  84. - all
  85. - events:
  86. - create
  87. - delete
  88. - error
  89. name: v1/persistentvolumes
  90. namespaces:
  91. ignore:
  92. - null
  93. include:
  94. - all
  95. - events:
  96. - create
  97. - delete
  98. - error
  99. name: v1/persistentvolumeclaims
  100. namespaces:
  101. ignore:
  102. - null
  103. include:
  104. - all
  105. - events:
  106. - create
  107. - delete
  108. - error
  109. name: v1/configmaps
  110. namespaces:
  111. ignore:
  112. - null
  113. include:
  114. - all
  115. - events:
  116. - create
  117. - update
  118. - delete
  119. - error
  120. name: apps/v1/daemonsets
  121. namespaces:
  122. ignore:
  123. - null
  124. include:
  125. - all
  126. updateSetting:
  127. fields:
  128. - spec.template.spec.containers[*].image
  129. - status.numberReady
  130. includeDiff: true
  131. - events:
  132. - create
  133. - update
  134. - delete
  135. - error
  136. name: batch/v1/jobs
  137. namespaces:
  138. ignore:
  139. - null
  140. include:
  141. - all
  142. updateSetting:
  143. fields:
  144. - spec.template.spec.containers[*].image
  145. - status.conditions[*].type
  146. includeDiff: true
  147. - events:
  148. - create
  149. - delete
  150. - error
  151. name: rbac.authorization.k8s.io/v1/roles
  152. namespaces:
  153. ignore:
  154. - null
  155. include:
  156. - all
  157. - events:
  158. - create
  159. - delete
  160. - error
  161. name: rbac.authorization.k8s.io/v1/rolebindings
  162. namespaces:
  163. ignore:
  164. - null
  165. include:
  166. - all
  167. - events:
  168. - create
  169. - delete
  170. - error
  171. name: rbac.authorization.k8s.io/v1/clusterrolebindings
  172. namespaces:
  173. ignore:
  174. - null
  175. include:
  176. - all
  177. - events:
  178. - create
  179. - delete
  180. - error
  181. name: rbac.authorization.k8s.io/v1/clusterroles
  182. namespaces:
  183. ignore:
  184. - null
  185. include:
  186. - all
  187. settings:
  188. clustername: k8s-2
  189. configwatcher: true
  190. kubectl:
  191. commands:
  192. resources:
  193. - deployments
  194. - pods
  195. - namespaces
  196. - daemonsets
  197. - statefulsets
  198. - storageclasses
  199. - nodes
  200. verbs:
  201. - api-resources
  202. - api-versions
  203. - cluster-info
  204. - describe
  205. - diff
  206. - explain
  207. - get
  208. - logs
  209. - top
  210. - auth
  211. - describe
  212. defaultNamespace:
  213. - default
  214. - pro
  215. - qa
  216. enabled: true
  217. restrictAccess: false
  218. upgradeNotifier: true
  219. ssl:
  220. enabled: false

使用Slack与BotKube对话

1、先ping下BotKube,看看输出

2、查看可使用的命令

3、以对话的形式执行kubectl命令,例如获取pod,更多命令可以自己测试...

4、验证slack收集kubernetes事件信息,例如创建一个新的pod,这里以nginx为例

我这里直接用lens连接集群,创建一个名为nginx的deployment,



直接创建即可,然后来到slack可以看到如下信息,即botkube将这个create事件消息推送到了你的slack频道。



现在删除deployment,再看slack频道,收到delete的消息



更多好玩的功能,请自行体会吧。。。

以对话的形式管理你的Kubernetes集群的更多相关文章

  1. 谈一下Docker与Kubernetes集群的日志和日志管理

    本文的测试环境为CentOS 7.3,Kubernetes集群为1.11.2,安装步骤参见kubeadm安装kubernetes V1.11.1 集群 日志对于我们管理Kubernetes集群及其上的 ...

  2. kubeadm部署Kubernetes集群

    Preface 通过kubeadm管理工具部署Kubernetes集群,相对离线包的二进制部署集群方式而言,更为简单与便捷.以下为个人学习总结: 两者区别在于前者部署方式使得大部分集群组件(Kube- ...

  3. Kubernetes集群管理工具kubectl命令技巧大全

    一. kubectl概述 Kubectl是用于控制Kubernetes集群的命令行工具,通过kubectl能够对集群本身进行管理,并能够在集群上进行容器化应用的安装部署. kubectl命令的语法如下 ...

  4. 基于Python+Django的Kubernetes集群管理平台

    ➠更多技术干货请戳:听云博客 时至今日,接触kubernetes也有一段时间了,而我们的大部分业务也已经稳定地运行在不同规模的kubernetes集群上,不得不说,无论是从应用部署.迭代,还是从资源调 ...

  5. 高可用Kubernetes集群-15. 部署Kubernetes集群统一日志管理

    参考文档: Github:https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/fluentd-elasticsear ...

  6. Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之集群部署环境规划(一)

    0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.环境规划 软件 版本 ...

  7. 快速部署Kubernetes集群管理

    这篇文章介绍了如何快速部署一套Kubernetes集群,下面就快速开始吧! 准备工作 //关闭防火墙 systemctl stop firewalld.service systemctl disabl ...

  8. kubernetes集群管理之通过jq来截取属性

    系列目录 首先要声明,这里的jq并不是批前端框架里的jquery,而是一个处理json的命令行工具. jq工具相比yq,它更加成熟,功能也更加强大,主要表现在以下几个方面 支持递归查找(我点对我们平时 ...

  9. 阿里云上万个 Kubernetes 集群大规模管理实践

    点击下载<不一样的 双11 技术:阿里巴巴经济体云原生实践> 本文节选自<不一样的 双11 技术:阿里巴巴经济体云原生实践>一书,点击上方图片即可下载! 作者 | 汤志敏,阿里 ...

随机推荐

  1. Linux_计划任务理论概述

    一.计划任务概述 1.计划任务概述: 计划任务分为: 一次性任务 周期性任务 在Linux系统的计划任务服务crond 可以满足周期性执行任务的需求. crond进程每分钟会处璇一次计划任务,计划任务 ...

  2. nginx负载均衡搭建phpmyadmin加入redis了解session会话原理

    myphpadmin项目理解cookie和session 当我们平时上网的时候,在刷新之后或者退出浏览器再次打开浏览器不需要登陆网页了,这就是利用了cookie和session: 环境配置 hostn ...

  3. Linux(CentOS 7) 安全加固之非业务端口服务关闭 postfix port 25

    目录 关闭TCP 25 端口对应的服务 1. 确认对应端口的进程 2. 查找与关闭对应服务 3. 确认结果,端口已关闭 关闭TCP 25 端口对应的服务 [0 root@Qvps /root] #ca ...

  4. EVE-NG 入门教程 (Mac OSX BIg Sur)

    EVE-NG 入门搭建指南 1. 什么是 EVE-NG EVE-NG (Emulate d Virtual Environment) 是一个可以运行虚拟主机.网络设备的模拟器,目前该软件分为了社区版. ...

  5. js--手动实现一个常见的短信验证码输入框

    前言 本文记录一下自己手动实现的一个前端常见的短信验证码输入组件,从需求到实现逐步优化的过程. 正文 1.需求分析 首先看一下效果图. 首先页面加载的时候,输入框获取焦点,当用户输入一个数字后,焦点自 ...

  6. 深度学习编译与优化Deep Learning Compiler and Optimizer

    深度学习编译与优化Deep Learning Compiler and Optimizer

  7. Dockerfile构建实践

    Dockerfile构建实践 本文介绍了用于构建有效图像的推荐最佳实践和方法. Docker通过从一个Dockerfile文本文件中读取指令来自动构建映像,该文本文件按顺序包含构建给定映像所需的所有命 ...

  8. 10分钟内基于gpu的目标检测

    10分钟内基于gpu的目标检测 Object Detection on GPUs in 10 Minutes 目标检测仍然是自动驾驶和智能视频分析等应用的主要驱动力.目标检测应用程序需要使用大量数据集 ...

  9. python+requests接口用例

    本实例通过请求接口登录系统,获取了配置项的ID,并最终实现了对配置项的默认值进行修改 使用到的接口请求方法有:get(查询) ,post(新增),put(修改) 遇到的阻碍点见下面具体代码处的详解 编 ...

  10. 【NX二次开发】获取指定矩阵标识的矩阵值

    函数:UF_CSYS_ask_matrix_values () 函数说明:获取指定矩阵标识的矩阵值. 用法: #include <uf.h> #include <uf_csys.h& ...