K8S-LLM:用自然语言轻松操作 Kubernetes
在 Kubernetes (K8s) 的日常管理中,复杂的命令行操作常常让开发者感到头疼。无论是部署应用、管理资源还是调试问题,都需要记住大量的命令和参数。Kubernetes 作为容器编排的行业标准,其强大的功能伴随着陡峭的学习曲线和复杂的命令行操作。这种复杂性不仅增加了新手的学习难度,也让资深开发者在频繁的操作中容易出错。
我以前是一名 DevOps 工程师,经常也做 SRE 的工作,所以经常操作 k8s,所以倒也还好,但是现在转岗 Gen AI Developer 之后,那些命令很多都不记得了,而且,解决k8s 问题的能力也下降了,干脆就开发了这个小工具,帮助我操作 k8s。
我把这个工具称作 K8S-LLM, 它允许用户通过自然语言与 Kubernetes 进行交互,极大地简化了操作流程。K8S-LLM 基于大型语言模型(LLM)提供支持,能够将用户的自然语言指令转换为对应的 Kubernetes 操作命令。它不仅简化了命令的输入,还提供了上下文感知的对话功能,使得与 Kubernetes 的交互更加直观和高效。
K8S-LLM 的核心功能
自然语言到 Kubernetes 命令的转换
K8S-LLM 的核心功能之一是将自然语言指令转换为 Kubernetes 命令。例如,用户可以通过简单的自然语言指令来列出所有 Pod:
k8sllm -q "列出默认命名空间中的所有 pod"
工具会自动将这条指令转换为 kubectl get pods
命令并执行。
支持的命令类型
K8S-LLM 支持多种类型的 Kubernetes 命令,包括但不限于:
- 查询命令:如“列出所有 Pod”、“查看某个服务的状态”。
- 部署命令:如“部署一个新的应用”、“更新现有应用的镜像”。
- 删除命令:如“删除某个 Pod”、“删除某个命名空间”。
- 调试命令:如“查看 Pod 日志”、“获取 Pod 描述”。
本质上,这取决于使用的大模型的能力。
上下文感知的对话
K8S-LLM 还支持多轮对话,能够理解上下文,使用户可以在之前的操作基础上继续提问。例如,用户可以先列出所有 Pod,然后继续提问“删除第一个 Pod”。
k8sllm -q "列出默认命名空间中的所有 pod"
k8sllm -q "删除第一个 Pod"
换句话话,他能自动捕捉命令的输出作为上下文,这在 debug 的时候很有用。
危险操作的提示与确认
为了避免误操作,K8S-LLM 在识别到潜在的危险操作时,会提示用户进行确认。例如,当用户尝试删除资源时,工具会要求用户明确确认:
k8sllm -q "删除所有 Pod"
工具会显示以下的提示:
This is a potentially dangerous operation!
Command to be executed: {command}
Please confirm you want to proceed (y/n):
输入 y
后,会自动执行命令。
安装与快速上手
安装步骤
安装 K8S-LLM 非常简单,只需克隆项目并安装依赖即可:
git clone git@github.com:yexia553/k8sllm.git
cd k8sllm
pip install -r requirements.txt && pip install .
配置大模型
K8S-LLM 支持多种 LLM 服务,用户可以根据需求灵活配置。我个人推荐使用 DeepSeek,因为它提供良好的性能、价格便宜,并且配置简单。用户也可以选择其他兼容 OpenAI SDK 的模型。
用户只需在根目录下创建 .k8sllm/config.yaml
文件,配置 LLM 服务的 URL、API 密钥和模型名称即可。例如:
llm:base_url: "https://api.deepseek.com/v1"api_key: "your-api-key"model: "deepseek-chat"
除了 DeepSeek,K8S-LLM 还支持其他兼容 OpenAI SDK 的 LLM 服务。用户可以根据自己的需求选择合适的模型,并在配置文件中进行相应的设置。
具体怎么获取 api key,请参考这里
基本使用
使用 K8S-LLM 也非常直观。例如,用户可以通过以下命令列出默认命名空间中的所有 Pod:
k8sllm -q "列出默认命名空间中的所有 pod"
别名设置
为了更方便地使用,用户还可以设置别名:
alias qk8sllm='k8sllm -q'
alias ck8sllm='k8sllm -c'
设置别名后,用户可以直接使用 qk8sllm
和 ck8sllm
来提问或清除上下文。
# 提问
qk8sllm "列出默认命名空间中的所有 pod"# 清除对话上下文
ck8sllm
这样使用起来更加方便,不用再输入参数
技术实现与架构
技术栈
K8S-LLM 使用 Python 3.8+ 开发,主要依赖以下库:
- click:用于构建命令行接口。
- pyyaml:用于配置文件的管理。
- openai:用于与 LLM 服务的集成。
核心模块
K8S-LLM 的核心模块包括:
- 自然语言解析模块:将用户输入的自然语言指令转换为 Kubernetes 命令。
- 上下文管理模块:维护对话历史,支持多轮交互。
- 安全检测模块:识别并提示高风险操作。
上下文管理
K8S-LLM 会在用用户的根目录下,生成一个.k8sllm/context.json
里面记录的是用户的历史提问、大模型的回答、执行的命令和输出,可以用于审计,可以执行
k8sllm -c
来清理上下文。
结语
K8S-LLM 为 Kubernetes 的管理提供了一种全新的交互方式,极大地降低了学习和使用的门槛。无论是 Kubernetes 新手还是资深开发者,都可以通过自然语言轻松完成复杂的操作。
这个工具我是为了解决自己的问题开发的,顺便开源了,如果正好有人也需要,希望这篇博客能帮助你更简单地使用K8S-LLM.
相关链接
- GitHub 项目地址
- DeepSeek 官网
- Kubernetes 官方文档
希望这篇博客能帮助你更好地了解和使用 K8S-LLM。如果你有任何问题或建议,欢迎在评论区留言或直接参与项目的开发!
相关文章:
K8S-LLM:用自然语言轻松操作 Kubernetes
在 Kubernetes (K8s) 的日常管理中,复杂的命令行操作常常让开发者感到头疼。无论是部署应用、管理资源还是调试问题,都需要记住大量的命令和参数。Kubernetes 作为容器编排的行业标准,其强大的功能伴随着陡峭的学习曲线和复杂的命令行操作。这…...
lua和C API库一些记录
相关头文件解释 lua.h:声明lua提供的基础函数,所有内容都有个前缀lua_; luaxlib.h:声明辅助库提供的函数,所有内容都有个前缀luaL_; lualib.h:声明了打开标准库的函数; 辅助库对…...

