一、导读
Kubernetes(简称K8s)的普及让开发和运维工作变得更加高效,但它的复杂性却让许多人在使用时面临挑战。从网络配置到故障排查,每一步都需要深入的技术积累。然而,随着人工智能技术的迅猛发展,借助智能工具,我们可以将许多复杂问题简单化。
本文将向您介绍一款将 AI 助手与 Kubernetes 管理相结合的轻量级工具——k8m。它将如何帮助开发者和运维人员高效管理集群资源,优化工作流程,让繁琐的 Kubernetes 操作变得更加轻松快捷?
二、k8m介绍
k8m 是一款集 AI 与 Kubernetes 于一体的轻量级控制台工具,专为简化集群管理设计。基于 AMIS 构建,并通过 kom 作为 Kubernetes API 客户端,k8m 内置了 Qwen2.5-Coder-7B 模型交互能力,同时支持接入您自己的私有化大模型,比如deepseek模型。
三、安装和运行
3.1 ChatGPT 配置指南
内置****GPT
从v0.0.8版本开始,将内置GPT,无需配置。 如果您需要使用自己的GPT,请参考以下步骤。
环境变量配置
需要设置环境变量,以启用ChatGPT。
复制export OPENAI_API_KEY="sk-XXXXX"export OPENAI_API_URL="https://api.siliconflow.cn/v1" export OPENAI_MODEL="Qwen/Qwen2.5-7B-Instruct"
ChatGPT 状态调试
如果设置参数后,依然没有效果,请尝试使用./k8m -v 6获取更多的调试信息。 会输出以下信息,通过查看日志,确认是否启用ChatGPT。
复制ChatGPT 开启状态:true ChatGPT 启用 key:sk-hl**********************************************, url:https: // api.siliconflow.cn/v1ChatGPT 使用环境变量中设置的模型:Qwen/Qwen2.5-Coder-7B-Instruc
ChatGPT 账户
本项目集成了github.com/sashabaranov/go-openaiSDK。 国内访问推荐使用硅基流动的服务。 登录后,在https://cloud.siliconflow.cn/account/ak创建API_KEY
3.2 二进制部署
下载 从 GitHub 获取最新版本。
项目地址:https://github.com/weibaohui/k8m/
运行 在终端中运行以下命令启动服务,并通过浏览器访问:
复制./k8m Usage of ./k8m: --admin-password string 管理员密码 (default "123456") --admin-username string 管理员用户名 (default "admin") -k, --chatgpt-key string 大模型的自定义API Key (default "sk-xxxxxxx") -m, --chatgpt-model string 大模型的自定义模型名称 (default "Qwen/Qwen2.5-7B-Instruct") -u, --chatgpt-url string 大模型的自定义API URL (default "https://api.siliconflow.cn/v1") -d, --debug 调试模式 --in-cluster 是否自动注册纳管宿主集群,默认启用 --jwt-token-secret string 登录后生成JWT token 使用的Secret (default "your-secret-key") -c, --kubeconfig string kubeconfig文件路径 (default "/root/.kube/config") --kubectl-shell-image string Kubectl Shell 镜像。默认为 bitnami/kubectl:latest,必须包含kubectl命令 (default "bitnami/kubectl:latest") --log-v int klog的日志级别klog.V(2) (default 2) --login-type string 登录方式,password, oauth, token等,default is password (default "password") --node-shell-image string NodeShell 镜像。 默认为 alpine:latest,必须包含`nsenter`命令 (default "alpine:latest") -p, --port int 监听端口 (default 3618) --sqlite-path string sqlite数据库文件路径, (default "./data/k8m.db") -v, --v Level klog的日志级别 (default 2)
3.3 k8s中yaml部署
以下是k8m支持的环境变量设置参数及其作用的表格:
环境变量 | 默认值 | 说明 |
PORT | 3618 | 监听的端口号 |
KUBECONFIG | ~/.kube/config | kubeconfig 文件路径 |
OPENAI_API_KEY | "" | 大模型的 API Key |
OPENAI_API_URL | "" | 大模型的 API URL |
OPENAI_MODEL | Qwen/Qwen2.5-7B-Instruct | 大模型的默认模型名称,如需DeepSeek,请设置为deepseek-ai/DeepSeek-R1-Distill-Qwen-7B |
LOGIN_TYPE | "password" | 登录方式(如 password, oauth, token) |
ADMIN_USERNAME | "admin" | 管理员用户名 |
ADMIN_PASSWORD | "123456" | 管理员密码 |
DEBUG | "false" | 是否开启 debug 模式 |
LOG_V | "2" | log输出日志,同klog用法 |
JWT_TOKEN_SECRET | "your-secret-key" | 用于 JWT Token 生成的密钥 |
KUBECTL_SHELL_IMAGE | bitnami/kubectl:latest | kubectl shell 镜像地址 |
NODE_SHELL_IMAGE | alpine:latest | Node shell 镜像地址 |
SQLITE_PATH | /data/k8m.db | 持久化数据库地址,默认sqlite数据库,文件地址/data/k8m.db |
IN_CLUSTER | "true" | 是否自动注册纳管宿主集群,默认启用 |
这些环境变量可以通过在运行应用程序时设置
注意:环境变量会被启动参数覆盖。
- 其中模型环境变量需要根据实际情况修改,yaml中的142,144,146行
- yaml中的91行需要改成自己集群的sc名称,主要是为了做持久化数据用
--- apiVersion:v1 kind:Namespace metadata: name:k8m --- apiVersion:v1 kind:ServiceAccount metadata: labels: app:k8m name:k8m namespace:k8m --- kind:Role apiVersion:rbac.authorization.k8s.io/v1 metadata: labels: app:k8m name:k8m namespace:k8m rules: -verbs: -"*" apiGroups: -"*" resources: -"*" --- kind:ClusterRole apiVersion:rbac.authorization.k8s.io/v1 metadata: labels: app:k8m name:k8m rules: -verbs: -"get" -"list" -"watch" -"pods/exec" apiGroups: -"*" resources: -"*" -verbs: -"get" -"list" -"watch" -"pods/exec" nonResourceURLs: -"*" --- apiVersion:rbac.authorization.k8s.io/v1 kind:RoleBinding metadata: labels: app:k8m name:k8m namespace:k8m roleRef: apiGroup:rbac.authorization.k8s.io kind:Role name:k8m subjects: -kind:ServiceAccount name:k8m namespace:k8m --- apiVersion:rbac.authorization.k8s.io/v1 kind:ClusterRoleBinding metadata: name:k8m roleRef: apiGroup:rbac.authorization.k8s.io kind:ClusterRole name:k8m subjects: -kind:ServiceAccount name:k8m namespace:k8m --- apiVersion:v1 kind:PersistentVolumeClaim metadata: name:k8m-pv-claim namespace:k8m labels: app.kubernetes.io/name:k8m spec: storageClassName:nfs-sc##这里需要改成自己集群的sc名称 accessModes: -ReadWriteMany resources: requests: storage:10Gi --- apiVersion:v1 kind:Service metadata: name:k8m-nodeport namespace:k8m labels: app:k8m spec: ports: -name:http-k8m protocol:TCP port:3618 targetPort:3618 nodePort:31999 selector: app:k8m type:NodePort --- apiVersion:apps/v1 kind:Deployment metadata: name:k8m namespace:k8m labels: app:k8m spec: replicas:1 selector: matchLabels: app:k8m template: metadata: labels: app:k8m spec: containers: -name:k8m image:registry.cn-hangzhou.aliyuncs.com/minik8m/k8m:0.0.66 env: -name:DEBUG value:"false" -name:LOG_V value:"6" -name:OPENAI_API_KEY value:"sk-xxxx" -name:OPENAI_API_URL value:"http://xxxxxxx/deepseek-14b" -name:OPENAI_MODEL value:"deepseek-14b" -name:KUBECTL_SHELL_IMAGE value:bitnami/kubectl:latest -name:NODE_SHELL_IMAGE value:alpine:latest -name:SQLITE_PATH value:/app/data/k8m.db -name:IN_CLUSTER value:"false" ports: -containerPort:3618 protocol:TCP name:http-k8m imagePullPolicy:IfNotPresent volumeMounts: -name:kubepi-persistent-storage mountPath:/app/data restartPolicy:Always serviceAccountName:k8m volumes: -name:kubepi-persistent-storage persistentVolumeClaim: claimName:k8m-pv-claim
四、常用功能介绍
4.1 Yaml属性自动翻译
k8m 提供集成的 YAML 浏览、编辑和文档查看功能,支持自动翻译 YAML 属性。无论是查找字段含义还是确认配置细节,您都无需再费时费力地搜索,极大提高了工作效率。
img
4.2 Event信息AI问诊
在 Event 页面,k8m 内置了 AI 问诊功能,可智能分析异常事件,并提供详细的解释。点击事件前的“AI大脑”按钮,稍等片刻即可查看诊断结果,快速定位问题原因。
点击Event信息前面的“AI大脑”
img
稍等片刻,AI返回解读信息
img
4.3 错误日志AI问诊
日志分析是定位问题的重要环节,但面对大量报错信息,如何高效排查?k8m 支持 AI 日志诊断,帮助快速识别关键错误并生成解决建议。只需选中相关日志,点击 AI 问诊按钮,即可获得诊断报告。
当服务运行不正常的时候,可能第一件事就是来看日志。但是往往报错的日志一大堆,难以抓住头绪,这时候,要是AI能帮忙看看就好了~~~
首先进入Pod日志界面
img
点击查看日志
img
选中错误日志,在前面打勾,点击右面的AI问诊按钮
img
稍等片刻,AI诊断报告呈上,有没有感觉很酷~
4.4 AI智检
智检功能主要是引用了k8s_gpt工具中预置的规则使用大模型,进行集群的智能巡检,目前平台支持集群,节点,部署,有状态集,容器组,svc,ingress等多个资源对象的巡检
img
img
img
4.5 运行命令自动生成
日常运维中,Pod 内命令操作不可避免。借助 AI,您只需输入需求描述,k8m 即可自动生成合适的命令供参考,减少查找时间,提高效率。
首先进入POD Shell中
img
在命令对话框,尝试输入一个段描述,比如查看存储容量,那么AI会自动返回df-h回来,如果你描述的信息越多,那么AI返回的命令也会更精确。当然也可以参考AI的命令,你自己再加工一下~
img
4.6 MCP工具支持
- v0.0.66 更新,增加MCP支持
img
imgimg
4.7 集群纳管
k8m支持多集群管理,一个dashboard可以纳管多个集群,在界面进行切换,拿到快速访问集群资源的能力,目前纳管只支持kubeconfig文件来进行纳管,需要网络可通
img
可以在多集群菜单中点击切换,也可以在右上角切换集群
img
imgimg
4.8 用户权限管理
目前k8m中支持添加用户和用户组,给用户组赋予权限之后,整个用户组中的用户都有了对应的角色权限,现阶段权限是全局所有集群的,后续会细化到集群和命名空间,一共三种角色权限
集群****管理员:可以管理和操作所有集群资源,包括创建、修改、删除等操作。
集群****只读:仅可查看集群资源信息,无法进行修改操作。
平台管理员:可以管理平台配置、用户权限等系统级设置。
img
img
五、总结
k8m 作为一款结合 AI 和 Kubernetes 的工具,展现了其简洁高效的设计理念。从便捷的文件管理、日志诊断到智能化的 YAML 翻译和故障排查,k8m 凭借其直观的界面和 AI 支持,极大提升了 Kubernetes 的易用性和可操作性。
无论是需要快速查看集群状态,还是解决复杂的配置和运行问题,k8m 都能为开发者和运维团队提供可靠支持。同时,它兼容本地化大模型部署,有效解决了数据安全和访问效率问题,为企业提供更高的自主性。