微信扫码
添加专属顾问
我要投稿
探索AI与Kubernetes的完美结合,打造高效智能运维解决方案。 核心内容: 1. 基于Dify和K8s MCP Server的智能运维架构设计 2. Kubernetes MCP Server的部署与配置实战 3. 预置工具集的应用与运维自动化实现
研究Aiops有一段时间了,目前手里有不少可落地的方案了,接下来会把这些方案全部整理到我的大模型课程里。
今天的案例是基于dify和K8s的MCP来做一个运维智能体。
核心理念
架构图
它预置了21个实用的 Kubernetes 操作工具,例如:pods_get, nodes_get, deployments, resource_list, pods_log, pods_exec, nodes_top, pods_top等。使用这个现成的 Server,我们无需编写任何后端代码,只需专注于部署和集成。
步骤 1: 准备 Kubernetes 环境
这里假设已经有了一个可用的 Kubernetes 集群,并且kubectl命令行工具已配置好,可以访问该集群。
思路是:先通过源码编译docker镜像,然后部署到k8s集群里
1、克隆代码
git clone https://github.com/containers/kubernetes-mcp-server.gitcd kubernetes-mcp-server
2、编译容器镜像
docker build -t kubernetes-mcp-server:latest .
3、将镜像导入到所有k8s节点
说明:1. 这是临时方案,最好是将镜像放到你们的私有镜像仓库中; 2. 假设你的k8s环境用的是containerd容器进行时
# 导出镜像docker save kubernetes-mcp-server:latest -o k8s-mcp.tar# 拷贝到各 nodescp k8s-mcp.tar root@node01:/tmp/# 在 node 上加载进 containerdctr -n k8s.io images import /tmp/k8s-mcp.tar# 检查是否导入成功ctr -n k8s.io images ls | grep kubernetes-mcp
4、部署mcp的k8s yaml文件
涉及:ServiceAccount、Role、RoleBinding 、Deployment和Service
apiVersion: v1kind: Namespacemetadata: name: mcp-tools---apiVersion: v1kind: ServiceAccountmetadata: name: k8s-mcp-server-sa namespace: mcp-tools---# 授予最小权限原则 (Principle of Least Privilege)# 我们只授予读取、描述和日志查看权限,避免任何破坏性操作apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRole # 使用 ClusterRole 以便跨命名空间查询metadata: name: k8s-mcp-server-rolerules:- apiGroups: [""] resources: ["pods", "nodes", "services", "namespaces", "events"] verbs: ["get", "list", "watch"]- apiGroups: [""] resources: ["pods/log"] verbs: ["get"]- apiGroups: [""] resources: ["pods/exec"] verbs: ["create"]- apiGroups: ["apps"] resources: ["deployments", "replicasets", "daemonsets", "statefulsets"] verbs: ["get", "list", "watch"]- apiGroups: ["extensions"] resources: ["deployments", "replicasets", "daemonsets"] verbs: ["get", "list", "watch"]- apiGroups: ["metrics.k8s.io"] resources: ["pods", "nodes"] verbs: ["get", "list"]---apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRoleBindingmetadata: name: k8s-mcp-server-rolebindingsubjects:- kind: ServiceAccount name: k8s-mcp-server-sa namespace: mcp-toolsroleRef: kind: ClusterRole name: k8s-mcp-server-role apiGroup: rbac.authorization.k8s.io---apiVersion: apps/v1kind: Deploymentmetadata: name: kubernetes-mcp-server namespace: mcp-tools labels: app: kubernetes-mcp-serverspec: replicas: 1 selector: matchLabels: app: kubernetes-mcp-server template: metadata: labels: app: kubernetes-mcp-server spec: serviceAccountName: k8s-mcp-server-sa containers: - name: server # 使用自己编译的镜像 image: kubernetes-mcp-server:latest imagePullPolicy: IfNotPresent # 该镜像默认使用集群内配置,无需额外参数 # 如果需要指定 kubeconfig,可以添加 args 和 volume # args: ["--kubeconfig", "/etc/kubeconfig/config"] # volumeMounts: # - name: kubeconfig # mountPath: /etc/kubeconfig # readOnly: true # volumes: # - name: kubeconfig # secret: # secretName: kubeconfig-secret---apiVersion: v1kind: Servicemetadata: name: kubernetes-mcp-server namespace: mcp-toolsspec: selector: app: kubernetes-mcp-server type: NodePort ports: - name: http port: 8080 # Pod 内部端口 targetPort: 8080 nodePort: 30080
步骤 3: 在 Dify 中配置 MCP 工具
在 Dify 的界面中,进入工具 → MCP,点击 “添加MCP服务”。
在配置中填写:
1)服务端点URL:http://<host>:30080/sse(这里host地址就是你k8s节点的IP地址)
2)名称、服务器标识:k8s_mcp
3)认证,这需要获取前面创建的ServiceAccount用户的Token
先进入mcp的pod里
POD_NAME=$(kubectl get pods -n mcp-tools -l app=kubernetes-mcp-server -o jsonpath='{.items[0].metadata.name}')kubectl exec -it $POD_NAME -n mcp-tools -- sh进到pod里,再查看token
cat /var/run/secrets/kubernetes.io/serviceaccount/token
点击“添加并授权”
可以看到,目前包含21个工具。
1、在Dify创建Agent应用
2、设置提示词
你是一个经验丰富的 Kubernetes 运维专家。你的任务是帮助用户查询和诊断 Kubernetes 集群的状态。请根据提供给你的工具来选择具体的任务,比如查看命名空间的工具就是namespaces_list,查看节点日志的工具是nodes_log。你完全可以根据工具的名称来推测其用途。请遵循以下工作流程:1. **理解意图**:仔细分析用户的请求,明确他们想做什么。2. **收集参数**:如果用户没有提供必要的参数(如 `namespace`, `pod_name`),请主动询问。例如,如果用户说“看看 web 服务的日志”,你需要问:“请告诉我 web 服务所在的命名空间和 Pod 名称?”3. **调用工具**:根据收集到的信息,选择并调用最合适的工具。4. **分析结果**:仔细分析工具返回的原始数据,特别是 `Events` 部分,它们通常是问题的关键线索。5. **友好总结**:将技术细节和数据分析结果,用清晰、易懂的自然语言总结给用户。如果发现问题,给出可能的排查方向或建议。**重要安全原则**:- 你的权限是只读的,只能查询和诊断,**严禁执行任何修改或删除操作**(如 `delete`, `edit`, `apply`)。- 如果用户提出破坏性请求,请礼貌地拒绝,并解释你的权限限制。
3、添加工具
目前该工具主要是查询/查看为主,等待其更多工具。通过该案例,你至少可以将思路跑通。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业
2025-11-11
用AI写文档,又害怕隐私泄露?不慌,Libra拯救你!
2025-11-11
仅3B激活参数,更强的多模态理解与推理能力,百度文心 ERNIE-4.5-VL-28B-A3B-Thinking正式开源!
2025-11-11
Vibe Coding 何必只在桌面 IDE,多端智能体协同的思考与设计
2025-11-11
只用 Claude Skills,打造专属 AI 伴侣|附完整教程
2025-11-11
Step-Audio-EditX:用大语言模型“雕琢”声音,开启音频编辑新视界!
2025-11-10
开源安全审核模型终极PK:Qwen3Guard、OpenAI-SafeGuard、Llama4-Guard谁才是王者?
2025-11-10
代码采纳率如何提升至50%?AI 自动编写单元测试实践总结
2025-11-10
成本降到 2% 的 Agent 方案:把工具调用搬进执行环境
2025-08-20
2025-09-07
2025-08-20
2025-08-26
2025-08-22
2025-09-06
2025-10-20
2025-08-22
2025-09-08
2025-10-27
2025-11-10
2025-11-03
2025-10-29
2025-10-28
2025-10-13
2025-09-29
2025-09-17
2025-09-09