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'

设置别名后,用户可以直接使用 qk8sllmck8sllm 来提问或清除上下文。

# 提问
qk8sllm "列出默认命名空间中的所有 pod"# 清除对话上下文
ck8sllm

这样使用起来更加方便,不用再输入参数

技术实现与架构

技术栈

K8S-LLM 使用 Python 3.8+ 开发,主要依赖以下库:

  • click:用于构建命令行接口。
  • pyyaml:用于配置文件的管理。
  • openai:用于与 LLM 服务的集成。
核心模块

K8S-LLM 的核心模块包括:

  1. 自然语言解析模块:将用户输入的自然语言指令转换为 Kubernetes 命令。
  2. 上下文管理模块:维护对话历史,支持多轮交互。
  3. 安全检测模块:识别并提示高风险操作。

上下文管理

K8S-LLM 会在用用户的根目录下,生成一个.k8sllm/context.json

里面记录的是用户的历史提问、大模型的回答、执行的命令和输出,可以用于审计,可以执行

k8sllm -c

来清理上下文。

结语

K8S-LLM 为 Kubernetes 的管理提供了一种全新的交互方式,极大地降低了学习和使用的门槛。无论是 Kubernetes 新手还是资深开发者,都可以通过自然语言轻松完成复杂的操作。

这个工具我是为了解决自己的问题开发的,顺便开源了,如果正好有人也需要,希望这篇博客能帮助你更简单地使用K8S-LLM.

相关链接

  • GitHub 项目地址
  • DeepSeek 官网
  • Kubernetes 官方文档

希望这篇博客能帮助你更好地了解和使用 K8S-LLM。如果你有任何问题或建议,欢迎在评论区留言或直接参与项目的开发!

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

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

相关文章

为什么MoE推理效率更高:精简FFN

MoE全称是“混合专家”,它由多个专家网络和一个门控网络组成……整个MoE完全复用了Transformer的结构,只是将其中的FFN层替换成了MoE层。MoE层里的门控网络其实就是个专家分类器,每次根据输入Token生成专家的概率分布,然后选择排序靠前的K个专家进行Token处理,最后再将K个…

线段树例题题解

卫星覆盖(NOI1997) 题面: SERCOI(Space-Earth Resource Cover-Observe lnstitute) 是一个致力于利用卫星技术对空间和地球资源进行覆盖观测的组织。现在他们研制成功一种新型资源观测卫星 -SERCOI-308。这种卫星可以…

uni-app开发-识图小程序-主要功能以及首页实现

目录 一:功能介绍 二:代码实现 一:功能介绍 识图小程序首页主要是识图类型的展示列表,目前只有四种类型的图像识别,分别是车牌,发票,电表,身份证。可以分别识别车牌号码,身份证号码,发票号码,和电表度数。点击对应的类型图标会跳转到识图页面,每个分类上面展示该…

超详细!一文搞定PID!嵌入式STM32-PID位置环和速度环

本文目录 一、知识点1. PID是什么?2. 积分限幅--用于限制无限累加的积分项3. 输出值限幅--用于任何pid的输出4. PID工程 二、各类PID1. 位置式PID(用于位置环)(1)公式(2)代码使用代码 2. 增量式…

STM32 SPI读取SD卡

七个响应类型: R1 Response (Normal Response): R1响应是最基本的响应,包含一个字节的状态位,用于指示命令是否成功执行。常用。最高位为0。最低位为1表示是空闲状态。其他位是各种错误提示。 R1b Response (Normal with Busy): 类似于R1&a…

PostgreSQL的一主两从集群搭建部署 (两同步)

