以对话的形式管理你的Kubernetes集群

运维 系统运维
BotKube 是一个用于监控和调试 Kubernetes 集群的消息传递工具。 BotKube 可以与多个消息传递平台(如 Slack、Mattermost 或 Microsoft Teams)集成。

[[413423]]

BotKube

BotKube 是一个用于监控和调试 Kubernetes 集群的消息传递工具。 BotKube 可以与多个消息传递平台(如 Slack、Mattermost 或 Microsoft Teams)集成,以帮助您监控 Kubernetes 集群、调试关键部署,并通过对 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. 请自行替换<>内的信息: 
  5. helm install --version v0.12.1 botkube --namespace botkube \ 
  6.   --set communications.slack.enabled=true \ 
  7.   --set communications.slack.channel=<SLACK_CHANNEL_NAME> \ 
  8.   --set communications.slack.token=<SLACK_API_TOKEN_FOR_THE_BOT> \ 
  9.   --set config.settings.clustername=<CLUSTER_NAME> \ 
  10.   --set config.settings.kubectl.enabled=<ALLOW_KUBECTL> \ 
  11.   --set image.repository=infracloudio/botkube \ 
  12.   --set image.tag=v0.12.1 \ 
  13.   infracloudio/botkube 
  14.  
  15.  
  16. - SLACK_CHANNEL_NAME 是添加@BotKube 的频道名称 
  17. - SLACK_API_TOKEN_FOR_THE_BOT 是将 BotKube 应用程序安装到 Slack 工作区后收到的令牌 
  18. - CLUSTER_NAME 是在传入消息中设置的集群名称 
  19. - 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.  
  8. NAME                      READY   UP-TO-DATE   AVAILABLE   AGE 
  9. deployment.apps/botkube   1/1     1            1           2d22h 
  10.  
  11. NAME                                 DESIRED   CURRENT   READY   AGE 
  12. 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,看看输出

以对话的形式管理你的Kubernetes集群

2、查看可使用的命令

以对话的形式管理你的Kubernetes集群

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

以对话的形式管理你的Kubernetes集群

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

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

以对话的形式管理你的Kubernetes集群

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

以对话的形式管理你的Kubernetes集群

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

以对话的形式管理你的Kubernetes集群

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

 

责任编辑:姜华 来源: 今日头条
相关推荐

2022-01-21 09:45:42

Mozilla SOKubernetesLinux

2019-07-13 14:21:04

LinuxShell命令

2020-07-27 18:52:34

Kubernetes集群工具

2020-09-09 07:00:00

Kubernetes集群容器

2021-12-30 07:42:13

Kubernetes集群架构

2011-06-20 10:00:50

布线智能管理

2020-07-08 08:03:37

KubernetesLens集群

2019-09-09 09:30:59

Git行程Linux

2013-05-03 10:04:16

WorkstationvSphere

2012-05-10 10:45:40

2022-02-25 07:38:35

Linux

2021-06-15 15:00:08

Cockpit树莓派Linux

2022-04-18 16:28:30

Linux

2022-05-24 09:00:00

云计算Kubernetes安全

2021-02-07 08:00:00

Kubernetes集群云原生

2023-06-27 17:37:08

Kubernete容器集群

2022-04-16 19:04:49

Linuxpass 命令

2019-05-30 10:20:10

Linux环境变量命令

2012-06-06 10:09:31

iPad数据中心

2022-06-30 15:48:52

rustupRust
点赞
收藏

51CTO技术栈公众号