在 part 1 中,我们探讨了目前比较流行的四种 OpenAI 开源工具。在今天的 part 2 中我们将探究另外三种不同的 OpenAI 开源工具并介绍一些与 Appilot 相关的内容。

Kubectl-GPT

Kubectl-GPT 是一个 kubectl 插件,可使用 GPT 模型从自然语言输入生成 kubectl 命令。该插件引入了 kubectl GPT 命令,它的唯一使命就是在 Kubernetes 集群中实现您的请求。

安装

Homebrew

# Install Homebrew: https://brew.sh/
brew tap devinjeon/kubectl-gpt https://github.com/devinjeon/kubectl-gpt
brew install kubectl-gpt

Krew

# Install Krew: https://krew.sigs.k8s.io/docs/user-guide/setup/install/
kubectl krew index add devinjeon https://github.com/devinjeon/kubectl-gpt
kubectl krew install devinjeon/gpt

需要使用自然语言输入运行命令行工具,生成 kubectl 命令。

kubectl gpt "<WHAT-YOU-WANT-TO-DO>"

前提条件

开始之前,请确保将 OpenAI API 密钥设置为名为 OPENAI_API_KEY 的环境变量。

然后您可以在 .zshrc.bashrc 文件中添加以下一行:

export OPENAI_API_KEY=<your-key>

当然,这取决于 OpenAI GPT API 所支持的语言,比如:

# English
kubectl gpt "Print the creation time and pod name of all pods in all namespaces."
kubectl gpt "Print the memory limit and request of all pods"
kubectl gpt "Increase the replica count of the coredns deployment to 2"
kubectl gpt "Switch context to the kube-system namespace"

Kube-Copilot

它是由 OpenAI 提供支持的 Kubernetes Copilot。主要功能为:

  • 使用 ChatGPT(GPT-4 或 GPT-3.5)自动执行 Kubernetes 集群操作
  • 诊断和分析 Kubernetes 工作负载的潜在问题。
  • 根据提供的提示说明生成 Kubernetes 清单。
  • 利用本地 kubectl 和 trivy 命令进行 Kubernetes 集群访问和安全漏洞扫描。
  • 无需离开终端即可访问网络并执行 Google 搜索

安装

在 Kubernetes 中运行时

Option 1:使用带 Helm 的 Web UI(推荐)

# Option 1: OpenAI
export OPENAI_API_KEY="<replace-this>"
helm install kube-copilot kube-copilot \
--repo https://feisky.xyz/kube-copilot \
--set openai.apiModel=gpt-4 \
--set openai.apiKey=$OPENAI_API_KEY # Option 2: Azure OpenAI Service
export OPENAI_API_KEY="<replace-this>"
export OPENAI_API_BASE="<replace-this>"
helm install kube-copilot kube-copilot \
--repo https://feisky.xyz/kube-copilot \
--set openai.apiModel=gpt-4 \
--set openai.apiKey=$OPENAI_API_KEY \
--set openai.apiBase=$OPENAI_API_BASE
# Forwarding requests to the service
kubectl port-forward service/kube-copilot 8080:80
echo "Visit http://127.0.0.1:8080 to use the copilot"

Option 2:使用带 CLI 的 kubectl

kubectl run -it --rm copilot \
--env="OPENAI_API_KEY=$OPENAI_API_KEY" \
--restart=Never \
--image=ghcr.io/feiskyer/kube-copilot \
-- execute --verbose 'What Pods are using max memory in the cluster'

在本地安装

使用下面的 pip 命令安装 copilot:

pip install kube-copilot

设置操作

  • 确保本地计算机上安装了 kubectl,并为 Kubernetes 集群访问配置了 kubeconfig 文件。
  • 安装 trivy 以评估容器映像安全问题(用于 audit 命令)。
  • 将 OpenAI API 密钥设置为 OPENAI_API_KEY 的环境变量,以启用 ChatGPT 功能。
  • 对于 Azure OpenAI 服务,还要设置 OPENAI_API_TYPE=azure,以及 OPENAI_API_BASE=https://<replace-this>.openai.azure.com/
  • Google 搜索默认为禁用。要启用它,请设置 GOOGLE_API_KEYGOOGLE_CSE_ID

使用 CLI的方法:直接在终端运行。

Usage: kube-copilot [OPTIONS] COMMAND [ARGS]...
Kubernetes Copilot powered by OpenAI
Options:
--version Show the version and exit.
--help Show this message and exit.
Commands:
analyze analyze issues for a given resource
audit audit security issues for a Pod
diagnose diagnose problems for a Pod
execute execute operations based on prompt instructions
generate generate Kubernetes manifests

审核 Pod 的安全问题:可以使用 kube-copilot audit POD [NAMESPACE] 来审核 Pod 的安全问题。

Usage: kube-copilot audit [OPTIONS] POD [NAMESPACE]
audit security issues for a Pod
Options:
--verbose Enable verbose information of copilot execution steps
--model MODEL OpenAI model to use for copilot execution, default is gpt-4
--help Show this message and exit.

