MIT License

技术解读

以下内容由 GitRead 中文社区 编辑团队基于项目 README 与官方资料整理, 结合中文开发者的常见使用场景补充技术选型建议。具体以项目官方文档为准。

weibaohui/k8m 深度技术分析

项目背景与痛点

在 Kubernetes 的广泛使用背景下,多集群管理、智能分析和实时异常检测的需求日益凸显。大型企业面临着日益复杂的 Kubernetes 集群管理问题,如何高效地监控集群状态、优化资源调度和提高运维效率成为关键问题。weibaohui/k8m 项目正是在此背景下应运而生,致力于解决多集群管理过程中的复杂度与挑战,提供了一个轻量级、跨平台的迷你版 Kubernetes AI Dashboard,显著提升集群管理的便捷性和效率。

核心技术揭秘

技术架构

k8m 是一个轻量级的工具,支持多架构部署且能单文件启动,这为其带来的灵活性和部署简易性提供了保障。除此之外,k8m 还具备多集群管理功能,支持智能分析和实时异常检测能力。

智能分析与实时异常检测

通过集成 AI 算法,k8m 能够自动分析集群状态数据,识别集群中的异常行为,并给出相应的警告或建议。这些功能不仅减轻了人工操作的工作量,还提高了集群的整体稳定性和运维效率。

graph TD A[用户请求] --> B[MCP 权限校验] B -->|"通过"| C[数据采集] C --> D[智能分析引擎] D --> E[异常检测] E --> F[报警/建议生成] B -->|"失败"| G[返回错误] F --> H[用户通知]

数据流

从用户请求开始,经由 MCP 权限校验进入数据采集阶段,采集到的数据会直接传递给智能分析引擎进行处理。在此过程中,分析引擎会进行实时异常检测,如果没有异常,继续流转;若检测到异常,则生成报警信息,并通过用户通知模块反馈给用户。

功能亮点与差异

与传统的 Kubernetes 管理工具相比,k8m 的目的在于简化用户的运维工作、降低对于集群监控的操作门槛。它具有几个显著的独特特点:

  1. 多架构适配:适应多种操作系统和硬件架构,使其在各种环境中都能充分发挥效用。
  2. 单文件部署:可以实现一键部署,极大地减少部署过程中的配置复杂性。
  3. 集成多集群管理:支持管理多个 Kubernetes 集群,并提供统一的视图,方便操作与管理。
  4. 智能分析模块:内嵌复杂分析算法,提供实时的异常检测与运维建议。
  5. 自定义权限设置:允许创建个性化权限设置,确保安全性与合规性。

应用场景与落地建议

k8m 适用于如下场景:

  1. 多集群情况:对于管理多个 Kubernetes 集群的企业而言,k8m 提供了统一的视图和简化的管理界面,能够有效提高运维效率。
  2. 大型项目:涉及众多服务的大型企业项目中,复杂性和维护成本是关键挑战,k8m 的异常检测功能可以帮助快速识别问题所在。
  3. 研发测试团队:开发者和测试工程师可以使用其智能分析功能,快速获取集群健康状态和资源使用情况,提高测试与迭代速度。

注意事项

在生产环境部署和使用此工具时,请注意以下几点:

  • 确保授权设置合理,避免权限滥用。
  • 尽可能地进行性能测试,确保监控准确性及性能开销。
  • 随着集群规模增长,根据实际情况调整 k8m 的监控频率及策略,避免资源损耗。

综合评价

优点
  • 简单易用且灵活多变的单文件部署方式。
  • 提供了强大的智能分析与异常检测功能,显著降低了运维负担。
  • 高度集成化,减少多集群管理的复杂度。
缺点
  • 由于其轻量级的特性,可能在某些高负载或大规模集群场景中性能受限。
  • 需要深入了解集群上下文以便更高效使用其智能分析功能。

无疑,weibaohui/k8m 以其轻量、智能及易于部署的特点解决了多集群管理中的实际痛点,是一个值得推荐的工具。然而,具体实施时应根据实际业务需求进行适当的配置与调整。

简要分析

热度分
1238
价值分
584
活跃状态
活跃

语言占比

CSS
Dockerfile
Go
HTML
JavaScript
Makefile
SCSS
Shell
TypeScript

Release

README

K8M

weibaohui%2Fk8m | Trendshift

GitHub Repo Stars GitHub Repo Forks

License MIT Go Report Card GitHub Release GitHub Downloads (all assets, all releases) GitHub Repo Issues Trust Score zread Repobeats analytics image

English | 中文

k8m 是一款AI驱动的 Mini Kubernetes AI Dashboard 轻量级控制台工具,专为简化集群管理设计。它基于 AMIS 构建,并通过 kom 作为 Kubernetes API 客户端,k8m 内置了 Qwen2.5-Coder-7B,支持deepseek-ai/DeepSeek-R1-Distill-Qwen-7B模型 模型交互能力,同时支持接入您自己的私有化大模型(包括ollama)。

快速体验

本项目提供cnb 在线访问地址 k8m

  1. fork 这个项目后,
  2. 点击 仓库右上角 🛫起飞 按钮,
  3. 选择云IDE,
  4. 进入终端
  5. 输入cd letsfly/justforfun/k8m && docker-compose up -d && docker-compose ps
  6. 进入端口 (在终端 tab页面右边)
  7. 新建端口转发,填入8888,确定
  8. 点击生成的转发地址,打开k8m 登录页面
  9. 输入用户名密码:k8m k8m 。
  10. 🛫

文档

