AI在线 AI在线

探索AI+k8s:如何使用Deepseek大模型增强k8s-dashboard

作者:冬子先生
2025-04-16 03:25
一、导读 Kubernetes(简称K8s)的普及让开发和运维工作变得更加高效,但它的复杂性却让许多人在使用时面临挑战。 从网络配置到故障排查,每一步都需要深入的技术积累。 然而,随着人工智能技术的迅猛发展,借助智能工具,我们可以将许多复杂问题简单化。

一、导读 

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 属性。无论是查找字段含义还是确认配置细节,您都无需再费时费力地搜索,极大提高了工作效率。

imgimg

img

4.2 Event信息AI问诊

在 Event 页面,k8m 内置了 AI 问诊功能,可智能分析异常事件,并提供详细的解释。点击事件前的“AI大脑”按钮,稍等片刻即可查看诊断结果,快速定位问题原因。

点击Event信息前面的“AI大脑”

imgimg

稍等片刻,AI返回解读信息

imgimg

4.3 错误日志AI问诊

日志分析是定位问题的重要环节,但面对大量报错信息,如何高效排查?k8m 支持 AI 日志诊断,帮助快速识别关键错误并生成解决建议。只需选中相关日志,点击 AI 问诊按钮,即可获得诊断报告。

当服务运行不正常的时候,可能第一件事就是来看日志。但是往往报错的日志一大堆,难以抓住头绪,这时候,要是AI能帮忙看看就好了~~~

首先进入Pod日志界面

imgimg

点击查看日志

imgimg

选中错误日志,在前面打勾,点击右面的AI问诊按钮

imgimg

稍等片刻,AI诊断报告呈上,有没有感觉很酷~

4.4 AI智检

智检功能主要是引用了k8s_gpt工具中预置的规则使用大模型,进行集群的智能巡检,目前平台支持集群,节点,部署,有状态集,容器组,svc,ingress等多个资源对象的巡检

imgimg

imgimgimgimg

4.5 运行命令自动生成

日常运维中,Pod 内命令操作不可避免。借助 AI,您只需输入需求描述,k8m 即可自动生成合适的命令供参考,减少查找时间,提高效率。

首先进入POD Shell中

imgimg

在命令对话框,尝试输入一个段描述,比如查看存储容量,那么AI会自动返回df-h回来,如果你描述的信息越多,那么AI返回的命令也会更精确。当然也可以参考AI的命令,你自己再加工一下~

imgimg

4.6 MCP工具支持

  • v0.0.66 更新,增加MCP支持

imgimg

imgimgimgimg

4.7 集群纳管

k8m支持多集群管理,一个dashboard可以纳管多个集群,在界面进行切换,拿到快速访问集群资源的能力,目前纳管只支持kubeconfig文件来进行纳管,需要网络可通

imgimgimg

可以在多集群菜单中点击切换,也可以在右上角切换集群

imgimg

imgimgimg

4.8 用户权限管理

目前k8m中支持添加用户和用户组,给用户组赋予权限之后,整个用户组中的用户都有了对应的角色权限,现阶段权限是全局所有集群的,后续会细化到集群和命名空间,一共三种角色权限

集群****管理员:可以管理和操作所有集群资源,包括创建、修改、删除等操作。

集群****只读:仅可查看集群资源信息,无法进行修改操作。

平台管理员:可以管理平台配置、用户权限等系统级设置。

imgimg

imgimg

五、总结 

k8m 作为一款结合 AI 和 Kubernetes 的工具,展现了其简洁高效的设计理念。从便捷的文件管理、日志诊断到智能化的 YAML 翻译和故障排查,k8m 凭借其直观的界面和 AI 支持,极大提升了 Kubernetes 的易用性和可操作性。

无论是需要快速查看集群状态,还是解决复杂的配置和运行问题,k8m 都能为开发者和运维团队提供可靠支持。同时,它兼容本地化大模型部署,有效解决了数据安全和访问效率问题,为企业提供更高的自主性。

相关标签:

相关资讯

OpenAI首席研究官:DeepSeek独立发现了o1的一些核心思路,奥特曼、LeCun纷纷置评

成本打下来了,需求更多才对? 春节这几天,国内外 AI 圈都被 DeepSeek 刷了屏。 英伟达的股市震荡更是让全世界看得目瞪口呆(参见《英伟达市值蒸发近 6000 亿美元,而 DeepSeek 刚刚又开源新模型》)。
1/29/2025 6:43:00 PM
机器之心

DeepSeek-R1详细解读!

DeepSeek-R1爆火,今天来详细看下。 论文地址::::现有LLMs在推理任务上的改进主要依赖监督微调(SFT)和后训练(Post-Training)方法,但这些方法需要大量人工标注数据且成本高昂。 OpenAI的o1系列模型虽通过扩展推理链(Chain-of-Thought, CoT)提升了性能,但其测试时扩展仍存在挑战。
2/19/2025 8:00:00 AM
GoldMa

服务器总是繁忙?DeepSeek-R1本地部署图文版教程来啦

最近一段时间,国产大模型DeepSeek-R1在市场上迅速崛起,成为了众多用户的新宠。 然而,伴随其热度与用户量的急剧攀升,由此导致服务器繁忙的状况频繁出现。 为了摆脱服务器繁忙的困扰,本地部署DeepSeek-R1成为了一个绝佳的解决方案,这不仅减少了对网络连接的依赖,还能增强数据安全性。
2/17/2025 10:33:19 AM
Yu