乐趣区

关于人工智能:让-K8s-更简单8款你不得不知的-AI-工具Part-2

在 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

退出移动版