https://github.com/weibaohui/k8m
mini kubernetes dashboard,all in one single file,support x86\arm\ppc64le\mips\x390s all platorm
https://github.com/weibaohui/k8m
Last synced: 18 days ago
JSON representation
mini kubernetes dashboard,all in one single file,support x86\arm\ppc64le\mips\x390s all platorm
- Host: GitHub
- URL: https://github.com/weibaohui/k8m
- Owner: weibaohui
- License: mit
- Created: 2024-10-11T01:39:31.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2024-10-23T11:47:48.000Z (6 months ago)
- Last Synced: 2024-10-25T06:32:10.306Z (6 months ago)
- Language: CSS
- Size: 8.78 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-mcp-servers - Kubernetes - Kubernetes multi-cluster management and operations, featuring a management ui, logging, and nearly 50 built-in tools covering common DevOps and development scenarios. Supports both standard and CRD resources. (⚡ <a name="cloud-platforms"></a>Cloud Platforms)
- awesome-mcp-servers - K8m AI Kubernetes Dashboard - 一款轻量级、跨平台的 Mini Kubernetes AI Dashboard,支持大模型+智能体+MCP,集成多集群管理、智能分析、实时异常检测等功能,支持多架构并可单文件部署,助力高效集群管理与运维优化。 (Table of Contents / Cloud Platforms)
- awesome-mcp-servers - K8m AI Kubernetes Dashboard - 一款轻量级、跨平台的 Mini Kubernetes AI Dashboard,支持大模型+智能体+MCP,集成多集群管理、智能分析、实时异常检测等功能,支持多架构并可单文件部署,助力高效集群管理与运维优化。 (Table of Contents / Cloud Platforms)
- awesome-mcp-servers - weibaohui/k8m - 🏎️ ☁️/🏠 MCPマルチクラスターKubernetesの管理と運用を提供し、管理インターフェース、ログ機能を備え、一般的な運用・開発シナリオをカバーする約50種類のツールを内蔵。標準リソースおよびCRDリソースをサポート。 (サーバー実装 / ☁️ <a name="cloud-platforms"></a>クラウドプラットフォーム)
- awesome-mcp-servers - weibaohui/k8m - cluster Kubernetes management and operations using MCP, featuring a management interface, logging, and nearly 50 built-in tools covering common DevOps and development scenarios. Supports both standard and CRD resources. (Community Servers)
README
## **k8m**
[English](README_en.md) | [中文](README.md)
[](https://github.com/weibaohui/k8m/blob/master/LICENSE)
**k8m** 是一款AI驱动的 Mini Kubernetes AI Dashboard 轻量级控制台工具,专为简化集群管理设计。它基于 AMIS 构建,并通过 [
`kom`](https://github.com/weibaohui/kom) 作为 Kubernetes API 客户端,**k8m** 内置了
Qwen2.5-Coder-7B,支持deepseek-ai/DeepSeek-R1-Distill-Qwen-7B模型
模型交互能力,同时支持接入您自己的私有化大模型。### 主要特点
- **迷你化设计**:所有功能整合在一个单一的可执行文件中,部署便捷,使用简单。
- **简便易用**:友好的用户界面和直观的操作流程,让 Kubernetes 管理更加轻松。
- **高效性能**:后端采用 Golang 构建,前端基于百度 AMIS,保证资源利用率高、响应速度快。
- **AI驱动融合**:基于ChatGPT实现划词解释、资源指南、YAML属性自动翻译、Describe信息解读、日志AI问诊、运行命令推荐,并集成了[
`k8s-gpt`](https://github.com/k8sgpt-ai/k8sgpt)功能,实现中文展现,为管理k8s提供智能化支持。
- **MCP集成**:可视化管理MCP,实现大模型调用Tools,内置k8s多集群MCP工具49种,可组合实现超百种集群操作,可作为MCP Server
供其他大模型软件使用。轻松实现大模型管理k8s。支持mcp.so主流服务。
- **多集群管理**:自动识别集群内部使用InCluster模式,配置kubeconfig路径后自动扫描同级目录下的配置文件,同时注册管理多个集群。
- **Pod 文件管理**:支持 Pod 内文件的浏览、编辑、上传、下载、删除,简化日常操作。
- **Pod 运行管理**:支持实时查看 Pod 日志,下载日志,并在 Pod 内直接执行 Shell 命令。
- **CRD 管理**:可自动发现并管理 CRD 资源,提高工作效率。
- **Helm 市场**:支持Helm自由添加仓库,一键安装、卸载、升级 Helm 应用。
- **跨平台支持**:兼容 Linux、macOS 和 Windows,并支持 x86、ARM 等多种架构,确保多平台无缝运行。
- **完全开源**:开放所有源码,无任何限制,可自由定制和扩展,可商业使用。**k8m** 的设计理念是“AI驱动,轻便高效,化繁为简”,它帮助开发者和运维人员快速上手,轻松管理 Kubernetes 集群。
## **运行**
1. **下载**:从 [GitHub](https://github.com/weibaohui/k8m) 下载最新版本。
2. **运行**:使用 `./k8m` 命令启动,访问[http://127.0.0.1:3618](http://127.0.0.1:3618)。
3. **参数**:```shell
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")
-s, --mcp-server-port int MCP Server 监听端口,默认3619 (default 3619)
-v, --v Level klog的日志级别 (default 2)
```## **ChatGPT 配置指南**
### 内置GPT
从v0.0.8版本开始,将内置GPT,无需配置。
如果您需要使用自己的GPT,请参考以下步骤。### **环境变量配置**
需要设置环境变量,以启用ChatGPT。
```bash
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。```go
ChatGPT 开启状态:true
ChatGPT 启用 key:sk-hl**********************************************, url:https: // api.siliconflow.cn/v1
ChatGPT 使用环境变量中设置的模型:Qwen/Qwen2.5-Coder-7B-Instruc
```### **ChatGPT 账户**
本项目集成了[github.com/sashabaranov/go-openai](https://github.com/sashabaranov/go-openai)SDK。
国内访问推荐使用[硅基流动](https://cloud.siliconflow.cn/)的服务。
登录后,在[https://cloud.siliconflow.cn/account/ak](https://cloud.siliconflow.cn/account/ak)创建API_KEY## **k8m 支持环境变量设置**
以下是k8m支持的环境变量设置参数及其作用的表格:
| 环境变量 | 默认值 | 说明 |
|-----------------------|----------------------------|-------------------------------------------------------------------|
| `PORT` | `3618` | 监听的端口号 |
| `MCP_SERVER_PORT` | `3619` | 内置多集群k8s MCP Server监听的端口号 |
| `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"` | 是否自动注册纳管宿主集群,默认启用 |这些环境变量可以通过在运行应用程序时设置,例如:
```sh
export PORT=8080
export OPENAI_API_KEY="your-api-key"
export GIN_MODE="release"
./k8m
```**注意:环境变量会被启动参数覆盖。**
## 容器化k8s集群方式运行
使用[KinD](https://kind.sigs.k8s.io/docs/user/quick-start/)、[MiniKube](https://minikube.sigs.k8s.io/docs/start/)
安装一个小型k8s集群## KinD方式
* 创建 KinD Kubernetes 集群
```
brew install kind
```* 创建新的 Kubernetes 集群:
```
kind create cluster --name k8sgpt-demo
```## 将k8m部署到集群中体验
### 安装脚本
```docker
kubectl apply -f https://raw.githubusercontent.com/weibaohui/k8m/refs/heads/main/deploy/k8m.yaml
```* 访问:
默认使用了nodePort开放,请访问31999端口。或自行配置Ingress
http://NodePortIP:31999### 修改配置
首选建议通过修改环境变量方式进行修改。 例如增加deploy.yaml中的env参数
## 内置MCP Server 使用说明
### 服务端点,可开发供其他AI工具使用
MCP程序使用3619端口。NodePort使用31919端口。
如果二进制方式直接启动,那么访问地址为http://ip:3619/sse
如果集群方式启动,则访问地址为则访问地址为http://nodeIP:31919/sse### 集群管理范围
内置MCP Server 管理范围与k8m 纳管的集群范围一致。
界面内已连接的集群均可使用。### 内置MCP Server 配置说明
#### MCP工具列表(49种)
| 类别 | 方法 | 描述 |
|--------------------|--------------------------------|-----------------------------------------|
| **集群管理(1)** | `list_clusters` | 列出所有已注册的Kubernetes集群 |
| **部署管理(12)** | `scale_deployment` | 扩缩容Deployment |
| | `restart_deployment` | 重启Deployment |
| | `stop_deployment` | 停止Deployment |
| | `restore_deployment` | 恢复Deployment |
| | `update_tag_deployment` | 更新Deployment镜像标签 |
| | `rollout_history_deployment` | 查询Deployment升级历史 |
| | `rollout_undo_deployment` | 回滚Deployment |
| | `rollout_pause_deployment` | 暂停Deployment升级 |
| | `rollout_resume_deployment` | 恢复Deployment升级 |
| | `rollout_status_deployment` | 查询Deployment升级状态 |
| | `hpa_list_deployment` | 查询Deployment的HPA列表 |
| | `list_deployment_pods` | 获取Deployment管理的Pod列表 |
| **动态资源管理(含CRD,8)** | `get_k8s_resource` | 获取k8s资源 |
| | `describe_k8s_resource` | 描述k8s资源 |
| | `delete_k8s_resource` | 删除k8s资源 |
| | `list_k8s_resource` | 列表形式获取k8s资源 |
| | `list_k8s_event` | 列表形式获取k8s事件 |
| | `patch_k8s_resource` | 更新k8s资源,以JSON Patch方式更新 | |
| | `label_k8s_resource` | 为k8s资源添加或删除标签 |
| | `annotate_k8s_resource` | 为k8s资源添加或删除注解 |
| **节点管理(8)** | `taint_node` | 为节点添加污点 |
| | `untaint_node` | 为节点移除污点 |
| | `cordon_node` | 为节点设置Cordon |
| | `uncordon_node` | 为节点取消Cordon |
| | `drain_node` | 为节点执行Drain |
| | `get_node_resource_usage` | 查询节点的资源使用情况 |
| | `get_node_ip_usage` | 查询节点上Pod IP资源使用情况 |
| | `get_node_pod_count` | 查询节点上的Pod数量 |
| **Pod 管理(14)** | `list_pod_files` | 列出Pod文件 |
| | `list_all_pod_files` | 列出Pod所有文件 |
| | `delete_pod_file` | 删除Pod文件 |
| | `upload_file_to_pod` | 上传文件到Pod内,支持传递文本内容,存储为Pod内文件 |
| | `get_pod_logs` | 获取Pod日志 |
| | `run_command_in_pod` | 在Pod中执行命令 |
| | `get_pod_linked_service` | 获取Pod关联的Service |
| | `get_pod_linked_ingress` | 获取Pod关联的Ingress |
| | `get_pod_linked_endpoints` | 获取Pod关联的Endpoints |
| | `get_pod_linked_pvc` | 获取Pod关联的PVC |
| | `get_pod_linked_pv` | 获取Pod关联的PV |
| | `get_pod_linked_env` | 通过在pod内运行env命令获取Pod运行时环境变量 |
| | `get_pod_linked_env_from_yaml` | 通过Pod yaml定义获取Pod运行时环境变量 |
| | `get_pod_resource_usage` | 获取Pod的资源使用情况,包括CPU和内存的请求值、限制值、可分配值和使用比例 |
| **YAML管理(2)** | `apply_yaml` | 应用YAML资源 |
| | `delete_yaml` | 删除YAML资源 |
| **存储管理(3)** | `set_default_storageclass` | 设置默认StorageClass |
| | `get_storageclass_pvc_count` | 获取StorageClass下的PVC数量 |
| | `get_storageclass_pv_count` | 获取StorageClass下的PV数量 |
| **Ingress管理(1)** | `set_default_ingressclass` | 设置默认IngressClass |### AI工具集成
#### 通用配置文件
适合MCP工具集成,如Cursor、Claude Desktop、Windsurf等,此外也可以使用这些软件的UI操作界面进行添加。
```json
{
"mcpServers": {
"kom": {
"type": "sse",
"url": "http://IP:9096/sse"
}
}
}
```#### Claude Desktop
1. 打开Claude Desktop设置面板
2. 在API配置区域添加MCP Server地址
3. 启用SSE事件监听功能
4. 验证连接状态#### Cursor
1. 进入Cursor设置界面
2. 找到扩展服务配置选项
3. 添加MCP Server的URL(例如:http://localhost:3619/sse)#### Windsurf
1. 访问配置中心
2. 设置API服务器地址### MCP常见问题
1. 确保MCP Server正常运行且端口可访问
2. 检查网络连接是否正常
3. 验证SSE连接是否成功建立
4. 查看工具日志以排查连接问题,MCP执行失败会有报错记录。**V0.0.66更新**
1. 新增MCP支持。
2. 内置支持k8s多集群操作:
1. list_k8s_resource
2. get_k8s_resource
3. delete_k8s_resource
4. describe_k8s_resource
5. get_pod_logs**v0.0.67 更新**
1. 新增:MCP查询事件工具

2. 新增:MCP查询注册集群工具

3. 新增:MCP查询事件工具

4. 增强:列表查询资源支持label ,如app=k8m

5. 增强:MCP服务器增加快捷开启关闭按钮
**v0.0.64 更新**
1. 增加MCP支持


**v0.0.62 更新**
1. 划词解释增加全屏按钮
解决部分情况下解释内容非常多,查看不方便,以及滚动条不能完整滚动的问题。

**v0.0.61 更新**
1. 新增2FA两步验证
启用后,登录时需填写验证码,增强安全性

2. InCluster运行模式增加开关
默认开启,可设置环境变量显式关闭。按需开启。
3. 优化资源用量显示逻辑
未设置资源用量,在k8s中属于最低保障等级。界面显示进度条调整为红色100%,提醒管理员关注。
**v0.0.60更新**
1. 增加helm 常用仓库


2. Namespace增加LimitRange、ResourceQuota快捷菜单


3. 增加InCluster模式开关
默认开启InCluster模式,如需关闭,可以注入环境变量,或修改配置文件,或修改命令行参数**v0.0.53更新**
1. 日志查看支持颜色,如果输出console的时候带有颜色,那么在pod 日志查看时就可以显示。

2. Helm功能上线
2.1 新增helm仓库

2.2 安装helm chart 应用
应用列表

查看应用


支持对参数内容选中划词AI解释

2.3 查看已部署release


2.4 查看安装参数

2.5 更新、升级、降级部署版本

2.6 查看已部署release变更历史
**v0.0.50更新**
1. 新增HPA

2. 关联资源增加HPA
**v0.0.49更新**
1. 新增标签搜索:支持精确搜索、模糊搜索。
精确搜索。可以搜索k,k=v两种方式精确搜索。默认列出所有标签。支持自定义新增搜索标签。

模糊搜索。可以搜索k,v中的任意满足。类似like %xx%的搜索方式。

2. 多集群纳管支持自定义名称。


3. 优化Pod状态显示
在列表页展示pod状态,不同颜色区分正常运行与未就绪运行。

**v0.0.44更新**
1. 新增kubectl shell 功能
可以web 页面执行 kubectl 命令了

2. 新增节点终端NodeShell
在节点上执行命令


3. 新增创建功能页面
执行过的yaml会保存下来,下次打开页面可以直接点击,收藏的yaml可以导入导出。导出的文件为yaml,可以复用



4. deploy、ds、sts等类型新增关联资源
4.1 容器组
直接显示其下受控的pod容器组,并提供快捷操作

4.2 关联事件
显示deploy、rs、pod等所有相关的事件,一个页面看全相关事件

4.3 日志
显示Pod列表,可选择某个pod、Container展示日志

4.4 历史版本
支持历史版本查看,并可diff

5. 全新AI对话窗口

6. 全新AI搜索方式,哪里不懂选哪里
页面所有地方都可以`划词翻译`,哪里有疑问就选中哪里。
**v0.0.21更新**
1. 新增问AI功能:
有什么问题,都可以直接询问AI,让AI解答你的疑惑


2. 文档界面优化:
优化AI翻译效果,降低等待时间

3. 文档字段级AI示例:
针对具体的字段,给出解释,给出使用Demo样例。

4. 增加容忍度详情:

5. 增加Pod关联资源
一个页面,展示相关的svc、endpoint、pvc、env、cm、secret,甚至集成了pod内的env列表,方便查看







6. yaml创建增加导入功能:
增加导入功能,可以直接执行,也可导入到编辑器。导入编辑器后可以二次编辑后,再执行。

**v0.0.19更新**
1. 多集群管理功能
按需选择多集群,可随时切换集群

2. 节点资源用量功能
直观显示已分配资源情况,包括cpu、内存、pod数量、IP数量。

3. Pod 资源用量

4. Pod CPU内存设置
按范围方式显示CPU设置,内存设置,简洁明了

5. AI页面功能升级为打字机效果
响应速度大大提升,实时输出AI返回内容,体验升级
**v0.0.15更新**
1. 所有页面增加资源使用指南。启用AI信息聚合。包括资源说明、使用场景(举例说明)、最佳实践、典型示例(配合前面的场景举例,编写带有中文注释的yaml示例)、关键字段及其含义、常见问题、官方文档链接、引用文档链接等信息,帮助用户理解k8s

2. 所有资源页面增加搜索功能。部分页面增高频过滤字段搜索。

3. 改进LimitRange信息展示模式

4. 改进状态显示样式

5. 统一操作菜单

6. Ingress页面增加域名转发规则信息

7. 改进标签显示样式,鼠标悬停展示

8. 优化资源状态样式更小更紧致

9. 丰富Service展示信息

10. 突出显示未就绪endpoints

11. endpoints鼠标悬停展开未就绪IP列表

12. endpointslice 突出显示未ready的IP及其对应的POD,

13. 角色增加延展信息

14. 角色与主体对应关系

15. 界面全量中文化,k8s资源翻译为中文,方便广大用户使用。

### HELP & SUPPORT
如果你有任何进一步的问题或需要额外的帮助,请随时与我联系!
### 特别鸣谢
[zhaomingcheng01](https://github.com/zhaomingcheng01):提出了诸多非常高质量的建议,为k8m的易用好用做出了卓越贡献~
## 联系我
微信(大罗马的太阳) 搜索ID:daluomadetaiyang,备注k8m。
## 微信群