诊断 Pod 存在的问题:利用 kube-copilot diagnose POD [NAMESPACE] 即能诊断 Pod 的问题。

Usage: kube-copilot diagnose [OPTIONS] POD [NAMESPACE]
diagnose problems for a Pod
Options:
--verbose Enable verbose information of copilot execution steps
--model MODEL OpenAI model to use for copilot execution, default is gpt-4
--help Show this message and exit.

分析 K8s Object 的潜在问题:运行 kube-copilot analyze RESOURCE NAME [NAMESPACE] 将分析给定资源对象的潜在问题。

Usage: kube-copilot analyze [OPTIONS] RESOURCE NAME [NAMESPACE]
analyze issues for a given resource
Options:
--verbose Enable verbose information of copilot execution steps
--model TEXT OpenAI model to use for copilot execution, default is gpt-4
--help Show this message and exit.

根据提示指令执行操作kube-copilot execute INSTRUCTIONS 能根据提示指令执行操作。它也可用于询问任何问题。

Usage: kube-copilot execute [OPTIONS] INSTRUCTIONS
execute operations based on prompt instructions
Options:
--verbose Enable verbose information of copilot execution steps
--model MODEL OpenAI model to use for copilot execution, default is gpt-4
--help Show this message and exit.

生成 Kubernetes 清单:使用 kube-copilot generate 命令,根据提示说明创建 Kubernetes 清单。生成清单后,系统会提示您确认是否要应用它们。

Usage: kube-copilot generate [OPTIONS] INSTRUCTIONS
generate Kubernetes manifests
Options:
--verbose Enable verbose information of copilot execution steps
--model TEXT OpenAI model to use for copilot execution, default is gpt-4
--help Show this message and exit.

Kubernetes ChatGPT bot

这是用于 Kubernetes 问题的 ChatGPT1 bot。它能向 AI 询问如何解决 Prometheus 警报,并获得精炼的回复。

Prometheus 将通过 webhook 接收器将警报转发给 bot。随后 bot 会向 OpenAI 发送查询,询问如何修复警报,您只需要耐心等待结果即可。

这样的 bot 是通过 Robusta.dev 实现的,一个用于响应 Kubernetes 警报的开源平台。我们还有一个用于多集群 Kubernetes 可观察性的 SaaS 平台。

一个 Slack 工作区即为设置它的前提条件。

然后,您只需:

  • 使用 Helm 安装 Robusta
  • 加载 ChatGPT playbook。将以下内容添加到 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: {}
  • generated_values.yaml 中添加 OpenAI API 密钥。确保编辑现有的 globalConfig 部分,不要添加重复的部分。
globalConfig:
chat_gpt_token: YOUR KEY GOES HERE
  • 进行 Helm 升级以应用新值
helm upgrade robusta robusta/robusta
--values=generated_values.yaml
--set clusterName=<YOUR_CLUSTER_NAME>
  • 将 Prometheus 警报发送到 Robusta。或者,直接使用 Robusta 捆绑的 Prometheus 堆栈。

演示

先部署损坏的 pod,使该 pod 将停留在待处理状态:

kubectl apply -f https://raw.githubusercontent.com/robusta-dev/kubernetes-demos/main/pending_pods/pending_pod_node_selector.yaml

随即立即触发 Prometheus 警报,跳过正常延迟:

robusta playbooks trigger prometheus_alert alert_name=KubePodCrashLooping namespace=default pod_name=example-pod

Slack 中会出现一个带有按钮的警报。单击该按钮向 ChatGPT 询问有关该警报的信息即可。

Appilot

Appilot 是一款面向 DevOps 场景的开源 AI 助手,它可以充分利用 AI 大语言模型的能力让用户直接输入自然语言进一步简化 K8s 管理体验。

Appilot 基于大语言模型进行推理,并且可以运行在本地个人电脑上。用户可以根据自身的需求和使用习惯,将 Appilot 集成到任意平台,进而实现通过输入自然语言即可调用后端平台的能力,轻松完成应用管理、环境管理、K8s debug 等任务。

Appilot 项目地址 https://github.com/seal-io/appilot

