k8m 是一个基于人工智能驱动的迷你Kubernetes仪表盘轻量级控制台工具,旨在简化集群管理。它基于AMIS构建,并利用了
kom作为Kubernetes API客户端,k8m 内置
Qwen2.5-Coder-7B,支持与Deepseek ai/DeepSeek-R1Distill-Qwen-7B模型交互的能力,同时支持接入您自己的私有大模型(包括ollama)。
k8m 的设计理念是“AI驱动,轻量高效,简化复杂”,帮助开发者和运维人员快速上手并轻松管理Kubernetes集群。
./k8m 命令启动,访问http://127.0.0.1:3618。k8mk8mUsage of ./k8m:
--enable-temp-admin 是否启用临时管理员账户配置,默认关闭
--admin-password string 管理员密码,启用临时管理员账户配置后生效
--admin-username string 管理员用户名,启用临时管理员账户配置后生效
--print-config 是否打印配置信息 (default false)
--connect-cluster 启动集群时是否自动连接现有集群,默认关闭
-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")
--image-pull-timeout Node Shell、Kubectl Shell 镜像拉取超时时间。默认为 30 秒
--node-shell-image string NodeShell 镜像。 默认为 alpine:latest,必须包含`nsenter`命令 (default "alpine:latest")
-p, --port int 监听端口 (default 3618)
-v, --v Level klog的日志级别 (default 2)
也可以直接通过docker-compose启动(推荐):
services:
k8m:
container_name: k8m
image: registry.cn-hangzhou.aliyuncs.com/minik8m/k8m
restart: always
ports:
- "3618:3618"
environment:
TZ: Asia/Shanghai
volumes:
- ./data:/app/data
启动后,访问3618端口,默认用户:k8m,默认密码:k8m。
如果想通过在线环境快速体验,可以访问:k8m
从0.0.8版本开始,GPT将内置且无需配置。 如果您需要使用自己的GPT,请参考以下文档。
如果设置参数仍然不起作用,请尝试使用./k8m -v 6获取更多调试信息。
它将输出以下信息,并通过检查日志确认ChatGPT是否已启用。
ChatGPT 开启状态:true
ChatGPT 启用 key:sk-hl**********************************************, url:https: // api.siliconflow.cn/v1
ChatGPT 使用环境变量中设置的模型:Qwen/Qwen2.5-7B-Instruc
该项目集成了github.com/sashabaranov/go-openaiSDK。 推荐国内访问硅基流的服务。 登录后,在https://cloud.siliconflow.cn/account/ak创建API_KEY
K8m支持通过环境变量和命令行参数进行灵活配置,主要参数如下:
| 环境变量 | 默认值 | 描述 |
|---|---|---|
PORT | 3618 | 监控端口号 |
KUBECONFIG | ~/.kube/config | kubeconfig 文件路径将自动扫描并识别同一目录级别的所有配置文件 |
ANY_SELECT | "true" | 是否启用下划线解释的任意选择,默认为真 |
LOGIN_TYPE | "password" | 登录方法(如 password,oauth,token) |
ENABLE_TEMP_ADMIN | "false" | 是否启用临时管理员账户配置,默认关闭。用于首次登录或忘记密码时 |
ADMIN_USERNAME | 管理员用户名,启用临时管理员账户配置后生效 | |
ADMIN_PASSWORD | 管理员密码,启用临时管理员账户配置后生效 | |
DEBUG | "false" | 是否启用 debug 模式 |
LOG_V | "2" | 日志输出级别,同klog使用 |
JWT_TOKEN_SECRET | "your-secret-key" | 用于JWT Token生成的密钥 |
KUBECTL_SHELL_IMAGE | bitnami/kubectl:latest | FHIR shell镜像地址 |
NODE_SHELL_IMAGE | alpine:latest | Node shell镜像地址 |
IMAGE_PULL_TIMEOUT | 30 | Node shell,FHIR shell镜像拉取超时时间(秒) |
CONNECT_CLUSTER | "false" | 程序启动后是否自动连接发现的集群,默认关闭 |
PRINT_CONFIG | "false" | 是否打印配置信息 |
对于详细的参数规范和其他配置方法,请参阅 docs/readme.md。
这些环境变量可以在运行应用程序时设置,例如:
export PORT=8080
export GIN_MODE="release"
./k8m
请参阅其他参数 docs/readme.md。
brew install kind
kind create cluster --name k8sgpt-demo
kubectl apply -f https://raw.githubusercontent.com/weibaohui/k8m/refs/heads/main/deploy/k8m.yaml
建议修改环境变量。例如,在deployy.yaml中添加env参数
如果您想本地开发和调试,请首先进行本地前端构建以自动生成dist目录。因为此项目使用二进制嵌入,前端没有dist将会出错。
cd ui
pnpm run build
#下载依赖
go mod tidy
#运行
air
#或者
go run main.go
# 监听localhost:3618端口
cd ui
pnpm run dev
#Vite服务会监听在localhost:3000端口
#Vite转发后端访问到3618端口
如果您有任何进一步的问题或需要额外的帮助,请随时联系我!
zhaomingcheng01 提供了许多高质量的建议,并对k8m的易用性做出了杰出贡献~
La0jin 提供的在线资源和维护极大地改善了k8m的显示效果
eryajf 提供了非常有用的GitHub Actions,并为k8m增加了诸如发布、构建和发布的自动化功能
微信(罗马太阳)搜索ID:daluomadetaiyang,备注k8m。 <br><img width="214" alt="Image" src="https://gips1.baidu.com/it/u=1315597581,2234753628&fm=3081&app=3081&f=PNG?w=428&h=484" />