发布时间:2026/8/29 7:43:47
将 OCAI 接入 Kubernetes MCP Server 的实践 在之前的 OCManager 系列文章中我们已经逐步构建了完整的 AI 运维体系第一阶段OCManager 控制台提供基础的运维操作界面命令助手、任务编排第二阶引入 OCAI让 AI 能够咨询——回答运维问题、提供诊断建议第三阶段启用 ops-mate让 AI 能够动手——通过 SSH 到节点执行诊断命令但是我们发现ops-mate 的 SSH 通道只能操作资源无法直接访问 Kubernetes 集群。比如运维人员问“帮我查看 default 命名空间里所有 Pod 的状态”“哪个节点资源使用率最高”“获取 nginx-deployment 最近的事件”AI 只能说请执行 kubectl get pods而不能直接调用 Kubernetes API。本文的目的是在 OCAI 中集成 Kubernetes MCP Server来实现这个需求。OCManager 中的 RAG 与 MCP在 OCManager 架构中实际上已经使用了 RAG 和 MCP。在RAG方面OCManager 在 ops-mate 的 diaglite 组件中内置了一个轻量级 RAG 系统具体的工作流如下用户提问 → 问题向量化 → 检索历史诊断记录 → 增强上下文 → LLM 生成回答RAG 在 OCManager 中是通过diaglite 内置向量检索来实现的作用主要是检索历史诊断信息匹配已知问题的解决方案从而避免重复询问相同信息在MCP方面OCManager 已经预留了MCP配置。我们可以通过 MCP 让 AI 获得直接操作能力。综合目前OCManager 已知的功能实现和应用场景总结如下能力类型在 OCManager 中的实现典型场景RAG 知识diaglite 内置向量检索“历史上类似故障是怎么处理的”MCP 工具Kubernetes MCP Server“帮我查看所有 Pod 的状态”SSH 执行ops-mate 通道“在节点上执行 df -h”Kubernetes MCP Server 集成kubernetes-mcp-server是一个实现了 MCP 协议的服务器它封装了 Kubernetes 的 API 调用暴露为标准化的 MCP 工具。本质上它是kubectl 的 MCP 封装让 AI 能够通过标准协议操作集群而不需要直接在容器内安装 kubectl。由于我们访问EKS集群的时候需要使用awscli生成临时的token因此便捷起见将MCP Server 作为独立进程运行在宿主机由systemd 托管这样就无需在容器中单独再安装awscli。我们通过streamable http的模式启动mcp服务此后OCAI 通过 HTTP SSE 协议远程连接 MCP Server。为什么选择 Streamable HTTP 模式stdio 模式把 MCP Server 作为子进程跑在 OCAI 容器内这意味着每次重启容器都要重新启动 MCP Server还要处理 AWS CLI 安装、AgentContext 序列化等问题。Streamable HTTP 模式则把 MCP Server 独立运行在宿主机OCAI 通过 HTTP SSE 协议远程调用。这样做的好处显而易见MCP Server 和 OCAI 解耦可以独立升级直接复用宿主机的 AWS CLI无需在容器内折腾认证配置也简单只需一个 URL 即可如果有多套 OCAI 环境还能共享同一个 MCP Server。部署和配置首先编译 MCP Server。由于网络限制我们从源码编译而不是下载二进制gitclone--depth1--branchv0.0.63\https://github.com/containers/kubernetes-mcp-server.gitcdkubernetes-mcp-serverexportGOPROXYhttps://goproxy.cn,https://proxy.golang.org,direct go build-ok8s-mcp-server ./cmd/kubernetes-mcp-servermvk8s-mcp-server /home/ec2-user/opencloudos/然后创建 systemd 服务文件/etc/systemd/system/k8s-mcp-server.service让 MCP Server 随系统启动这里--port 8789会启动 SSE (Server-Sent Events) 服务器不是普通 HTTP。启动后用curl http://127.0.0.1:8789/sse测试应该能看到 SSE 事件流。[Unit] DescriptionKubernetes MCP Server Afternetwork.target [Service] Typesimple Userec2-user EnvironmentKUBECONFIG/home/ec2-user/.kube/config ExecStart/home/ec2-user/opencloudos/k8s-mcp-server \ --port 8789 --read-only Restartalways [Install] WantedBymulti-user.target接下来配置 OCAI修改config/mcp.yaml。由于OCAI服务运行在docker容器中因此需要通过172.17.0.1Docker 网桥 IP来访问宿主机。# ocai-service/ocai-service/config/mcp.yamlmcp_servers:kubernetes:url:http://172.17.0.1:8789/sse修改docker-compose.yml只需挂载日志和 MCP 配置文件无需 kubeconfig 或 AWS 凭证volumes:-${LOG_DIR:-./logs}/ocai-service:/app/logs-./config/mcp.yaml:/app/config/mcp.yaml:ro在docker-compose中设置了OCAI_MCP_CONFIG_FILE/app/config/mcp.yaml在启动服务后会发现OCAI 启动时显示MCP: MCPManager(servers0, connected0, tools0)因为我们需要OCAI 通过/app/ocai/utils/config_loader.py的build_application_from_environ()方法从环境变量读取配置但这个函数漏掉了OCAI_MCP_CONFIG_FILE的处理导致配置了环境变量也不会加载 MCP这似乎是一个隐藏的issue因为build_application_from_environ()读取配置是合理的。我们在函数中添加读取OCAI_MCP_CONFIG_FILE的代码# 在 config_loader.py 中找到 mcp_servers: {}, 的下一行添加mcp_config_file_env_str(OCAI_MCP_CONFIG_FILE)ifmcp_config_file:data[application][mcp_config_file]mcp_config_file重启 OCAI查看日志看到MCP server configured: kubernetes (sse)和tools14就说明成功了。docker-composerestartsleep30dockerlogs ocai-service|grep-EMCP|kubernetes# 正常输出应该包含# INFO: MCP config: 0 inline file /app/config/mcp.yaml - 1 total# INFO: MCP server configured: kubernetes (sse)# INFO: MCP client connected: kubernetes (sse)# INFO: MCP tools registered: 14 from 1 servers聊天效果验证集成成功后OCAI 具备以下 13 个 Kubernetes 管理工具。这里我们启动MCP的时候加上了–read-only参数因此所有工具都在只读模式下运行确保不会误操作集群。配置管理 ├── mcp__kubernetes__configuration_view - 查看集群配置 ├── mcp__kubernetes__namespaces_list - 列出命名空间 节点管理 ├── mcp__kubernetes__nodes_log - 查看节点日志 ├── mcp__kubernetes__nodes_stats_summary - 节点统计摘要 ├── mcp__kubernetes__nodes_top - 节点资源使用 Top Pod 管理 ├── mcp__kubernetes__pods_get - 获取 Pod 详情 ├── mcp__kubernetes__pods_list - 列出所有 Pods ├── mcp__kubernetes__pods_list_in_namespace - 按命名空间列出 Pods ├── mcp__kubernetes__pods_log - 查看 Pod 日志 ├── mcp__kubernetes__pods_top - Pod 资源使用 Top 通用资源 ├── mcp__kubernetes__resources_get - 获取任意资源详情 ├── mcp__kubernetes__resources_list - 列出任意资源 ├── mcp__kubernetes__events_list - 列出集群事件我们在OCAI的UI界面尝试询问和集群相关的内容如下可以发现通过工具调用/mcp_kubernetes_pods list等方法给出了我们想要的信息。结语本文实现了 Kubernetes MCP Server 的集成让 OCAI 具备了直接访问 EKS 集群的能力。整个过程涉及理解 MCP 协议和 RAG 的分工采用 Streamable HTTP 模式部署MCP服务配置OCAI集成Kubernetes MCP Server并测试功能如果你也在做 AI Kubernetes 的集成希望这篇文章有所帮助。