让 K8s 更简单!8款你不得不知的 AI 工具-Part 2的更多相关文章

  1. 取代 Mybatis Generator,这款代码生成神器配置更简单,开发效率更高!

    作为一名 Java 后端开发,日常工作中免不了要生成数据库表对应的持久化对象 PO,操作数据库的接口 DAO,以及 CRUD 的 XML,也就是 mapper. Mybatis Generator 是 ...

  2. 采用ADM2483磁隔离器让RS485接口更简单更安全

    采用ADM2483磁隔离器让RS485接口更简单更安全 摘要:本文介绍RS485的特点及应用,指出了普通RS485接口易损坏的问题,针对存在的问题介绍了以ADM2483为核心的磁隔离解决方案. 关键词 ...

  3. 中兴应用之星携手天翼开放平台:让APP开发更简单

    日前,业内率先的APP开发平台运营商中兴应用之星与中国电信天翼开放平台达成战略合作.即广大用户通过天翼开放平台,可直接享受到应用之星提供的"APP开发服务".   应用之星.中兴通 ...

  4. 深入解析 Kubebuilder:让编写 CRD 变得更简单

    作者 | 刘洋(炎寻) 阿里云高级开发工程师 导读:自定义资源 CRD(Custom Resource Definition)可以扩展 Kubernetes API,掌握 CRD 是成为 Kubern ...

  5. Facebook发布Tweaks:让微调iOS应用变得更简单

    假设,你正在开发一款iOS应用. 你的iOS应用有很多动画效果,而你(或你的设计师)希望让那些动画效果的持续时间恰到好处.那华丽的抽屉特效是应该耗时半秒钟,还是四分之三秒呢? 通常情况下,开发者会对合 ...

  6. 【热门技术】EventBus 3.0,让事件订阅更简单,从此告别组件消息传递烦恼~

    一.写在前面 还在为时间接收而烦恼吗?还在为各种组件间的消息传递烦恼吗?EventBus 3.0,专注于android的发布.订阅事件总线,让各组件间的消息传递更简单!完美替代Intent,Handl ...

  7. PostCSS一种更优雅、更简单的书写CSS方式

    Sass团队创建了Compass大大提升CSSer的工作效率,你无需考虑各种浏览器前缀兼,只需要按官方文档的书写方式去写,会得到加上浏览器前缀的代码,如下: .row { @include displ ...

  8. 【转】【C#】C# 5.0 新特性——Async和Await使异步编程更简单

    一.引言 在之前的C#基础知识系列文章中只介绍了从C#1.0到C#4.0中主要的特性,然而.NET 4.5 的推出,对于C#又有了新特性的增加--就是C#5.0中async和await两个关键字,这两 ...

  9. [转]九个Console命令,让js调试更简单

    转自:九个Console命令,让js调试更简单 一.显示信息的命令 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <!DOCTYPE html> <html ...

  10. Swift让编程更简单 人人都是开发者

    全称为苹果全球开发者大会的WWDC,每年的这个时候,都会如这段时间前后所举行的Google I/O 和微软的BUILD开发者会议一样,吸引全球科技媒体的目光.近几年来,因为在会上爆的猛料越来越多,“开 ...

随机推荐

  1. [转帖]JVM 问题诊断快速入门

    https://zhuanlan.zhihu.com/p/110197145 JVM 全称为 Java Virtual Machine,翻译为中文 "Java 虚拟机".本文中的J ...

  2. Redis6.x 在Windows上面编译安装的过程

    背景说明 在github上面仅能够找到 redis3.2.100的Windows安装文件 比较新的版本比较难以找到, 同事经常出现这个版本的redis卡死的情况, 所以想尝试进行一下升级. 第一部分下 ...

  3. 商智C店H5性能优化实战

    前言 商智C店,是依托移动低码能力搭建的一个应用,产品面向B端商家.随着应用体量持续增大,考虑产品定位及用户体验,我们针对性能较差页面做了一次优化,并取得了不错的效果,用户体验值(UEI)从一般提升到 ...

  4. 高性能MySQL实战(二):索引 | 京东物流技术团队

    我们在上篇 高性能MySQL实战(一):表结构 中已经建立好了表结构,这篇我们则是针对已有的表结构和搜索条件为表创建索引. 1. 根据搜索条件创建索引 我们还是先将表结构的初始化 SQL 拿过来: C ...

  5. 2023年了,做SEO还有必要吗?

    作者:京东科技 吴磊 搜索引擎工作原理 在搜索引擎网站的后台会有一个非常庞大的数据库,里面存储了海量的关键词,而每个关键词又对应着很多网址,这些网址是被称之为"搜索引擎蜘蛛"或&q ...

  6. js设置setAttribute、获取getAttribute、删除removeAttribute详细讲解

    setAttribute的理解 所有主流浏览器均支持 setAttribute() 方法. element.setAttribute(keys,cont) keys==>必需(String类型) ...

  7. export default 和 export 这两种方式导出的区别

    参考地址 https://blog.csdn.net/sleepwalker_1992/article/details/81461543 使用export向外暴露的成员,只能使用{ }的形式来接收,这 ...

  8. statsvn只支持到svn1.3

    怎样找出svn修改次数最多的文件? 我想统计配置表中,那个配置文件修改次数最多,但经过实践发现statsvn只支持到1.3的版本. 通过svn的命令行接口,把提交记录保存到xml中,再通过自己写代码解 ...

  9. vim 从嫌弃到依赖(19)——替换

    之前讨论了关于在vim中使用正则表达式的相关知识能方便的进行搜索,现在在之前的基础之上继续来讨论如何进行替换操作. substitute 简介 substitute 允许我们先查找一段文本并用新的文本 ...

  10. MySQL【二】---数据库查询详细教程{查询、排序、聚合函数、分组}

    1.数据准备.基本的查询(回顾一下) 创建数据库 create database python_test charset=utf8; 查看数据库: show databases; 使用数据库: use ...