主要特点

  • 迷你化设计:所有功能整合在一个单一的可执行文件中,部署便捷,使用简单。
  • 简便易用:友好的用户界面和直观的操作流程,让 Kubernetes 管理更加轻松。支持标准k8s、aws eks、k3s、kind、k0s等集群类型。
  • 高效性能:后端采用 Golang 构建,前端基于百度 AMIS,保证资源利用率高、响应速度快。
  • AI驱动融合 :基于ChatGPT实现划词解释、资源指南、YAML属性自动翻译、Describe信息解读、日志AI问诊、运行命令推荐,并集成了k8s-gpt 功能,实现中文展现,为管理k8s提供智能化支持。
  • 功能插件化:特性功能插件化,按需开启,不开启不占资源。
  • MCP集成:可视化管理MCP,实现大模型调用Tools,内置k8s多集群MCP工具49种,可组合实现超百种集群操作,可作为MCP Server 供其他大模型软件使用。轻松实现大模型管理k8s。可详细记录每一次MCP调用。支持mcp.so主流服务。
  • MCP权限打通:多集群管理权限与MCP大模型调用权限打通,一句话概述:谁使用大模型,就用谁的权限执行MCP。安全使用,无后顾之忧,避免操作越权。
  • 多集群管理:自动识别集群内部使用InCluster模式,配置kubeconfig路径后自动扫描同级目录下的配置文件,同时注册管理多个集群,支持心跳检测与自动重连。
  • 多集群权限管理:支持对用户、用户组进行授权,可按集群授权,包括集群只读、Exec命令、集群管理员三种权限。对用户组授权后,组内用户均获得相应授权。支持设置命名空间黑白名单。
  • 支持k8s最新特性:支持APIGateway、OpenKruise等功能特性。
  • Pod文件管理:在Console 界面左侧的文件树,右键菜单,支持 Pod 内文件的浏览、编辑、上传、下载、删除,简化日常操作。
  • Pod运行管理:支持实时查看 Pod 日志,下载日志,并在 Pod 内直接执行 Shell 命令。支持Ctrl+F搜索,类似grep -A -B高亮搜索
  • API开放:支持创建API KEY,从第三方外部访问,提供swagger接口管理页面。
  • 集群巡检支持:支持多集群定时巡检、自定义巡检规则,支持lua脚本规则。支持发送到钉钉群、微信群、飞书群以及自定义webhook。支持AI总结。
  • k8s Event转发:支持多集群k8s Event转发到webhook中,可按集群、关键字、命名空间、名称等进行过滤,建立多个专门的监控转发通道。支持AI总结。
  • CRD管理:可自动发现并管理 CRD 资源,树状列出所有CRD,提高工作效率。
  • Helm市场:支持Helm自由添加仓库,一键安装、卸载、升级 Helm 应用,支持自动更新。
  • 跨平台支持:兼容 Linux、macOS 和 Windows,并支持 x86、ARM 等多种架构,确保多平台无缝运行。
  • 多数据库支持:支持SQLite、MySql、PostgreSql等多种数据库。
  • 完全开源:开放所有源码,无任何限制,可自由定制和扩展,可商业使用。

k8m 的设计理念是"AI驱动,轻便高效,化繁为简",它帮助开发者和运维人员快速上手,轻松管理 Kubernetes 集群。

运行

  1. 下载:从 GitHub release 下载最新版本。
  2. 运行:使用 ./k8m 命令启动,访问http://127.0.0.1:3618。
  3. 登录用户名密码:
    • 用户名:k8m
    • 密码:k8m
    • 请注意上线后修改用户名密码、启用两步验证。
  4. 参数:
Usage 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          已废弃,无实际作用(登录凭证已改为服务端会话)
  -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

容器化k8s集群方式运行

使用KinD、MiniKube 安装一个小型k8s集群

KinD方式

  • 创建 KinD Kubernetes 集群
brew install kind
  • 创建新的 Kubernetes 集群:
kind create cluster --name k8sgpt-demo

将k8m部署到集群中体验

安装脚本

kubectl apply -f https://raw.githubusercontent.com/weibaohui/k8m/refs/heads/main/deploy/k8m.yaml

生产部署启用主备选举插件,注意事项

  • 单实例运行service的定义不要加 k8m.io/role: leader 标签,加了不能正常访问。
  • 多实例运行service的定义必须加 k8m.io/role: leader 标签,否则不会切换。
  • 多实例运行的yaml如下:
kubectl apply -f https://raw.githubusercontent.com/weibaohui/k8m/refs/heads/main/deploy/k8m-ms.yaml

ChatGPT 配置指南

内置GPT

从v0.0.8版本开始,将内置GPT,无需配置。 如果您需要使用自己的GPT,请参考以下文档。

ChatGPT 状态调试

如果设置参数后,依然没有效果,请尝试使用./k8m -v 6获取更多的调试信息。 会输出以下信息,通过查看日志,确认是否启用ChatGPT。

开发调试

如果你想在本地开发调试,请先执行一次本地前端构建,自动生成dist目录。因为本项目采用了二进制嵌入,没有dist前端会报错。

第一步编译前端
cd ui
pnpm run build
编译调试后端
#下载依赖
go mod tidy
#运行
air
#或者
go run *.go 
# 监听localhost:3618端口
前端热加载
cd ui
pnpm run dev
#Vite服务会监听在localhost:3000端口
#Vite转发后端访问到3618端口

访问http://localhost:3000

HELP & SUPPORT

如果你有任何进一步的问题或需要额外的帮助,请随时与我联系!

特别鸣谢

zhaomingcheng01:提出了诸多非常高质量的建议,为k8m的易用好用做出了卓越贡献~

La0jin:提供在线资源及维护,极大提升了k8m的展示效果

eryajf:为我们提供了非常好用的github actions,为k8m增加了自动化的发版、构建、发布等功能

Hosted deployment

A hosted deployment is available on Fronteir AI.

联系我 飞书群

输入图片说明

评论

暂无评论