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

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

 

Kubectl-GPT

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

 

640.gif

 

安装

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

 

image.png

 

使用 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 resourceaudit     audit security issues for a Poddiagnose  diagnose problems for a Podexecute   execute operations based on prompt instructionsgenerate  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 警报,并获得精炼的回复。

 

6401.gif

 

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/262216.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL加锁策略详解

我们主要从三个方面来讨论这个问题&#xff1a; 啥时候加&#xff1f;如何加&#xff1f;什么时候该加什么时候不该加&#xff1f; 1、啥时候加 1.1 显式锁 MySQL 的加锁可以分为显式加锁和隐式加锁&#xff0c;显式加锁我们比较好识别的&#xff0c;因为他往往直接体现在 S…

【Git工具实战】实用真实 Git 开发工作流程

前言 最近工作中发现&#xff0c;很多开发人员连最基本的Git怎么使用都不知道&#xff0c;比如什么时候切分支&#xff0c;什么时候合并代码&#xff0c;代码遇到冲突怎么办&#xff0c;经常出现掉代码&#xff0c;代码合并后丢失的情况。以下为个人总结的常规Git开发工作流程…

创建型设计模式 - 原型设计模式 - JAVA

原型设计模式 一 .简介二. 案例三. 补充知识 前言 这是我在这个网站整理的笔记,有错误的地方请指出&#xff0c;关注我&#xff0c;接下来还会持续更新。 作者&#xff1a;神的孩子都在歌唱 一 .简介 原型模式提供了一种机制&#xff0c;可以将原始对象复制到新对象&#xff0…

什么是车规级芯片?车规级芯片之NCV8450ASTT3G 自保护高压侧驱动器

关于车规级芯片&#xff1a; 关于车规级芯片&#xff08;Automotive Grade Chip&#xff09;&#xff0c;车规级芯片是专门用于汽车行业的芯片&#xff0c;具有高可靠性、高稳定性和低功耗等特点&#xff0c;以满足汽车电子系统的严格要求。这些芯片通常用于车载电子控制单元&…

mysql优化指南之原理篇

之前碰到一个线上问题&#xff0c;在接手一个同事的项目后&#xff0c;因为工期比较赶&#xff0c;我还没来得及了解业务背景和大致实现&#xff0c;只是了解了上线发布的顺序和验证方式就进行了上线&#xff0c;在上线进行金丝雀的时候系统还没发生什么异常&#xff0c;于是我…

数据结构D3作业

