“ChatOPS” 通过聊天运维k8s


本文用于描述和记录如何通过配置MCP来实现运维k8s的内容。
MCP是什么?
在人工智能(AI)迅猛发展的今天,如何让 AI 更高效地与各种应用程序和数据源协同工作,成为了一个关键问题。
多数的LLM现在仅仅是“说话”,但无法“行动”。那如何让大模型不仅仅是说话而是能真的去行动呢?模型上下文协议(Model Context Protocol,简称 MCP)应运而生,旨在为这一挑战提供解决方案。
MCP 是由 Anthropic 公司提出的一个开放协议,旨在标准化应用程序向大型语言模型(LLM)提供上下文信息的方式。你可以将 MCP 想象成 AI 世界的 USB-C 接口,就像 USB-C 为设备连接各种外设和配件提供了标准化方式一样,MCP 为 AI 模型连接不同的数据源和工具提供了标准化方式。
"ChatOPS" 通过聊天运维k8s

为什么需要 MCP?


传统上,AI 系统要与外部工具集成,通常需要为每个工具编写特定的 API 接口,过程繁琐且容易出错。MCP 的出现,旨在简化这一过程,提供一种统一的方式,让 AI 模型能够更容易地访问和操作各种数据源和工具。

MCP 的优势包括:

  • 标准化接口一次集成,多个工具可用,减少重复开发。

  • 实时双向通信支持 AI 模型与工具之间的实时互动,提高响应速度。

  • 灵活扩展支持动态发现和集成新的工具和数据源,适应不断变化的需求 。


MCP 的工作原理


MCP 采用客户端-服务器架构,主要包括以下组件:

  • MCP 主机如 Claude Desktop、集成开发环境(IDE)或其他 AI 工具,作为与 MCP 服务器通信的客户端。

  • MCP 服务器轻量级程序,通过 MCP 协议暴露特定功能,如访问文件系统、数据库或外部 API。

  • 本地数据源如计算机文件、数据库和服务,MCP 服务器可以安全地访问这些资源。

  • 远程服务通过互联网访问的外部系统,MCP 服务器可以连接到这些服务 。

    "ChatOPS" 通过聊天运维k8s


通过这种架构,AI 模型可以方便地访问和操作各种数据源和工具,实现更复杂的任务和工作流程。

MCP 采用基于能力的协商机制,Client 和 Server 需要在初始阶段声明各自支持的“能力”特性。“能力”声明决定了会话阶段可使用的协议特征和基本操作。

  • 初始阶段

    • Server 需要声明:可用 Resource、支持的 Tool、Prompt 模板。

    • Client 需要声明:Sampling 支持,Notification 处理。

  • 会话阶段:Client 和 Server 需要严格遵守已声明的能力范围。

如下图所示展示初始阶段和会话阶段的几个过程:

  • 初始阶段,Host 调用 Client,Client 访问 Server 获取 Server 可支持的资源和能力(list_resources()list_tools())。

  • 会话阶段(Host 发起),Host 中用户或模型发起 Action,调用 Client,Client 请求 Server 来获取资源或执行工具(read_resource()call_tool())。

  • 会话阶段(Server 发起),Server 调用 Client 获得 Sampling 支持,Client 转发给 Host 并获取响应,然后返回给 Server。

"ChatOPS" 通过聊天运维k8s


构建Kubernetes MCP Server


K8S MCP 的主要功能包括:

  • 资源查询列出集群中的资源,如 pods、deployments、services 等。

  • 详细信息获取获取特定资源的详细信息,辅助诊断和管理。

  • 执行管理命令通过授权的方式,执行扩容、更新、重启等操作。

  • 安全审计所有操作都经过授权和审计,确保集群的安全性。

要使用 K8s MCP,需满足以下前提条件:

  1. 拥有一个运行中的 Kubernetes 集群,可以是本地(如 Minikube)或云端(如 AWS、Azure、Google Cloud)。

  2. 安装并配置好 kubectl 工具,确保可以正常连接到集群。

  3. 安装 Node.js 和 Bun

下载链接:https://nodejs.org/en

"ChatOPS" 通过聊天运维k8s

下载链接:https://bun.sh/

