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

安装BotKube
1、本文使用slack作为消息接收平台,需要自行注册slack,拿到Access token
xoxb-2169032185141-2256603089394-qeLWxe0sUtwfdlwnk6VWbw11
2、将 BotKube 用户添加到 Slack 频道
将 BotKube 应用程序安装到您的 Slack 工作区后,您会看到一个名为“BotKube”的新机器人用户添加到您的工作区中。 将该机器人添加到您想要接收通知的 Slack 频道。
(您可以通过在频道中邀请@BotKube 来添加它)
3、使用helm把BotKube安装到kubernrtes集群
helm repo add infracloudio https://infracloudio.github.io/charts
helm repo update
请自行替换<>内的信息:
helm install --version v0.12.1 botkube --namespace botkube \
--set communications.slack.enabled=true \
--set communications.slack.channel=<SLACK_CHANNEL_NAME> \
--set communications.slack.token=<SLACK_API_TOKEN_FOR_THE_BOT> \
--set config.settings.clustername=<CLUSTER_NAME> \
--set config.settings.kubectl.enabled=<ALLOW_KUBECTL> \
--set image.repository=infracloudio/botkube \
--set image.tag=v0.12.1 \
infracloudio/botkube
- SLACK_CHANNEL_NAME 是添加@BotKube 的频道名称
- SLACK_API_TOKEN_FOR_THE_BOT 是将 BotKube 应用程序安装到 Slack 工作区后收到的令牌
- CLUSTER_NAME 是在传入消息中设置的集群名称
- ALLOW_KUBECTL 设置为 true 以允许 BotKube 在集群上执行 kubectl 命令
4、查看安装信息
# helm list -n botkube
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
botkube botkube 1 2021-07-09 10:41:35.813245746 +0800 CST deployed botkube-v0.12.1 v0.12.1
# kubectl get all -n botkube
NAME READY STATUS RESTARTS AGE
pod/botkube-747ff4dc5d-795hz 1/1 Running 0 2d22h
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/botkube 1/1 1 1 2d22h
NAME DESIRED CURRENT READY AGE
replicaset.apps/botkube-747ff4dc5d 1 1 1 2d22h
5、如果你需要修改配置,可以更新botkube-configmap,默认设置如下
recommendations: true
resources:
- events:
- create
- delete
- error
name: v1/pods
namespaces:
ignore:
- null
include:
- all
- events:
- create
- delete
- error
name: v1/services
namespaces:
ignore:
- null
include:
- all
- events:
- create
- update
- delete
- error
name: apps/v1/deployments
namespaces:
ignore:
- null
include:
- all
updateSetting:
fields:
- spec.template.spec.containers[*].image
- status.availableReplicas
includeDiff: true
- events:
- create
- update
- delete
- error
name: apps/v1/statefulsets
namespaces:
ignore:
- null
include:
- all
updateSetting:
fields:
- spec.template.spec.containers[*].image
- status.readyReplicas
includeDiff: true
- events:
- create
- delete
- error
name: networking.k8s.io/v1beta1/ingresses
namespaces:
ignore:
- null
include:
- all
- events:
- create
- delete
- error
name: v1/nodes
namespaces:
ignore:
- null
include:
- all
- events:
- create
- delete
- error
name: v1/namespaces
namespaces:
ignore:
- null
include:
- all
- events:
- create
- delete
- error
name: v1/persistentvolumes
namespaces:
ignore:
- null
include:
- all
- events:
- create
- delete
- error
name: v1/persistentvolumeclaims
namespaces:
ignore:
- null
include:
- all
- events:
- create
- delete
- error
name: v1/configmaps
namespaces:
ignore:
- null
include:
- all
- events:
- create
- update
- delete
- error
name: apps/v1/daemonsets
namespaces:
ignore:
- null
include:
- all
updateSetting:
fields:
- spec.template.spec.containers[*].image
- status.numberReady
includeDiff: true
- events:
- create
- update
- delete
- error
name: batch/v1/jobs
namespaces:
ignore:
- null
include:
- all
updateSetting:
fields:
- spec.template.spec.containers[*].image
- status.conditions[*].type
includeDiff: true
- events:
- create
- delete
- error
name: rbac.authorization.k8s.io/v1/roles
namespaces:
ignore:
- null
include:
- all
- events:
- create
- delete
- error
name: rbac.authorization.k8s.io/v1/rolebindings
namespaces:
ignore:
- null
include:
- all
- events:
- create
- delete
- error
name: rbac.authorization.k8s.io/v1/clusterrolebindings
namespaces:
ignore:
- null
include:
- all
- events:
- create
- delete
- error
name: rbac.authorization.k8s.io/v1/clusterroles
namespaces:
ignore:
- null
include:
- all
settings:
clustername: k8s-2
configwatcher: true
kubectl:
commands:
resources:
- deployments
- pods
- namespaces
- daemonsets
- statefulsets
- storageclasses
- nodes
verbs:
- api-resources
- api-versions
- cluster-info
- describe
- diff
- explain
- get
- logs
- top
- auth
- describe
defaultNamespace:
- default
- pro
- qa
enabled: true
restrictAccess: false
upgradeNotifier: true
ssl:
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集群的更多相关文章
- 谈一下Docker与Kubernetes集群的日志和日志管理
本文的测试环境为CentOS 7.3,Kubernetes集群为1.11.2,安装步骤参见kubeadm安装kubernetes V1.11.1 集群 日志对于我们管理Kubernetes集群及其上的 ...
- kubeadm部署Kubernetes集群
Preface 通过kubeadm管理工具部署Kubernetes集群,相对离线包的二进制部署集群方式而言,更为简单与便捷.以下为个人学习总结: 两者区别在于前者部署方式使得大部分集群组件(Kube- ...
- Kubernetes集群管理工具kubectl命令技巧大全
一. kubectl概述 Kubectl是用于控制Kubernetes集群的命令行工具,通过kubectl能够对集群本身进行管理,并能够在集群上进行容器化应用的安装部署. kubectl命令的语法如下 ...
- 基于Python+Django的Kubernetes集群管理平台
➠更多技术干货请戳:听云博客 时至今日,接触kubernetes也有一段时间了,而我们的大部分业务也已经稳定地运行在不同规模的kubernetes集群上,不得不说,无论是从应用部署.迭代,还是从资源调 ...
- 高可用Kubernetes集群-15. 部署Kubernetes集群统一日志管理
参考文档: Github:https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/fluentd-elasticsear ...
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之集群部署环境规划(一)
0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.环境规划 软件 版本 ...
- 快速部署Kubernetes集群管理
这篇文章介绍了如何快速部署一套Kubernetes集群,下面就快速开始吧! 准备工作 //关闭防火墙 systemctl stop firewalld.service systemctl disabl ...
- kubernetes集群管理之通过jq来截取属性
系列目录 首先要声明,这里的jq并不是批前端框架里的jquery,而是一个处理json的命令行工具. jq工具相比yq,它更加成熟,功能也更加强大,主要表现在以下几个方面 支持递归查找(我点对我们平时 ...
- 阿里云上万个 Kubernetes 集群大规模管理实践
点击下载<不一样的 双11 技术:阿里巴巴经济体云原生实践> 本文节选自<不一样的 双11 技术:阿里巴巴经济体云原生实践>一书,点击上方图片即可下载! 作者 | 汤志敏,阿里 ...
随机推荐
- 攻防世界(一)baby_web
攻防世界系列:baby_web 方法一: 按照提示,初始界面自然想到index.php,访问后界面(注意到URL)仍是1.php 打开hackbar查看响应,发现确实有index.php点开看到了Fl ...
- Windows 10 创建虚拟网卡
想把虚拟机桥接到我的电脑,但我连的是无线网电脑没查网线,所以就创建个虚拟网卡吧. 1.win + x 打开设备管理器 2.网络适配器 + 操作 + 添加过时硬件 3.下一步 4.选-->安 ...
- 记一次MySQL(5.7版本)数据库的主从同步和备份
我遇到的问题 我先后在BAT三大云服务器商购买了学生机,配置如下 百度云2核/4G 阿里云1核/2G 腾讯云1核/2G 我的解决方案 由于我不知道百度云的续费规则,导致买了2核/4G的服务器之后以为像 ...
- session.flush()与session.clear()区别与使用环境
session是有一级缓存的,目的是为了减少查询数据库的时间,提高效率,生命周期与session是一样的 session.flush() 是将session的缓存中的数据与数据库同步 事物提交失败 缓 ...
- 『政善治』Postman工具 — 14、NewMan工具的使用详解
目录 1.NewMan工具的介绍 2.NewMan的安装 (1)安装 (2)验证NewMan环境: (3)NewMan卸载命令 3.NewMan执行Postman测试集 (1)导出collection ...
- Splunk 8.2.0 发布 (macOS, Linux, Windows)
强烈鄙视 CSDN 用户 CIAS(账号:hanzheng260561728),盗用本站资源,删除原文链接,并且用于收费下载!!! 请访问原文链接:https://sysin.org/article/ ...
- MindSpore模型推理
MindSpore模型推理 如果想在应用中使用自定义的MindSpore Lite模型,需要告知推理器模型所在的位置.推理器加载模型的方式有以下三种: 加载本地模型. 加载远程模型. 混合加载本地和远 ...
- 编写HSA内核
编写HSA内核 介绍 HSA提供类似于OpenCL的执行模型.指令由一组硬件线程并行执行.在某种程度上,这类似于 单指令多数据(SIMD)模型,但具有这样的便利:细粒度调度对于程序员而言是隐藏的,而不 ...
- 菜鸟刷题路:剑指 Offer 05. 替换空格
剑指 Offer 05. 替换空格 class Solution { public String replaceSpace(String s) { StringBuilder str = new St ...
- 【NX二次开发】开发好几年,还只会用ufusr?其他用户出口函数介绍
用户出口(User Exit)是NX Open 中的一个重要概念.NX在运行过程中某些特定的位置存在规定的出口,当进程执行到这些出口时,NX会自动检查用户是否在此处已定义了指向内部程序位置的环境变量: ...