SpringSecurity中的过滤器链与自定义过滤器
关于 Spring Security 框架中的过滤器的使用方法,系列文章: 《SpringSecurity中的过滤器链与自定义过滤器》 《SpringSecurity使用过滤器实现图形验证码》 1、Spring Security 中的过滤器链 Spring Security 中的过滤器链(Filter Chain)是一个核心的概念,它定义了一系列过…...
Slate文档编辑器-Decorator装饰器渲染调度
Slate文档编辑器-Decorator装饰器渲染调度 在之前我们聊到了基于文档编辑器的数据结构设计,聊了聊基于slate实现的文档编辑器类型系统,那么当前我们来研究一下slate编辑器中的装饰器实现。装饰器在slate中是非常重要的实现,可以为我们方便地…...

本地Docker部署Flowise并实现远程构建LLM应用程序原型高效开发
文章目录 前言1. Docker安装Flowise2. Ubuntu安装Cpolar3. 配置Flowise公网地址4. 远程访问Flowise5. 固定Cpolar公网地址6. 固定地址访问 前言 相信很多对AI感兴趣的小伙伴都会觉得正在逐渐流行的工作流自动化和AI集成特别酷炫,没错,这些技术像“秘密武…...

多点通信、流式域套接字
一、广播 1.1广播的发送端模型: #include<myhead.h>#define BEN_IP "192.168.191.129" #define BEN_PORT 8888#define PORT 6666int main(int argc, const char *argv[]) {int oldfd socket(AF_INET,SOCK_DGRAM,0);if(oldfd -1){perror("soc…...

vue3使用video-player实现视频播放(可拖动视频窗口、调整大小)
1.安装video-player npm install video.js videojs-player/vue --save在main.js中配置全局引入 // 导入视频播放组件 import VueVideoPlayer from videojs-player/vue import video.js/dist/video-js.cssconst app createApp(App) // 视频播放组件 app.use(VueVideoPlayer)2…...
模块化和面向接口的设计:深入理解和应用
模块化和面向接口的设计:深入理解和应用 在面向对象编程中,模块化 和 面向接口设计 是两种非常重要的编程理念。它们能帮助开发人员构建更加清晰、可维护和易于扩展的系统。接下来,我们将详细解释这两种设计思想,并结合 Python 中…...
《SwiftUI 实现点击按钮播放 MP3 音频》
功能介绍 点击按钮时,应用会播放名为 yinpin.mp3 的音频文件。使用 AVAudioPlayer 来加载和播放音频。 关键点: 按钮触发:点击按钮会调用 playAudio() 播放音频。音频加载:通过 Bundle.main.url(forResource:) 加载音频文件。播…...

