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:

bash 复制代码
k8sllm -q "列出默认命名空间中的所有 pod"

工具会自动将这条指令转换为 kubectl get pods 命令并执行。

支持的命令类型

K8S-LLM 支持多种类型的 Kubernetes 命令,包括但不限于:

  • 查询命令:如"列出所有 Pod"、"查看某个服务的状态"。
  • 部署命令:如"部署一个新的应用"、"更新现有应用的镜像"。
  • 删除命令:如"删除某个 Pod"、"删除某个命名空间"。
  • 调试命令:如"查看 Pod 日志"、"获取 Pod 描述"。

本质上,这取决于使用的大模型的能力。

上下文感知的对话

K8S-LLM 还支持多轮对话,能够理解上下文,使用户可以在之前的操作基础上继续提问。例如,用户可以先列出所有 Pod,然后继续提问"删除第一个 Pod"。

bash 复制代码
k8sllm -q "列出默认命名空间中的所有 pod"
k8sllm -q "删除第一个 Pod"

换句话话,他能自动捕捉命令的输出作为上下文,这在 debug 的时候很有用。

危险操作的提示与确认

为了避免误操作,K8S-LLM 在识别到潜在的危险操作时,会提示用户进行确认。例如,当用户尝试删除资源时,工具会要求用户明确确认:

bash 复制代码
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 非常简单,只需克隆项目并安装依赖即可:

bash 复制代码
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 密钥和模型名称即可。例如:

yaml 复制代码
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:

bash 复制代码
k8sllm -q "列出默认命名空间中的所有 pod"
别名设置

为了更方便地使用,用户还可以设置别名:

bash 复制代码
alias qk8sllm='k8sllm -q'
alias ck8sllm='k8sllm -c'

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

bash 复制代码
# 提问
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.

相关链接

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

相关推荐
weixin_3993806914 分钟前
k8s一键部署tongweb企业版7049m6(by why+lqw)
java·linux·运维·服务器·云原生·容器·kubernetes
IT成长日记38 分钟前
【Docker基础】Docker数据卷管理:docker volume ls及其参数详解
运维·docker·容器·volume ls
偷萧逸苦茶1 小时前
docker常见命令
docker·容器·eureka
慌糖9 小时前
微服务介绍
微服务·云原生·架构
高山莫衣15 小时前
Docker Desktop导致存储空间不足时的解决方案
docker·容器·eureka
鹏大师运维15 小时前
在银河麒麟V10 SP1上手动安装与配置高版本Docker的完整指南
linux·运维·docker·容器·麒麟·统信uos·中科方德
Ahlson15 小时前
【fnNAS】docker的nginx配置html
nginx·docker·容器·fnnas
LuckyLay15 小时前
Compose 常用命令详解——AI教你学Docker
docker·容器·eureka
阿里云云原生15 小时前
阿里云可观测 2025 年 6 月产品动态
云原生
阿里云云原生15 小时前
30 秒锁定黑客攻击:SLS SQL 如何从海量乱序日志中“揪”出攻击源
云原生