"ChatOPS" 通过聊天运维k8s
下载代码
git clone https://github.com/Flux159/mcp-server-kubernetes.gitcd mcp-server-kubernetes

该项目使用 Bun(一个快速 JavaScript 运行时)作为包管理器。请确保已安装 Bun,然后运行:

bun install

这将读取 package.json 文件并安装项目所需的所有依赖项。

运行k8s mcp server
bun run dev
启动 K8s MCP 服务器。它将自动连接到当前配置的 kubectl 
本次我们将使用Claude Desktop调用MCP服务(文末有支持MCP的客户端列表,配置大同小异)。
在 Claude Desktop 的设置中找到“claude_desktop_config.json”文件
MacOS配置文件位置:/Users/XXX/Library/Application Support/Claude
在“claude_desktop_config.json”文件的 mcp 服务器部分添加一个新条目:
{  "mcpServers": {    "k8s-mcp": {       "command": "node",      "args": ["/path/to/your/mcp-server-kubernetes/dist/index.js"] //修改为文件所在位置    }  }}
我的配置如下:
"ChatOPS" 通过聊天运维k8s
配置完成后会列出所有可用mcp工具
"ChatOPS" 通过聊天运维k8s
ChatOPS
Let’s chat 
我们让他列出我们所有的namespace
"ChatOPS" 通过聊天运维k8s
让他帮我们创建一个新的mcpautotest项目
"ChatOPS" 通过聊天运维k8s
继续让他在这个命名空间下创建http的容器
"ChatOPS" 通过聊天运维k8s
过程中可以发现mcp tool并没有包含service和route的实现,并且模型也识别到了这点并提供给我们解决方案
"ChatOPS" 通过聊天运维k8s
确认一下集群里的http容器确实运行了
"ChatOPS" 通过聊天运维k8s
我们扩展一下容器
"ChatOPS" 通过聊天运维k8s
"ChatOPS" 通过聊天运维k8s
现在我们让他删除这个命名空间和对应的资源
"ChatOPS" 通过聊天运维k8s
可以看到他的整个删除过程
"ChatOPS" 通过聊天运维k8s
命名空间确认已经被删除了
"ChatOPS" 通过聊天运维k8s
小结
MCP作为大语言模型落地参与“执行”的一种实现方式,打通了整个AI的工作流,让大语言模型能够接触到实际的对象,随着MCP工具的逐渐丰富以及包括诸如n8n,dify等底代码平台的完善,越来越多的工作可以被AI直接执行极大的提高工作效率。
我们可以通过mcp市场去发现更多的mcp,打造自己的工作流。
MCP.so
https://mcp.so/
阿里云百炼
https://bailian.console.aliyun.com/mcp-market?tab=mcp#/mcp-market
HiMCP
https://himcp.ai/
Smithery.ai
https://smithery.ai/
Awesome MCP Servers
https://mcpservers.org/
MCP Market
https://mcpmarket.com/
PulseMCP
https://www.pulsemcp.com/servers
Glama MCP
https://glama.ai/mcp/servers
cursor.directory
https://cursor.directory/mcp
Potkey.ai
https://portkey.ai/mcp-servers
MCP 官方开源库
https://github.com/modelcontextprotocol/servers
Cline’s MCP Marketplace
https://github.com/cline/mcp-marketplace
MCP Hub
https://www.aimcp.info/en
Reddit MCP 官方社区
https://www.reddit.com/r/mcp/
shareMCP
https://sharemcp.cn/
MCPServers
https://www.mcpservers.cn/

支持MCP的客户端
Cursor
https://www.cursor.com/
Cherry Studio
https://cherry-ai.com/
5ire
https://5ire.app/
Continue
https://continue.dev/
Cline
https://marketplace.visualstudio.com/items?itemName=saoudrizwan.claude-dev
ChatMCP
https://github.com/daodao97/chatmcp
Claude Desktop
https://claude.ai/download
ClaudeMind
https://claudemind.com/
HyperChat
https://github.com/BigSweetPotatoStudio/HyperChat
Zed
https://zed.dev/
ChatWise
https://chatwise.app/

ref:https://modelcontextprotocol.io/introduction
https://apidog.com/blog/kubernetes-mcp-server/

© 版权声明
THE END
喜欢就支持一下吧
点赞98 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片