微机接口课设——基于Proteus和8086的打地鼠设计(8255、8253、8259)Proteus中Unknown 1-byte opcode / Unknown 2-byte opcode错误
原理图设计 汇编代码 ; I/O 端口地址定义 IOY0 EQU 0600H IOY1 EQU 0640H IOY2 EQU 0680HMY8255_A EQU IOY000H*2 ; 8255 A 口端口地址 MY8255_B EQU IOY001H*2 ; 8255 B 口端口地址 MY8255_C EQU IOY002H*2 ; 8255 C 口端口地址 MY8255_MODE EQU IOY003H*2 ; …...
MySQL如何执行.sql 文件:详细教学指南
在使用MySQL数据库过程中,我们经常需要执行包含SQL语句的.sql文件。这些文件通常用于数据库的备份和恢复或批量执行SQL脚本。本文将详细介绍如何在不同环境下执行MySQL的.sql文件。 前置准备 在开始之前,请确保以下条件已经满足: 已经安装…...

非周期性脑活动的动态重构支持癫痫患者的认知功能:一种神经指纹识别方法
摘要 颞叶癫痫(TLE)的特征是大脑活动模式发生大规模的变化,并且这种变化与患者的认知功能受损密切相关。本研究旨在使用神经指纹方法分析大脑活动的动态重构,以描绘TLE患者的个体特征及其认知功能相关性。本研究收集了68名TLE患者和34名对照组的10min静息…...

ZYNQ初识6(zynq_7010)clock时钟IP核
基于板子的PL端无时钟晶振,需要从PS端借用clock1(50M)晶振 接下去是自定义clock的IP核封装,为后续的simulation可以正常仿真波形,需要注意顶层文件的设置,需要将自定义的IP核对应的.v文件设置为顶层文件&a…...

使用MFC编写一个paddleclas预测软件
目录 写作目的 环境准备 下载编译环境 解压预编译库 准备训练文件 模型文件 图像文件 路径整理 准备预测代码 创建预测应用 新建mfc应用 拷贝文档 配置环境 界面布局 添加回cpp文件 修改函数 报错1解决 报错2未解决 修改infer代码 修改MFCPaddleClasDlg.cp…...

SAP SD BP名称和销售订单描述的对应不起来的问题
问题 VBPA-ADRNR地址 和 KNA1-ADRNR 指向同一个号码 销售订单读取这个地址 改正后恢复正常 原因:推测 应该是创建Y0 电商客户的时候,引起锁和混乱导致的。 具体实际时什么样,不太清楚 写于20241230 浙江台州...
FlastOcc-网络复现-1.环境配置及问题
研究OCC网络 1.RuntimeError: Ninja is required to load C extensions RuntimeError: Ninja is required to load C extensions #32 Ninja is required to load C extensions File “/FlashOCC/projects/mmdet3d_plugin/core/evaluation/ray_metrics.py”, line 12, in dvr …...
Go语言中值接收者和指针接收者的区别?
在 Go 语言中,值接收者和指针接收者是方法定义中的两种接收者类型。它们的主要区别在于方法调用时的行为、接收者是否可以被修改,以及性能上的差异。 值接收者 定义 值接收者的方法接收的是调用对象的一个副本,方法内部对该副本的修改不会影…...

kafka小实站
需要先在前面的文章里面照着下载好kafka,并且启动 先启动zookeeper 项目目录 package kafka; import lombok.extern.slf4j.Slf4j; import org.apache.kafka.clients.consumer.ConsumerRecord; import org.springframework.kafka.annotation.KafkaListener; import…...

基于Python实现车辆检测、机动车检测、识别位置标记、计数
目录 引言背景与应用场景车辆检测的研究意义相关工作车辆检测概述机动车检测方法分类基于传统计算机视觉的检测方法基于深度学习的检测方法技术与方法车辆检测技术概述基于Python的车辆检测方法图像处理与特征提取深度学习方法(如YOLO、SSD、Faster R-CNN等)数据集与标注常用…...

心理学硕士
心理学硕士的主要研究方向包括基础心理学、发展心理学和应用心理学。 基础心理学研究一般的心理现象与规律,如心理的实质及神经机制、感觉与知觉、意识与注意、学习与记忆、思维与语言、情绪与意识、人格等。发展心理学研究人类个体心理发生发展的特点和规律&a…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...
椭圆曲线密码学(ECC)
一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...

1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...

【Linux】Linux 系统默认的目录及作用说明
博主介绍:✌全网粉丝23W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...
【JavaSE】多线程基础学习笔记
多线程基础 -线程相关概念 程序(Program) 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序,比如我们使用QQ,就启动了一个进程,操作系统就会为该进程分配内存…...

脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)
一、OpenBCI_GUI 项目概述 (一)项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台,其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言,首次接触 OpenBCI 设备时,往…...
提升移动端网页调试效率:WebDebugX 与常见工具组合实践
在日常移动端开发中,网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时,开发者迫切需要一套高效、可靠且跨平台的调试方案。过去,我们或多或少使用过 Chrome DevTools、Remote Debug…...