为Kubernetes集群部署一个ChatGPT机器人 上

本文涉及的产品
可观测监控 Prometheus 版,每月50GB免费额度
简介: 为Kubernetes集群部署一个ChatGPT机器人 上



今天我想分享一个有趣的项目叫做 “K8s ChatGPT Bot[1]”。该项目的目的是为 K8s 集群部署一个 ChatGPT 机器人。我们可以询问 ChatGPT 帮助我们解决 Prometheus 的警报,可以得到简洁的答复,不再需要一人在黑暗中独自解决警报问题!

我们需要用到 Robusta[2],如果你还没有 Robusta,可以参考《K8s — Robusta, K8s Troubleshooting Platform[3]》搭建一个 Robusta 平台。

下图是 Robusta 平台如何工作的截图:

你可以在此处查看完整的演示视频:

https://www.loom.com/share/964cd8735a874287a9155c77320bdcdb

运行 K8s ChatGPT 机器人项目

该机器人项目是基于 Robusta.dev[4] 实现的,Robusta.dev 是一个用于响应 K8s 警报的开源平台。其工作流程大致如下:

  • Prometheus 使用 Webhook 接收器将警报转发给 Robusta.dev 。
  • Robusta.dev 询问 ChatGPT 如何修复 Prometheus 警报。

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

先决条件

  • Slack
  • Kubernetes 集群
  • Python 3.7 及以上

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

如何安装 Robusta

生成 Robusta 配置文件

为 Robusta 准备 Python 虚拟环境。