相关新闻

2026/8/29 7:42:30

GLM-4-9B-Chat-1M 模型在 openEuler 系统上的完整部署文档

🧑 博主简介:CSDN博客专家,「历代文学网」(PC端可以访问:https://lidaiwenxue.com/#/?__c1000)总架构师,首席架构师,也是联合创始人!16年工作经验,精通Java编…

2026/8/27 9:49:07

AI创意生成技术解析:提示词工程与人类主导的创作流程

这次我们来探讨一个在AI领域持续引发讨论的话题:AI的创造力本质。很多人认为AI能够独立产生创意,但实际上,当前的AI系统更多是高效执行指令的工具。这篇文章将从技术角度分析AI创意生成的原理,并通过实际案例展示AI如何依赖人类输…

2026/8/29 7:42:02

网络嗅探器的设计与实现:从libpcap抓包到协议解析完整指南

简介:在计算机网络中,数据包通过层层封装在网络中传输,理解其流动机制是流量分析的基础。网络嗅探器的核心原理是将网卡切换至混杂模式,使主机能够接收所有经过的数据帧,再借助BPF过滤器在内核层面高效筛选目标流量&am…

2026/8/29 7:42:02

Pohlig-Hellman算法:离散对数问题的脆弱性分析与安全规避

1. Pohlig-Hellman算法:离散对数难题的“阿喀琉斯之踵” 在密码学和数论的世界里,离散对数问题(DLP)一直扮演着“守门人”的角色。它构成了许多公钥密码系统(如经典的Diffie-Hellman密钥交换、ElGamal加密、DSA数字签名…

2026/8/29 7:42:02

基于CNN与IoT的智能果实采摘系统:从算法到工程落地全解析

简介:计算机视觉与物联网技术正深度融合,推动传统产业智能化转型。其核心原理在于通过传感器采集物理世界数据,利用深度学习模型进行智能分析,并通过网络实现数据与指令的互联互通。这一技术组合的价值在于将AI的感知决策能力与Io…

2026/8/29 7:42:02

基于LIS2DH12超低功耗MEMS加速度计的地下管网泄漏监测方案

今年在做地下管网渗漏监测方案时,我选了ST的LIS2DH12这颗MEMS加速度计,起因是想找一颗真正意义上“超低功耗、数字输出、体积小”的三轴传感器来做人手一台的低成本泄漏预判设备。踩了几轮坑后,越来越觉得这颗“nano”加速度计在特定场景里非…

2026/8/29 7:42:02

电脑供电真相:为什么CPU不用5V/3.3V直供?

1. 这不是“电脑电源输出多少伏”的简单问答,而是搞懂整套供电逻辑的实操起点很多人第一次拆开电脑主机,看到电源上密密麻麻的线标着12V、5V、3.3V、-12V、5VSB,第一反应是:“这么多电压,到底哪个才是给CPU用的&#x…

2026/8/29 7:37:02

C# WinForm 集成 PaddleOCR v3 ONNX 实战指南

简介:OCR(光学字符识别)是一种将图像中文字转换为可编辑文本的基础AI技术,其核心依赖于检测与识别双模型协同推理。PaddleOCR v3 作为国产高精度OCR框架,通过标准化ONNX格式输出,实现了跨平台、低依赖的模型…

2026/8/28 16:16:17

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/28 16:16:21

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/28 16:16:22

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/29 0:01:10

etc目录下的profile.d文件目录设置环境变量和全局脚本shell

一、设置环境变量etc目录下的profile.d文件目录 /etc/profile.d1、编写 vi test.sh文件内容# jdk变量 export ZHK_HOME/root export PATH$PATH:$ZHK_HOME/test # 可以取出来ZHK_HOME变量给ZZZ_HOME赋值 export ZZZ_HOME${ZHK_HOME}/test2、刷新 执行source /etc/profile 命令使…

2026/8/29 0:01:10

【JavaScript】内存管理-垃圾回收机制-内存泄露

内存管理 C 语言这样的底层语言一般都有底层的内存管理接口,比如 malloc()和free()。 而 JavaScript 是在创建变量(对象,字符串等)时自动进行了分配内存,并且在不使用它们时“自动”释放。释放的过程称为垃圾回收。 整…

2026/8/29 0:01:10

Labgrid-MCP:为嵌入式硬件实验室接入AI Agent操控能力

Labgrid-MCP 的目标是把 MCP(Model Context Protocol)能力延伸到真实嵌入式硬件实验室:AI Agent 通过一个标准化的 MCP Server,就能查看目标板状态、控制上电断电、复位开发板、读取串口日志,甚至执行镜像刷写。对于经…

2026/8/28 16:16:48

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/28 16:16:50

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/28 11:06:45

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…