MCP Kubernetes演示
一个模型上下文协议(MCP)服务器,使Claude AI能够通过自然语言查询与Kubernetes集群和Istio服务网格进行交互。这表明MCP是LLM和实时基础设施之间的桥梁。
建筑
User → Web Browser → MCP Server (Pod) → Kubernetes API
→ Istio CRDs
→ Claude API (for LLM responses)特性
MCP工具可用
Kubernetes基本操作:
list_pods-使用可选标签选择器列出命名空间中的Podget_pod_logs-从特定的pod/容器中检索日志get_events-获取集群事件(按命名空间筛选)
Istio服务网格操作:
list_virtualservices-列出所有具有路由规则的VirtualServicesget_virtualservice-获取特定的VirtualService详细信息list_destinationrules-列出所有目的地规则和交通政策list_gateways-列出所有Istio网关list_service_entries-列出外部服务的服务条目
Kiali运营(服务网格可视化):
get_kiali_graph-从起亚力API获取服务图数据get_kiali_service_health-获取服务的健康评分get_kiali_traffic_metrics-获取请求率、错误率、延迟百分比
Jaeger操作(分布式跟踪):
query_jaeger_traces-按服务名称、操作、时间范围查询跟踪get_jaeger_trace_detail-获取跟踪的详细跨度信息analyze_jaeger_latency-查找缓慢的痕迹和瓶颈
普罗米修斯运营(指标和监控):
query_prometheus-执行PromQL查询get_istio_metrics-获取Istio特定的指标(request_total、request_duration)get_service_metrics-获取特定服务的指标analyze_prometheus_alerts-检查活动的Prometheus警报
先决条件
- 安装了Istio的Minikube
- Podman(用于构建和推送图像)
- 带有个人访问令牌(PAT)的Docker Hub帐户
- 无烟煤API键
快速开始
1.构建和推送Docker镜像
# Login to Docker Hub with your PAT
podman login docker.io
# Username: your-dockerhub-username
# Password: your-personal-access-token
# Build the image
podman build -t docker.io/yourusername/mcp-k8s-server:v1 .
# Push to Docker Hub
podman push docker.io/yourusername/mcp-k8s-server:v1重要提示:
- 替换
yourusername使用您的实际Docker Hub用户名 - 登录时使用您的Docker Hub个人访问令牌(PAT)作为密码
- 在以下位置创建PAT:https://hub.docker.com/settings/security
2.配置环境变量
创建一个 .env 使用您的配置文件:
# Copy the template
cp config.template .env
# Edit with your values
DOCKER_USERNAME=yourusername
ANTHROPIC_API_KEY=your-anthropic-api-key-here3.部署到Minikube
# Deploy everything (the script will handle image reference and secret creation)
./deploy.sh
# Or manually:
kubectl apply -k k8s/4.访问应用程序
# Get the service URL
minikube service mcp-server -n mcp-demo --url
# Or use port-forward
kubectl port-forward svc/mcp-server 8080:8080 -n mcp-demo然后打开浏览器 http://localhost:8080
使用示例
服务网格拓扑(Kiali)
- “显示默认命名空间的服务图”
- “哪些服务不健康?”
- “我的网格中的交通流量是多少?”
分布式跟踪(Jaeger)
- “查找过去30分钟内的慢速痕迹”
- “显示productpage服务的痕迹”
- “服务依赖关系是什么?”
- “分析延迟瓶颈”
度量与监控(普罗米修斯)
- “评论服务的错误率是多少?”
- “显示所有服务的P95延迟”
- “是否有任何活动警报?”
- “请求率趋势如何?”
Istio配置
- “列出所有VirtualServices并解释其路由”
- “显示目的地规则和交通政策”
- “配置了哪些网关?”
综合分析
- “为什么评级服务很慢?”(检查Jaeger跟踪+Prometheus指标)
- “分析产品页面服务的健康状况”(Kiali+Prometheus)
- “向我展示评论服务的所有内容”(综合分析)
安全
RBAC权限
MCP服务器以最小的只读权限运行:
- Kubernetes:Pod、服务、事件、命名空间、节点(只读)
- Istio CRD:虚拟服务、目标规则、网关、服务条目(只读)
- 日志:pod日志(只读)
- 没有写入/删除权限
秘密管理
- 存储为Kubernetes Secret的Anthropic API密钥
- 作为环境变量安装在吊舱中
- 容器图像中没有敏感数据
故障排除
检查Pod状态
kubectl get pods -n mcp-demo
kubectl describe pod -l app=mcp-server -n mcp-demo查看日志
kubectl logs -f deployment/mcp-server -n mcp-demo检查服务连接
kubectl get svc -n mcp-demo
kubectl port-forward svc/mcp-server 8080:8080 -n mcp-demo验证RBAC
kubectl auth can-i list pods --as=system:serviceaccount:mcp-demo:mcp-server
kubectl auth can-i list virtualservices --as=system:serviceaccount:mcp-demo:mcp-server健康检查
curl http://localhost:8080/healthAPI终点
GET /-Web用户界面POST /chat-与Claude聊天GET /health-健康检查GET /tools-列出可用的MCP工具POST /tools/{tool_name}-执行特定工具
发展
地方发展
# Install dependencies
pip install -r requirements.txt
# Set environment variables
export ANTHROPIC_API_KEY="your-api-key"
export KIALI_ENDPOINT="http://localhost:20001"
export JAEGER_ENDPOINT="http://localhost:16686"
export PROMETHEUS_ENDPOINT="http://localhost:9090"
export GRAFANA_ENDPOINT="http://localhost:3000"
# Run locally
python main.py测试工具
# Test specific tool
curl -X POST http://localhost:8080/tools/list_pods \
-H "Content-Type: application/json" \
-d '{"namespace": "default"}'
# Test chat endpoint
curl -X POST http://localhost:8080/chat \
-H "Content-Type: application/json" \
-d '{"message": "Show me all pods in default namespace"}'项目结构
mcp-demo-go/
├── main.py # MCP server implementation
├── requirements.txt # Python dependencies
├── Dockerfile # Container image
├── README.md # This file
└── k8s/ # Kubernetes manifests
├── namespace.yaml
├── serviceaccount.yaml
├── clusterrole.yaml
├── clusterrolebinding.yaml
├── secret.yaml
├── deployment.yaml
├── service.yaml
└── kustomization.yaml贡献
- 分叉存储库
- 创建要素分支
- 进行更改
- 彻底测试
- 提交拉取请求
许可证
MIT许可证-有关详细信息,请参阅许可证文件。
支持
对于问题和疑问:
- 检查故障排除部分
- 查看日志
- 在GitHub上打开一个问题
______________________________________________________________________
注: 这是一个演示项目,展示了MCP与Kubernetes和Istio的功能。如果没有额外的安全强化和错误处理,它就不能用于生产用途。
