# K8s-aiops **Repository Path**: cyfkobe/k8s-aiops ## Basic Information - **Project Name**: K8s-aiops - **Description**: AIOps — Kubernetes 智能运维平台 version Go React 概述 K8s AIOps 是一款面向 Kubernetes 集群的统一运维管理平台,以 AI 为核心驱动,整合集群管理、日志分析、监控告警、安全网络、CI/CD 等能力,帮助运维团队在一个平台上完成日常运维工作。 参考 k9s 的键盘高效操作与 Kuboard 的可视化管理,提供了直观的 Web 控制台。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 6 - **Created**: 2026-10-22 - **Last Updated**: 2026-10-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # AIOps — Kubernetes 智能运维平台 [![version](https://img.shields.io/badge/version-v0.14.0-blue)]() [![Go](https://img.shields.io/badge/Go-1.22+-00ADD8)]() [![React](https://img.shields.io/badge/React-18-61DAFB)]() ## 概述 K8s AIOps 是一款面向 Kubernetes 集群的**统一运维管理平台**,以 AI 为核心驱动,整合集群管理、日志分析、监控告警、安全网络、CI/CD 等能力,帮助运维团队在一个平台上完成日常运维工作。 参考 [k9s](https://k9scli.io/) 的键盘高效操作与 [Kuboard](https://kuboard.cn/) 的可视化管理,提供了直观的 Web 控制台。 ### 核心能力 - **AI 智能诊断** — 接入 DeepSeek/通义千问等大模型,**双引擎架构:Chat + Agent**。Agent 模式支持 ReAct 多步推理 + Function Calling 自动调用 20+ K8s 工具,自然语言操作集群 - **集群管理** — 节点管理(详情/封锁/排空)、Pod 诊断(命名空间/节点/状态筛选+排序)、**Deployment 管理(扩缩容/重启/回滚/更新镜像)**、资源大盘(趋势图/Pod状态分布)、证书检查+续签(Renew/Kubelet)、Helm 管理(详情/历史/回滚)、多集群切换 - **安全与网络** — JWT 认证授权系统(admin/viewer 角色)+ Token过期检测、RBAC 安全分析(审计/过度授权/通配符/未用账号)、NetworkPolicy+Service/Ingress 拓扑 - **日志检索** — kubectl logs + ES 双模式,日志关键词高亮(error/warning颜色标记)、容器列表/下载/命名空间/Pod自动补全 - **巡检脚本库** — 存放K8s巡检Shell/Python脚本,自动执行并注入HTML报告,支持钉钉/企微群通知 - **AI 告警与自愈** — 告警自动聚合+AI 根因分析、Pod 自动诊断+修复建议、20+ 安全分级工具调用、dry-run 模式 - **构建部署** — Makefile 一键构建安装、install.sh 一键部署、systemd/Docker/Helm 三种部署方式 - **可扩展集成** — Grafana、ES、GitLab、Jenkins 等接口 --- ## 🚀 快速上手 (克隆即用) ### 前置要求 | 工具 | 版本要求 | |------|---------| | Go | 1.22+ | | Node.js | 22+ | | K8s 集群 | 任意版本 (需 `kubeconfig`) | ### 一条命令安装 ```bash curl -sSL https://gitee.com/laomobcy/k8s-aiops/raw/master/install.sh | bash ``` ### 分步安装 ```bash git clone https://gitee.com/laomobcy/k8s-aiops.git cd k8s-aiops ``` ### 2. 一键构建 ```bash # 安装前端依赖 + 构建 cd web && npm install && npm run build && cd .. # 安装 Go 依赖 go mod tidy # 编译(纯 Go 无 CGO,无需 GCC) CGO_ENABLED=0 go build -o bin/k8s-iops . ``` ### 3. 运行 ```bash # 准备数据目录 mkdir -p data # 基础启动(无需任何外部依赖) KUBECONFIG=~/.kube/config DB_PATH=./data/k8s-iops.db ./bin/k8s-iops # 浏览器访问 http://localhost:8080 ``` ### 4. 开启全部功能(可选) ```bash # AI 诊断 export AI_API_KEY=sk-your-key export AI_BASE_URL=https://api.deepseek.com export AI_MODEL=deepseek-chat # Grafana 集成 export GRAFANA_URL=https://grafana.your-domain.com export GRAFANA_API_KEY=your-api-key # Elasticsearch 日志 export ES_HOST=https://es.your-domain.com:9200 export ES_USER=elastic export ES_PASS=your-password # GitLab CI export GITLAB_URL=https://gitlab.your-domain.com export GITLAB_TOKEN=your-token # Jenkins export JENKINS_URL=https://jenkins.your-domain.com export JENKINS_USER=your-user export JENKINS_TOKEN=your-token KUBECONFIG=~/.kube/config DB_PATH=./data/k8s-iops.db ./bin/k8s-iops ``` > 所有集成都是可选的,不配置时对应页面会显示配置引导,不影响其他功能使用。 ### 5. 本地开发(无集群也可) ```bash cd web npm run dev:mock # Mock API + Vite 热更新 # 访问 http://localhost:3000 ``` Mock 数据在 `web/mock/server.cjs`,**无需 K8s 集群**即可开发前端。 --- ## ✨ 功能总览 ### v0.14.0 (当前) | 模块 | 功能 | 状态 | |------|------|------| | **AI Agent** | ReAct 多步推理 + Function Calling + 20+ K8s 工具 + 5级安全守卫 + 审计日志 | ✅ **新** | | **AI 告警** | 告警聚合 + AI 根因分析 + 修复建议 | ✅ **新** | | **故障自愈** | Pod 自动诊断 + 修复方案生成 + 批量自愈扫描 | ✅ **新** | | 集群概览 | 4 指标卡、异常列表、节点资源热力图 | ✅ | | 多集群管理 | 多集群切换、连接/断开、状态检测 | ✅ | | 节点管理 | 节点列表/详情、封锁/解封/排空操作 | ✅ | | Pod 诊断 | Pod 列表/状态筛选、诊断弹窗、AI 分析 | ✅ | | Deployment | 列表/详情、扩缩容、滚动重启、回滚、更新镜像 | ✅ | | 资源大盘 | Namespace 排行、节点资源详情、趋势图表 | ✅ | | 资源列表 | Service / Ingress / Endpoints 三 Tab 切换 | ✅ | | 存储管理 | PVC/PV 双 Tab | ✅ | | 证书管理 | TLS 证书 + 系统证书(`kubeadm`)双 Tab + **续签(Renew/Kubelet)** | ✅ | | Helm 管理 | Release 列表/详情/历史/回滚/概览 | ✅ | | 日志检索 | kubectl logs + Elasticsearch 双模式 | ✅ | | Grafana | iframe 嵌入 + 后端代理 + API Key 认证 | ✅ | | CI/CD | GitLab CI + Jenkins Pipeline 状态展示 | ✅ | | 版本升级 | 当前版本、节点分布、6 步升级指引 | ✅ | | RBAC 安全 | 角色/绑定/SA 可视化 + 安全审计(过度授权/通配符/未使用) | ✅ | | 网络策略 | NetworkPolicy 卡片 + Service/Ingress 拓扑 | ✅ | | 告警中心 | P0/P1/P2 聚合、展开详情、确认 | ✅ | | 巡检报告 | 手动巡检 + HTML 报告 + 历史记录 | ✅ | | 认证授权 | JWT 登录 + admin/viewer 角色 + 用户 CRUD | ✅ | | 待办看板 | 看板布局(规划中/进行中/已完成),卡片推进回退 | ✅ | | 脚本库 | K8s 巡检脚本管理 + 自动执行 | ✅ | --- ## 🏗 架构 ``` ┌──────────────────────────────────────────────────────────────────┐ │ 前端 (React 18 + TypeScript) │ │ Dashboard PodList Storage Alerts Logs RBAC │ │ Network CICD Upgrade Grafana AI Todo Certs │ │ Helm Nodes Resources ResourceList Deployments │ │ Clusters Login │ └──────────────────────────────┬───────────────────────────────────┘ │ HTTP REST API (/api/v1) ┌──────────────────────────────▼───────────────────────────────────┐ │ 后端 (Go 1.22+ / Gin) │ │ 集群管理 诊断引擎 巡检引擎 告警引擎 AI Chat 引擎 RBAC 引擎 │ │ AI Agent (ReAct + FC) 故障自愈 证书检测 Helm 管理 ES/日志 │ │ NetworkPolicy 版本升级 CI/CD 脚本管理 认证授权 多集群管理 │ └──────┬──────────────┬──────────────┬──────────────────┬──────────┘ │ │ │ │ ▼ ▼ ▼ ▼ ┌──────────┐ ┌──────────┐ ┌──────────────────┐ ┌──────────────┐ │ K8s API │ │ SQLite │ │ LLM (DeepSeek │ │ Ext. 集成 │ │ Informer │ │ 持久化 │ │ /通义千问/OpenAI) │ │ Grafana/ES │ └──────────┘ └──────────┘ └──────────────────┘ │ GitLab/Jenkins│ └──────────────┘ ``` ### 技术栈 | 层 | 技术 | |----|------| | 后端语言 | Go 1.22+ | | Web 框架 | Gin | | K8s 客户端 | client-go v0.31 (Informer 实时缓存) | | 数据库 | SQLite (modernc.org/sqlite, pure Go, 无需 CGO) | | 前端框架 | React 18 + TypeScript | | UI 组件 | Arco Design | | 数据请求 | TanStack React Query v5 | | 图表 | ECharts 5 | | Markdown | react-markdown + remark-gfm | | 构建 | Vite 5 | --- ## ⚙️ 配置参考 所有配置通过环境变量设置,无需修改代码。**不配置外部集成时不影响基础功能使用。** ### 必需配置 | 变量 | 说明 | 默认值 | |------|------|--------| | `KUBECONFIG` | kubeconfig 文件路径 | 空 (使用 InCluster) | | `DB_PATH` | SQLite 数据库路径 | `/data/k8s-iops.db` | ### AI 配置 | 变量 | 说明 | 默认值 | |------|------|--------| | `AI_API_KEY` | LLM API Key | 空 (AI 功能关闭) | | `AI_BASE_URL` | LLM API 地址 | `https://api.deepseek.com` | | `AI_MODEL` | 模型名称 | `deepseek-chat` | ### 集成配置 | 变量 | 说明 | 默认值 | 功能 | |------|------|--------|------| | `GRAFANA_URL` | Grafana 地址 | 空 | Grafana 仪表盘嵌入 | | `GRAFANA_API_KEY` | Grafana API Key (Bearer Token) | 空 | 认证 | | `ES_HOST` | Elasticsearch 地址 | 空 | ES 日志检索 | | `ES_USER` | ES 用户名 | 空 | 认证 | | `ES_PASS` | ES 密码 | 空 | 认证 | | `GITLAB_URL` | GitLab 地址 | 空 | GitLab CI Pipeline | | `GITLAB_TOKEN` | GitLab Personal Access Token | 空 | 认证 | | `JENKINS_URL` | Jenkins 地址 | 空 | Jenkins Pipeline | | `JENKINS_USER` | Jenkins 用户名 | 空 | 认证 | | `JENKINS_TOKEN` | Jenkins API Token / 密码 | 空 | 认证 | ### 其他 | 变量 | 说明 | 默认值 | |------|------|--------| | `LISTEN_ADDR` | 监听地址 | `:8080` | | `PORT` | 监听端口 (优先于 LISTEN_ADDR) | `8080` | | `INSPECTION_INTERVAL` | 自动巡检间隔 | `30m` | --- ## 📡 API 文档 所有接口统一前缀 `/api/v1`,响应格式: ```json { "code": 0, "message": "success", "data": { ... } } ``` ### 集群管理 | 方法 | 路径 | 说明 | |------|------|------| | GET | `/cluster/overview` | 集群概览 (节点/Pod 统计) | | GET | `/cluster/health` | 集群健康评分 + 异常列表 | | GET | `/cluster/upgrade` | 版本信息 + 节点分布 + 升级指引 | | GET | `/nodes` | 节点列表 (状态/角色/版本/资源) | | GET | `/nodes/:name/detail` | 节点详情 | | GET | `/nodes/:name/pods` | 节点上的 Pod 列表 | | POST | `/nodes/:name/cordon` | 封锁节点 | | POST | `/nodes/:name/uncordon` | 解封节点 | | POST | `/nodes/:name/drain` | 排水节点 | | DELETE | `/nodes/:name` | 删除节点 | | GET | `/pods` | Pod 列表 | | GET | `/pods/:ns/:name` | Pod 详情 | | GET | `/pods/:ns/:name/diagnose` | Pod 诊断 | | GET | `/pods/:ns/:name/logs` | Pod 日志 | | GET | `/deployments` | Deployment 列表 | | GET | `/deployments/:ns/:name` | Deployment 详情 | | PUT | `/deployments/:ns/:name/scale` | 扩缩容 | | POST | `/deployments/:ns/:name/restart` | 滚动重启 | | POST | `/deployments/:ns/:name/rollback` | 回滚 | | PUT | `/deployments/:ns/:name/images` | 更新镜像 | | GET | `/resources/nodes` | 节点资源使用率 | | GET | `/resources/namespaces` | Namespace 资源排行 | | GET | `/resources/trend` | 资源趋势数据 | | GET | `/storage` | 存储概览 (PVC/PV) | | GET | `/clusters` | 多集群列表 | | POST | `/clusters` | 添加集群 | | DELETE | `/clusters/:id` | 移除集群 | | POST | `/clusters/:id/connect` | 连接集群 | ### 证书管理 | 方法 | 路径 | 说明 | |------|------|------| | GET | `/certificates` | TLS 证书列表 (Ingress Secret) | | GET | `/certificates/system` | 系统证书 (`kubeadm certs check-expiration`) | | GET | `/certificates/cluster-info` | 集群安装方式检测 (kubeadm/kubeasz) | | POST | `/certificates/renew` | 续签全部证书 | | POST | `/certificates/renew/:name` | 续签指定证书 | | POST | `/certificates/renew/kubelet` | 续签 Kubelet 证书 | ### 认证授权 | 方法 | 路径 | 说明 | |------|------|------| | POST | `/auth/login` | JWT 登录 | | GET | `/auth/me` | 当前用户信息 | | PUT | `/auth/password` | 修改密码 | | GET | `/auth/users` | 用户列表 (admin) | | POST | `/auth/users` | 创建用户 (admin) | | DELETE | `/auth/users/:id` | 删除用户 (admin) | ### 安全与网络 | 方法 | 路径 | 说明 | |------|------|------| | GET | `/rbac/roles` | Role + ClusterRole 列表 | | GET | `/rbac/bindings` | RoleBinding + ClusterRoleBinding 列表 | | GET | `/rbac/serviceaccounts` | ServiceAccount 列表 | | GET | `/rbac/audit` | 安全审计 | | GET | `/rbac/overprivileged` | 过度授权检测 | | GET | `/rbac/wildcards` | 通配符角色检测 | | GET | `/rbac/unused-accounts` | 未使用账号检测 | | GET | `/rbac/roles/:name/permissions` | 角色权限详情 | | GET | `/network/policies` | NetworkPolicy 列表 | | GET | `/network/overview` | 网络概览 | | GET | `/network/services` | Service 拓扑 | | GET | `/network/ingresses` | Ingress 拓扑 | ### 资源列表 | 方法 | 路径 | 说明 | |------|------|------| | GET | `/resources/services` | Service 列表 | | GET | `/resources/ingresses` | Ingress 列表 | | GET | `/resources/endpoints` | Endpoints 列表 | ### 日志检索 | 方法 | 路径 | 说明 | |------|------|------| | GET | `/logs/es` | ES 日志检索 (`?query=...&size=...&index=...`) | ### Grafana 集成 | 方法 | 路径 | 说明 | |------|------|------| | GET | `/grafana/config` | Grafana 配置状态 | | Any | `/grafana/proxy/*path` | Grafana 代理 (避免 CORS) | ### CI/CD | 方法 | 路径 | 说明 | |------|------|------| | GET | `/cicd/config` | CI/CD 配置状态 | | GET | `/cicd/pipelines` | Pipeline 列表 (GitLab + Jenkins) | ### 待办管理 | 方法 | 路径 | 说明 | |------|------|------| | GET | `/todos` | 待办列表 (按状态/优先级排序) | | PUT | `/todos/:id` | 更新待办 (status/priority/title) | ### 告警与巡检 | 方法 | 路径 | 说明 | |------|------|------| | GET | `/alerts` | 告警列表 | | GET | `/alerts/:id` | 告警详情 | | PUT | `/alerts/:id/ack` | 确认告警 | | POST | `/inspection/trigger` | 触发即时巡检 | | GET | `/inspection/latest` | 最新巡检报告 | | GET | `/inspection/history` | 巡检历史 | ### 其他 | 方法 | 路径 | 说明 | |------|------|------| | GET | `/helm/releases` | Helm Release 列表 | | GET | `/helm/overview` | Helm 概览 | | GET | `/helm/releases/:ns/:name` | Release 详情 | | GET | `/helm/releases/:ns/:name/history` | Release 版本历史 | | POST | `/helm/releases/:ns/:name/rollback` | 回滚 Release | | GET | `/integrations/config` | 集成配置总览 | | GET | `/scripts` | 脚本列表 | | POST | `/scripts/run/:name` | 执行脚本 | | POST | `/scripts/upload` | 上传脚本 | | GET | `/scripts/report` | 脚本执行报告 | | POST | `/ai/chat` | AI 对话 (Chat 模式) | | POST | `/ai/chat/stream` | AI 对话流式 (SSE) | | DELETE | `/ai/chat/history` | 清除对话历史 | | POST | `/ai/diagnose` | AI Pod 诊断 | | **POST** | **`/ai/agent`** | **AI Agent 对话 (ReAct + FC)** | | **POST** | **`/ai/agent/stream`** | **Agent 流式对话 (SSE)** | | **POST** | **`/ai/agent/confirm/:id`** | **确认危险操作** | | **GET** | **`/ai/agent/pending`** | **待确认操作列表** | | **GET** | **`/ai/agent/tools`** | **工具列表** | | **POST** | **`/ai/agent/tools/run`** | **直接执行工具** | --- ## 📦 部署 ### Docker ```bash docker build -t k8s-aiops:latest . docker run -d -p 8080:8080 \ -v ~/.kube/config:/root/.kube/config:ro \ -v $(pwd)/data:/data \ -e DB_PATH=/data/k8s-iops.db \ -e AI_API_KEY=sk-your-key \ -e GRAFANA_URL=https://grafana.your-domain.com \ k8s-aiops:latest ``` ### Helm (推荐生产使用) ```bash # 修改 deploy/helm/k8s-iops/values.yaml 中的镜像地址和环境变量 helm upgrade --install k8s-aiops ./deploy/helm/k8s-iops/ \ --set image.tag=latest \ --set ingress.host=k8s-aiops.your-domain.com ``` ### 国内网络环境 服务器无法访问境外源时: ```bash export GOPROXY=https://goproxy.cn,off export GONOSUMCHECK=* export GONOSUMDB=* export GOTOOLCHAIN=local ``` --- ## 📖 目录结构 ``` k8s-aiops/ ├── main.go # 入口,嵌入前端 dist ├── api/ # RESTful API 处理器 (20+ handlers) │ ├── handler.go # 路由注册 + 通用 Handler │ ├── handler_agent.go # AI Agent (ReAct + FC) │ ├── handler_ai.go # AI 对话/诊断 (Chat 模式) │ ├── handler_alerts.go # 告警 │ ├── handler_auth.go # JWT 认证授权 │ ├── handler_certs.go # TLS + 系统证书 + Renew │ ├── handler_cicd.go # GitLab CI + Jenkins Pipeline │ ├── handler_cluster.go # 集群概览/健康 │ ├── handler_cluster_mgr.go # 多集群管理 │ ├── handler_deployment.go # Deployment 管理 │ ├── handler_es.go # Elasticsearch 日志 │ ├── handler_grafana.go # Grafana 配置 + 代理 │ ├── handler_helm.go # Helm Release 管理 │ ├── handler_inspection.go │ ├── handler_logs.go # kubectl 日志 │ ├── handler_network.go # NetworkPolicy + 拓扑 │ ├── handler_nodes.go # 节点管理 + 操作 │ ├── handler_pod.go # Pod 详情 │ ├── handler_rbac.go # RBAC 安全资源 │ ├── handler_resources.go │ ├── handler_resources_v2.go # Service/Ingress/EP │ ├── handler_scripts.go # 巡检脚本库 │ ├── handler_storage.go # 存储管理 │ ├── handler_todo.go # 待办管理 │ └── handler_upgrade.go # 版本升级 ├── agent/ # AI Agent 引擎 (NEW) │ ├── agent.go # ReAct 主循环 │ ├── tool_registry.go # 工具注册表 (OpenAI FC 格式) │ ├── tools.go # 20+ K8s 工具实现 │ ├── memory.go # 会话记忆 + 审计日志 │ ├── prompts.go # Agent/巡检/告警 系统提示词 │ └── safety.go # 5级安全守卫 ├── ai/ # AI Chat 引擎 │ ├── client.go / engine.go / prompts.go / tools.go ├── k8s/ # K8s 数据采集层 ├── engine/ # 诊断 + 告警引擎 │ ├── alert.go # 告警引擎 │ ├── alert_ai.go # AI 增强告警 (NEW) │ ├── diagnose.go │ └── remediation.go # 故障自愈 (NEW) ├── inspection/ # 巡检引擎 ├── store/sqlite.go # SQLite 持久化 ├── config/config.go # 全部配置项 ├── model/types.go # 数据模型 ├── web/ # React 前端 │ └── src/ │ ├── pages/ # 20 个页面组件 │ │ └── Dashboard/ PodList/ Nodes/ Storage/ Alerts/ │ │ └── Logs/ Helm/ Certificates/ AIChat/ Deployments/ │ │ └── Resources/ RBAC/ ResourceList/ Todo/ Login/ │ │ └── Grafana/ Network/ CICD/ Upgrade/ Clusters/ │ ├── components/ # Layout / DiagnoseModal / MetricCard │ └── hooks/ # React Query hooks └── deploy/helm/ # Helm Chart ``` --- ## 🗺 版本历史 | 版本 | 日期 | 亮点 | |------|------|------| | **v0.14.0** | **2026-06-08** | **AI Agent 全栈升级:ReAct Loop + Function Calling + 20+工具 + AI告警 + 故障自愈** | | v0.13.1 | 2026-06-08 | 修复 SSE 流式解析 Bug | | v0.13.0 | 2026-06-07 | 证书管理增强:Renew 续签 + Kubelet + kubeadm 检测 | | v0.12.3 | 2026-06-07 | 安装脚本全面更新为 AIOps 命名 | | v0.12.2 | 2026-06-07 | 品牌焕新 AIOps + 新图标 + version-iteration skill | | v0.12.1 | 2026-06-07 | AI Chat 接入 + Pod 智能诊断 | | v0.12.0 | 2026-06-07 | 界面增强 + 脚本库 + 通知 + 部署配置 | | v0.11.1 | 2026-06-07 | 多集群管理 + JWT 认证 | | v0.11.0 | 2026-06-07 | Deployment 管理 + 节点增强 + Helm 增强 | | v0.10.2 | 2026-06-07 | RBAC 安全审计 + Grafana 集成 | | v0.10.1 | 2026-06-07 | ES 日志 + CI/CD Pipeline | | v0.10.0 | 2026-06-07 | NetworkPolicy + 版本升级 + 资源列表 | | v0.9.2 | 2026-06-07 | 存储管理 + 证书管理 | | v0.9.1 | 2026-06-07 | Helm 管理 + 日志增强 | | v0.9.0 | 2026-06-07 | 巡检引擎 + 告警中心 | | v0.8.x | 2026-06-07 | 资源大盘 + 诊断引擎 | | v0.7.x | 2026-06-07 | UI 增强 + 分组导航 | | v0.6.0 | 2026-06-07 | 待办看板 + 系统证书 + RBAC | | v0.5.1 | 2026-06-07 | AI 自动执行工具 + 结构化表格 | | v0.4.0 | 2026-06-07 | Helm 管理 + 证书管理 | | v0.3.1 | 2026-06-07 | 资源排行修复、存储 Pod 挂载 | | v0.3.0 | 2026-06-07 | UI 还原、分组导航、节点/存储管理 | | v0.2.1 | 2026-06-07 | 巡检重写、诊断修复、日志自动补全 | | v0.2.0 | 2026-06-07 | AI 引擎、AI 对话、智能诊断 | | v0.1.0 | 2026-06-07 | MVP 基础版 | --- ## License MIT