1. 2. 按位插入 void insert_pos(seq_p L,datatype num,int pos) { if(LNULL) { printf("入参为空&#xff0c;请检查\n"); return; } if(seq_full(L)1) { printf("表已满&#xff0c;不能插入\n"); …

ArcgisForJS如何使用ArcGIS Server发布的切片地图服务?

文章目录 0.引言1.准备海量地理数据2.ArcGIS Server发布切片地图服务3.ArcgisForJS使用ArcGIS Server发布的切片地图服务 0.引言 ArcGIS Server是一个由Esri开发的地理信息系统&#xff08;GIS&#xff09;服务器软件&#xff0c;它提供了许多功能&#xff0c;包括发布切片地图…

ES项目应用

配置: ES存储了2-3亿条&#xff0c;几百GB ES集群有5 个节点 2主2副 ES返回数据量窗口大小设置 index.max_result_window 深度翻页 1.from size 方式 2.scroll相当于维护了一份当前索引段的快照信息&#xff0c;这个快照信息是你执行这个scroll查询时的快照。在这个查询后的任…

JavaScript原型继承与面向对象编程思想

原型继承与面向对象编程思想 在JavaScript中&#xff0c;原型(prototype)、构造函数(constructor)和实例对象(instance)是面向对象编程中的重要概念&#xff0c;并且它们之间存在着紧密的关系。 原型(prototype)&#xff1a;原型是JavaScript中对象之间关联的一种机制。每个Ja…

grid新建主从一对多

目录 总结一、步骤前端1.第一步-编写tabs的modelBody2.第二步编辑表扩展js 后端--重写表的add和Update方法1.第一步 总结 编写tabs的modelBody后编辑表扩展js在重写后端partial的Service 一、步骤 前端 1.第一步-编写tabs的modelBody 复制下面代码该改的改 <template&…

Leetcoder Day17| 二叉树 part06

语言&#xff1a;Java/C 654.最大二叉树 给定一个不含重复元素的整数数组。一个以此数组构建的最大二叉树定义如下&#xff1a; 二叉树的根是数组中的最大元素。左子树是通过数组中最大值左边部分构造出的最大二叉树。右子树是通过数组中最大值右边部分构造出的最大二叉树。 …

PLC设置网口通讯的原因

PLC设置网口通讯功能&#xff0c;是现场总线向工业以太网的迈进&#xff0c;更是为了在网口之上构建更为庞大、开放的大一统的生态系统。 有了以太网&#xff0c;特别是TCP/IP协议后&#xff0c;全员工控人的日常工作更为便利了。 主要体现在以下4点&#xff1a; 1.再也不需要…

linux逻辑卷/dev/mapper/centos-root扩容增加空间

centos7中/dev/mapper/centos-root扩容 问题文件系统根目录&#xff0c;/dev/mapper/centos-root空间满了&#xff0c;导致k8s不停重启 1.查看磁盘情况 df -h #查看最大占用目录 du -h -x --max-depth12.查看磁盘信息 fdisk -l3.查看磁盘分区层级 lsblk可见剩余空闲60G空间…

Visual Paradigm 工具使用思考

大型项目的管理与实施&#xff0c;需要有高效的管理工具&#xff0c;VP算是不错的&#xff0c;美中不足是界面太死板&#xff0c;使用不便利&#xff0c;对于小型项目按照这个模式来&#xff0c;相当麻烦。 当然肯定会有人觉得不错&#xff0c;需要的&#xff0c;联系我

nacos集群部署

一 部署mysql 根据下面文章 docker安装mysql和数据挂载_docker run -p 3306:3306 -name mysql -v /mydata/mys-CSDN博客 建议&#xff1a;使用Mysql5.7&#xff0c;之前尝试使用Mysql8.0&#xff0c;会报错 经过查询&#xff1a; 报错原因 可能是数据库版本过高 二 部署na…

蓝桥杯备赛系列——倒计时50天!

蓝桥杯备赛系列 倒计时50天&#xff01; 前缀和和差分 知识点 **前缀和数组&#xff1a;**假设原数组用a[i]表示&#xff0c;前缀和数组用sum[i]表示&#xff0c;那么sum[i]表示的是原数组前i项之和&#xff0c;注意一般用前缀和数组时&#xff0c;原数组a[i]的有效下标是从…

【安卓基础3】Activity(一)

&#x1f3c6;作者简介&#xff1a;|康有为| &#xff0c;大四在读&#xff0c;目前在小米安卓实习&#xff0c;毕业入职 &#x1f3c6;本文收录于 安卓学习大全&#xff0c;欢迎关注 &#x1f3c6;安卓学习资料推荐&#xff1a; 视频&#xff1a;b站搜动脑学院 视频链接 &…

设置主从复制时发生报错Could not find first log file name in binary log index file‘;解决方案

如图所示&#xff0c;slave_io_runnind:no,slave_sql_running:yes 此时&#xff0c;主从配置错误&#xff0c;我们可以查看Last_IO_Error:来查看报错信息 此时&#xff0c;我们需要停止从服务器的主从服务&#xff0c; mysql> stop slave; Query OK, 0 rows affected, 1 w…

回显服务器的制作方法

文章目录 客户端和服务器TCP和UDP的特点UDP socket api的使用DatagramSocketDatagramPacketInetSocketAddress API 做一个简单的回显服务器UDP版本的回显服务器TCP版本的回显服务器 客户端和服务器 在网络中&#xff0c;主动发起通信的一方是客户端&#xff0c;被动接受的这一方…

1. 浏览器跨 Tab 窗口通信原理

浏览器跨 Tab 窗口通信原理 ![01 所谓多窗口下进行互相通信&#xff0c;是指在浏览器中&#xff0c;不同窗口&#xff08;包括不同标签页、不同浏览器窗口甚至不同浏览器实例&#xff09;之间进行数据传输和通信的能力。 当然&#xff0c;本文我们探讨的是纯前端的跨 Tab 页…