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集群
helmrepoaddinfracloudiohttps://infracloudio.github.io/charts helmrepoupdate 请自行替换<>内的信息: helminstall--versionv0.12.1botkube--namespacebotkube\ --setcommunications.slack.enabled=true\ --setcommunications.slack.channel=<SLACK_CHANNEL_NAME>\ --setcommunications.slack.token=<SLACK_API_TOKEN_FOR_THE_BOT>\ --setconfig.settings.clustername=<CLUSTER_NAME>\ --setconfig.settings.kubectl.enabled=<ALLOW_KUBECTL>\ --setimage.repository=infracloudio/botkube\ --setimage.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、查看安装信息
#helmlist-nbotkube NAMENAMESPACEREVISIONUPDATEDSTATUSCHARTAPPVERSION botkubebotkube12021-07-0910:41:35.813245746+0800CSTdeployedbotkube-v0.12.1v0.12.1 #kubectlgetall-nbotkube NAMEREADYSTATUSRESTARTSAGE pod/botkube-747ff4dc5d-795hz1/1Running02d22h NAMEREADYUP-TO-DATEAVAILABLEAGE deployment.apps/botkube1/1112d22h NAMEDESIREDCURRENTREADYAGE replicaset.apps/botkube-747ff4dc5d1112d22h
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的消息
更多好玩的功能,请自行体会吧。。。
转载请注明:IT运维空间 » 运维技术 » 以对话的形式管理你的Kubernetes集群
发表评论