$ python3.10 -m venv robusta
$ source robusta/bin/activate
(robusta) $ pip install -U robusta-cli --no-cache
Collecting robusta-cli
Downloading robusta_cli-0.10.10-py3-none-any.whl (223 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 223.8/223.8 kB 30.0 MB/s eta 0:00:00
Collecting pymsteams<0.2.0,>=0.1.16
  Downloading pymsteams-0.1.16.tar.gz (7.6 kB)
  Preparing metadata (setup.py) ... done
...
Successfully installed PyJWT-2.4.0 appdirs-1.4.4 autopep8-2.0.1 black-21.5b2 
cachetools-5.2.1 certifi-2022.12.7 cffi-1.15.1 charset-normalizer-3.0.1 
... 
ruamel.yaml.clib-0.2.7 six-1.16.0 slack-sdk-3.19.5 tenacity-8.1.0 
toml-0.10.2 tomli-2.0.1 typer-0.4.2 typing-extensions-4.4.0 urllib3-1.26.14
 watchgod-0.7 webexteamssdk-1.6.1 websocket-client-1.3.3

使用 robusta 生成一个配置文件:

$ robusta gen-config
Robusta reports its findings to external destinations (we call them "sinks").
We'll define some of them now.
Configure Slack integration? This is HIGHLY recommended. [Y/n]: Y
If your browser does not automatically launch, open the below url:
https://api.robusta.dev/integrations/slack?id=xxxx

配置 Slack 集成

使用浏览器打开网页:https://api.robusta.dev/integrations/slack?id=xxxx

更新权限:

恭喜你配置 Slack 集成成功。

现在回到我们的 Terminal 终端,我们可以看到以下内容,说明操作成功:

$ robusta gen-config
Robusta reports its findings to external destinations (we call them "sinks").
We'll define some of them now.
Configure Slack integration? This is HIGHLY recommended. [Y/n]: Y
If your browser does not automatically launch, open the below url:
https://api.robusta.dev/integrations/slack?id=xxxx
You've just connected Robusta to the Slack of: devopsfans
Which slack channel should I send notifications to? # k8s-chatgpt-bot
Configure Robusta UI sink? This is HIGHLY recommended. [Y/n]: Y
Enter your Gmail/Google address. This will be used to login: xxx@gmail.com
Choose your account name (e.g your organization name): devopsfans
Successfully registered.
Robusta can use Prometheus as an alert source.
If you haven't installed it yet, Robusta can install a 
pre-configured Prometheus.
Would you like to do so? [y/N]: y
Please read and approve our End User License Agreement: 
https://api.robusta.dev/eula.html
Do you accept our End User License Agreement? [y/N]: y
Last question! Would you like to help us improve Robusta by sending exception reports? [y/N]: N
Saved configuration to ./generated_values.yaml - save this file for future use!
Finish installing with Helm (see the Robusta docs). 
Then login to Robusta UI at https://platform.robusta.dev
By the way, we'll send you some messages later to get feedback. 
(We don't store your API key, so we scheduled future messages using Slack's 
API)

在 slack channel 中,我们还可以看到:

使用 Helm3 安装 Robusta

安装和更新 robusta 仓库。

$ helm repo add robusta https://robusta-charts.storage.googleapis.com && helm repo update
"robusta" has been added to your repositories
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "kedacore" chart repository
...Successfully got an update from the "robusta" chart repository
...Successfully got an update from the "grafana" chart repository
...Successfully got an update from the "prometheus-community" chart repository
...Successfully got an update from the "stable" chart repository
Update Complete. ⎈Happy Helming!⎈

更新 generated_values.yaml 文件

使用以下内容更新 generated_values.yaml 文件:

playbookRepos:
  chatgpt_robusta_actions:
    url: "https://github.com/robusta-dev/kubernetes-chatgpt-bot.git"
customPlaybooks:
# Add the 'Ask ChatGPT' button to all Prometheus alerts
- triggers:
  - on_prometheus_alert: {}
  actions:
  - chat_gpt_enricher: {}
globalConfig:
  chat_gpt_token: YOUR KEY GOES HERE

将 Robusta 部署到 K8s

$ helm install robusta robusta/robusta -f ./generated_values.yaml \ 
--set clusterName=dev-cluster

验证两个 Robusta pod 正常运行且在日志中没有发现错误日志:

$ kubectl get pods -A | grep robusta
default       alertmanager-robusta-kube-prometheus-st-alertmanager-0   2/2     Running     1 (4m19s ago)   9m25s
default       prometheus-robusta-kube-prometheus-st-prometheus-0       2/2     Running     0               9m25s
default       robusta-forwarder-6b7d8d9d88-2rv9d                       1/1     Running     0               9m29s
default       robusta-grafana-64944bfcdc-v97xh                         3/3     Running     0               9m29s
default       robusta-kube-prometheus-st-admission-patch-6zj4b         0/1     Completed   0               9m28s
default       robusta-kube-prometheus-st-operator-7b985d7fb-c9f9t      1/1     Running     0               9m29s
default       robusta-kube-state-metrics-688d794968-ll6gf              1/1     Running     0               9m29s
default       robusta-prometheus-node-exporter-2k5f7                   1/1     Running     0               5m24s
default       robusta-prometheus-node-exporter-zxsrg                   1/1     Running     0               9m29s
default       robusta-runner-5868b494d6-m6292                          1/1     Running     0               9m29s
$ robusta logs
setting up colored logging
2023-01-14 22:57:01.428 INFO     logger initialized using INFO log level
2023-01-14 22:57:01.429 INFO     Creating hikaru monkey patches
2023-01-14 22:57:01.429 INFO     Creating yaml monkey patch
2023-01-14 22:57:01.429 INFO     Creating kubernetes ContainerImage monkey patch
2023-01-14 22:57:01.430 INFO     watching dir /etc/robusta/playbooks/ for custom playbooks changes
2023-01-14 22:57:01.431 INFO     watching dir /etc/robusta/config/active_playbooks.yaml for custom playbooks changes
2023-01-14 22:57:01.431 INFO     Reloading playbook packages due to change on initialization
2023-01-14 22:57:01.431 INFO     loading config /etc/robusta/config/active_playbooks.yaml
2023-01-14 22:57:01.467 INFO     No custom playbooks defined at /etc/robusta/playbooks/storage
2023-01-14 22:57:01.468 INFO     Cloning git repo https://github.com/robusta-dev/kubernetes-chatgpt-bot.git. repo name kubernetes-chatgpt-bot
...
2023-01-14 22:57:07.364 INFO     connecting to server as account_id=8302df56-c554-4129-8b95-d143d1f2e3a2; cluster_name=dev-cluster
2023-01-14 22:57:07.977 INFO     Initializing services cache
2023-01-14 22:57:08.203 INFO     Initializing nodes cache
2023-01-14 22:57:08.395 INFO     Initializing jobs cache
2023-01-14 22:57:08.603 INFO     Getting events history
2023-01-14 22:57:10.403 INFO     Cluster historical data sent.
2023-01-14 23:04:43.681 INFO     cluster status {'account_id': '8302df56-c554-4129-8b95-d143d1f2e3a2', 'cluster_id': 'dev-cluster', 'version': '0.10.10', 'last_alert_at': '2023-01-14 23:04:18.959377', 'light_actions': ['related_pods', 'prometheus_enricher', 'add_silence', 'delete_pod', 'delete_silence', 'get_silences', 'logs_enricher', 'pod_events_enricher', 'deployment_events_enricher', 'job_events_enricher', 'job_pod_enricher', 'get_resource_yaml', 'node_cpu_enricher', 'node_disk_analyzer', 'node_running_pods_enricher', 'node_allocatable_resources_enricher', 'node_status_enricher', 'node_graph_enricher', 'oomkilled_container_graph_enricher', 'pod_oom_killer_enricher', 'oom_killer_enricher', 'volume_analysis', 'python_profiler', 'pod_ps', 'python_memory', 'debugger_stack_trace', 'python_process_inspector', 'prometheus_alert', 'create_pvc_snapshot'], 'updated_at': 'now()'}
相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
11月前
|
人工智能 自然语言处理 机器人
机器人迈向ChatGPT时刻!清华团队首次发现具身智能Scaling Laws
清华大学研究团队在机器人操作领域发现了数据规模定律,通过大规模数据训练,机器人策略的泛化性能显著提升。研究揭示了环境和对象多样性的重要性,提出了高效的數據收集策略,使机器人在新环境中成功率达到约90%。这一发现有望推动机器人技术的发展,实现更广泛的应用。
183 26
|
自然语言处理 机器人 Go
【飞书ChatGPT机器人】飞书接入ChatGPT,打造智能问答助手
【飞书ChatGPT机器人】飞书接入ChatGPT,打造智能问答助手
787 0
|
Kubernetes 监控 负载均衡
深入云原生:Kubernetes 集群部署与管理实践
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术以其弹性、可扩展性成为企业IT架构的首选。本文将引导你了解如何部署和管理一个Kubernetes集群,包括环境准备、安装步骤和日常维护技巧。我们将通过实际代码示例,探索云原生世界的秘密,并分享如何高效运用这一技术以适应快速变化的业务需求。
185 1
|
存储 Kubernetes Cloud Native
云原生之旅:Kubernetes 集群部署实践
【8月更文挑战第4天】本文将带领读者进入云原生的世界,通过实战演练,深入理解如何在云端构建和部署一个 Kubernetes 集群。我们不仅会探讨理论知识,更会通过代码示例,手把手教你从零开始搭建自己的 Kubernetes 环境。无论你是云原生新手,还是希望加深对 Kubernetes 的理解,这篇文章都将是你的不二选择。
|
Kubernetes 负载均衡 监控
深入云原生技术:Kubernetes集群部署与管理
【9月更文挑战第17天】在数字化转型的浪潮中,云原生技术以其灵活性和可扩展性成为企业新宠。本文将引导读者探索云原生的核心组件——Kubernetes,通过实际案例分析其部署与管理流程,旨在帮助技术从业者和企业决策者理解如何利用Kubernetes提升应用的可用性和性能。从基础概念到操作实践,我们将一同见证云原生技术的变革力量。
|
Kubernetes 监控 Cloud Native
云原生入门:Kubernetes 集群部署与管理
【8月更文挑战第38天】在数字化浪潮中,云原生技术如同翱翔的雄鹰,引领着企业飞向灵活高效的未来。本文将带你一探究竟,从Kubernetes的基础概念到实际操作,深入浅出地介绍如何在云端构建和管理你的容器化应用。我们将一步步搭建起一个小型的Kubernetes集群,并通过代码示例和图解,让你轻松掌握云原生世界的钥匙。让我们一起开启这趟技术之旅,探索云原生的秘密花园,找到那把打开创新之门的金钥匙。
|
Kubernetes Cloud Native 应用服务中间件
云原生之旅:Kubernetes集群部署与应用管理
【8月更文挑战第28天】在这篇文章中,我们将一起探索云原生技术的奇妙世界,尤其是围绕Kubernetes这一核心组件。从搭建一个基本的Kubernetes集群开始,到运行和管理容器化应用,每一步都将是一次深入浅出的学习旅程。无论你是初学者还是有经验的开发者,本指南都旨在为你提供清晰的操作步骤和必要的理论知识,让你能够自信地管理和扩展你的云原生应用。让我们携手开启这场技术冒险,共同见证云原生带来的无限可能。
|
Kubernetes 应用服务中间件 Linux
多Master节点的k8s集群部署
多Master节点的k8s集群部署
|
Kubernetes 监控 Cloud Native
云原生入门:Kubernetes 集群部署与管理
【8月更文挑战第31天】 在数字化浪潮中,云原生技术如同翱翔的雄鹰,引领着企业飞向灵活高效的未来。本文将带你一探究竟,从Kubernetes的基础概念到实际操作,深入浅出地介绍如何在云端构建和管理你的容器化应用。我们将一步步搭建起一个小型的Kubernetes集群,并通过代码示例和图解,让你轻松掌握云原生世界的钥匙。让我们一起开启这趟技术之旅,探索云原生的秘密花园,找到那把打开创新之门的金钥匙。
|
Kubernetes 安全 Docker
K8S集群部署
K8S集群部署
301 0

热门文章

最新文章

推荐镜像

更多