一、实验环境 虚拟机名IP身份简称keep-postgres12-node1192.168.122.87主节点node1keep-postgres12-node2192.168.122.89备节点node2keep-postgres12-node3192.168.122.90备节点node3 二、安装数据库 源码包方式(主) 1、创建用户 [rootkeep-postgre…

玩转OCR | 腾讯云智能结构化OCR初体验

随着数字化进程的加速,光学字符识别(OCR)技术已逐渐成为提高企业生产力、优化工作流的重要工具。腾讯云智能结构化OCR凭借其领先的技术、广泛的应用场景和灵活的定制化能力,正在帮助各行业客户更高效地进行文档处理与数据提取。本…

STM32 高级 WIFi案例1:测试AT指令

需求描述 测试AT指令是否能够正常控制ESP32的wifi,比如重启、读取设备信息等。 思路: stm32通过串口usart2向ESP32发布命令。ESP32通过串口1返回信息。 配置: 第一步:对ESP32芯片烧录可以读取stm32命令的固件(fac…

MySQL查看日志

目录 1. 日志 1.1 错误日志 1.2 二进制日志 1.2.1 介绍 1.2.2 格式 1.2.3 查看 1.2.4 删除 1.3 查询日志 1.4 慢查询日志 1. 日志 1.1 错误日志 错误日志是 MySQL 中最重要的日志之一,它记录了当 mysqld 启动和停止时,以及服务器在运行过 程…

Spring Boot教程之三十九: 使用 Maven 将 Spring Boot 应用程序 Docker 化

如何使用 Maven 将 Spring Boot 应用程序 Docker 化? Docker是一个开源容器化工具,用于在隔离环境中构建、运行和管理应用程序。它方便开发人员捆绑其软件、库和配置文件。Docker 有助于将一个容器与另一个容器隔离。在本文中,为了将Spring B…

机器人基础-自由度及其简单计算

机器人基础-自由度及其简单计算 1.自由度(DOF)2.自由度的计算3.自由度计算例题例1.例2.例3. 对于一个机器人的手腕,一般要求实现对空间坐标轴X、Y、Z的旋转运动,分别是翻/回转(Roll)、俯仰(Pitc…

c# WaitSleepJoin状态的线程如何自动恢复

在 C# 中,线程的 ThreadState.WaitSleepJoin 状态表示线程当前处于等待、睡眠或加入(比如等待锁、等待事件、或者调用 Thread.Sleep 等)。要让一个处于 WaitSleepJoin 状态的线程恢复运行,必须唤醒它或让它不再被阻塞。这通常通过…

初学stm32---高级定时器输出n个pwm波

目录 高级定时器简介:(F1) 高级定时器框图 重复计数器特性 高级定时器输出指定个数PWM实验原理 高级定时器输出指定个数PWM实验配置步骤 相关HAL库函数介绍 关键结构体介绍 高级定时器简介:(F1) 1.高级定时器 :TIM1/TIM8 2.主要特性&…

【每日学点鸿蒙知识】Shape描述、全局loading组件、checkbox样式、H5监听键盘收起、弹窗不关闭

1、HarmonyOS 有没有xml描述的Shape? 有没有xml描述的Shape? 官方文档有对用的Shape的参考文档,参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-drawing-components-shape-V5 绘制组件的父…

完整的 FFmpeg 命令使用教程

FFmpeg 是一个开源的跨平台音视频处理工具,它能够处理几乎所有的视频、音频格式,并提供了强大的功能如格式转换、视频剪辑、合并、提取音频等。FFmpeg 通过命令行界面(CLI)操作,尽管有一些图形界面的前端工具&#xff…

Mono里运行C#脚本5—mono_file_map_open

前面介绍了mono_jit_init初始化,这个函数非常长,要理解起来还是比较困难。因此改变另外一种方式,先从底层的函数开始,再慢慢来探索mono的底层实现,以及它的实现原理,运行的细节。 Mono要运行exe文件,这里是运行test-embed.exe文件,那么就得认识这个文件,解释这个文件的…

【MySQL】踩坑笔记——保存带有换行符等特殊字符的数据,需要进行转义保存

问题描述 从DBeaver中导出了部分业务数据的 insert sql,明明在开发、测试环境都可以一把执行通过,却在预发环境执行前的语法检查失败了,提示有SQL语法错误。 这条SQL长这样,default_sql是要在odps上执行的sql语句,提…

matlab中的cell

在MATLAB中,cell 是一种非常重要的数据类型,它能够存储不同类型和大小的数据,这使得它非常灵活,适用于处理复杂的数据结构。 1. 基本介绍 cell 类型的变量可以存储不同类型的数据,如数值、字符、结构体、甚至其他的 …

GPU 进阶笔记(二):华为昇腾 910B GPU

大家读完觉得有意义记得关注和点赞!!! 1 术语 1.1 与 NVIDIA 术语对应关系1.2 缩写2 产品与机器 2.1 GPU 产品2.2 训练机器 底座 CPU功耗操作系统2.3 性能3 实探:鲲鹏底座 8*910B GPU 主机 3.1 CPU3.2 网卡和网络3.3 GPU 信息 3.3…

Excel中一次查询返回多列

使用Excel或wps的时候,有时候需要一次查询返回多列内容,这种情况可以选择多次vlookup或者多次xlookup,但是这种做法费时费力不说,效率还有些低下,特别是要查询的列数过多时。我放了3种查询方法,效果图&…