前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >让 K8s 更简单!8 款你不得不知的 AI 工具 - Part 2

让 K8s 更简单!8 款你不得不知的 AI 工具 - Part 2

作者头像
我的小碗汤
发布2024-04-02 16:59:46
1580
发布2024-04-02 16:59:46
举报
文章被收录于专栏:我的小碗汤

作者|Seifeddine Rajhi

翻译|Seal软件

链接|https://itnext.io/ai-and-kubernetes-open-source-tools-powered-by-ai-for-kubernetes-59d0fc29213e

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

Kubectl-GPT

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

安装

Homebrew:

代码语言:javascript
复制
# Install Homebrew: https://brew.sh/ 
brew tap devinjeon/kubectl-gpt https://github.com/devinjeon/kubectl-gpt
brew install kubectl-gpt

Krew:

代码语言:javascript
复制
# 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 命令。

代码语言:javascript
复制
kubectl gpt "<WHAT-YOU-WANT-TO-DO>"

前提条件

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

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

代码语言:javascript
复制
export OPENAI_API_KEY=<your-key>

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

代码语言:javascript
复制
# 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(推荐)

代码语言:javascript
复制
# 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

代码语言:javascript
复制
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:

代码语言:javascript
复制
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_KEY 和 GOOGLE_CSE_ID。

使用 UI 界面

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

代码语言:javascript
复制
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 的安全问题。

代码语言:javascript
复制
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 的问题。

代码语言:javascript
复制
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] 将分析给定资源对象的潜在问题。

代码语言:javascript
复制
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 能根据提示指令执行操作。它也可用于询问任何问题。

代码语言:javascript
复制
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 清单。生成清单后,系统会提示您确认是否要应用它们。

代码语言:javascript
复制
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
代码语言:javascript
复制
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 部分,不要添加重复的部分。
代码语言:javascript
复制
globalConfig:
  chat_gpt_token: YOUR KEY GOES HERE
  • 进行 Helm 升级以应用新值
代码语言:javascript
复制
helm upgrade robusta robusta/robusta 
 --values=generated_values.yaml 
 --set clusterName=<YOUR_CLUSTER_NAME>
  • 将 Prometheus 警报发送到 Robusta。或者,直接使用 Robusta 捆绑的 Prometheus 堆栈

演示

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

代码语言:javascript
复制
kubectl apply -f https://raw.githubusercontent.com/robusta-dev/kubernetes-demos/main/pending_pods/pending_pod_node_selector.yaml

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

代码语言:javascript
复制
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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-03-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 进击云原生 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
Prometheus 监控服务
Prometheus 监控服务(TencentCloud Managed Service for Prometheus,TMP)是基于开源 Prometheus 构建的高可用、全托管的服务,与腾讯云容器服务(TKE)高度集成,兼容开源生态丰富多样的应用组件,结合腾讯云可观测平台-告警管理和 Prometheus Alertmanager 能力,为您提供免搭建的高效运维能力,减少开发及运维成本。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档