使用说明
项目简介
K8s MCP Server 是一个基于 Model Context Protocol (MCP) 构建的服务器,它充当语言模型(如 Claude)和 Kubernetes CLI 工具之间的安全桥梁。该服务器允许语言模型在受控和安全的环境中执行经过验证的 Kubernetes 命令,从而实现 Kubernetes 集群的智能化管理和交互。
主要功能点
- 安全命令执行:通过严格的命令验证、超时控制和错误处理,安全地执行 Kubernetes CLI 命令。
- 多工具支持:支持多种 Kubernetes 常用 CLI 工具,包括 'kubectl'、'istioctl'、'helm' 和 'argocd'。
- 命令管道:支持使用 Linux 管道工具(如 'grep'、'jq')过滤和转换命令输出。
- 详细验证:提供细致的命令验证和安全检查机制,防止潜在的危险操作。
- 灵活配置:可配置命令超时时间、最大输出大小、Kubernetes 上下文和命名空间等参数。
- Prompt 模板:内置常用 Kubernetes 操作的 Prompt 模板,优化语言模型交互体验。
安装步骤
-
安装 Docker:确保您的系统上已安装 Docker。
-
配置 Kubernetes 凭据:将您的 Kubernetes 配置文件(通常为 '~/.kube/config')放置在运行 K8s MCP Server 的主机上。
-
运行 Docker 镜像:使用 Docker 命令运行 K8s MCP Server 镜像。
docker run -i --rm -v ~/.kube:/home/appuser/.kube:ro ghcr.io/alexei-led/k8s-mcp-server:latest- '-i':保持 STDIN 打开,即使未连接。
- '--rm':容器退出后自动删除容器。
- '-v ~/.kube:/home/appuser/.kube:ro':将本地 Kubernetes 配置文件目录挂载到容器内,并设置为只读模式,增强安全性。
服务器配置
要将 K8s MCP Server 集成到 MCP 客户端(例如 Claude Desktop),您需要配置 MCP 客户端的服务器设置。以下是一个典型的 Claude Desktop 配置文件示例,展示了如何配置 K8s MCP Server:
{ "mcpServers": { "kubernetes": { "command": "docker", "args": [ "run", "-i", "--rm", "-v", "~/.kube:/home/appuser/.kube:ro", "ghcr.io/alexei-led/k8s-mcp-server:latest" ], "serverName": "k8s-mcp-server" // (可选) 服务器名称,用于在客户端中标识 } } }
配置参数说明:
- '"kubernetes"': 服务器名称,您可以自定义。
- '"command": "docker"': 指定启动 MCP 服务器的命令为 'docker'。
- '"args": [...]"': Docker 命令的参数列表,包括:
- '"run"': Docker 运行命令。
- '"-i"': 保持 STDIN 打开。
- '"--rm"': 容器退出后自动删除。
- '"-v", "~/.kube:/home/appuser/.kube:ro"': 挂载 Kubernetes 配置文件目录。请注意,您需要将 '~/.kube' 替换为您的 Kubernetes 配置文件目录的绝对路径。
- '"ghcr.io/alexei-led/k8s-mcp-server:latest"': K8s MCP Server 的 Docker 镜像名称。
- '"serverName": "k8s-mcp-server"': (可选)服务器在客户端中显示的名字。
高级配置:
您可以通过环境变量进一步配置 K8s MCP Server,例如设置命令超时时间、指定 Kubernetes 上下文和命名空间等。您可以通过修改 'args' 字段将这些环境变量传递给 Docker 容器,例如:
{ "mcpServers": { "kubernetes": { "command": "docker", "args": [ "run", "-i", "--rm", "-v", "~/.kube:/home/appuser/.kube:ro", "-e", "K8S_CONTEXT=my-cluster", // 设置 Kubernetes 上下文为 my-cluster "-e", "K8S_NAMESPACE=my-namespace", // 设置 Kubernetes 命名空间为 my-namespace "ghcr.io/alexei-led/k8s-mcp-server:latest" ], "serverName": "k8s-mcp-server" } } }
基本使用方法
-
启动 MCP 客户端:启动配置了 K8s MCP Server 的 MCP 客户端应用(如 Claude Desktop)。
-
使用自然语言指令:在 MCP 客户端中,您可以使用自然语言指令,要求其执行 Kubernetes 操作。例如:
- "Show me the pods in my default namespace using kubectl" (使用 kubectl 查看默认命名空间下的 Pod)
- "Help me deploy a new application with Helm" (使用 Helm 部署新应用)
- "Check the status of my Istio service mesh" (检查 Istio 服务网格状态)
- "List all my Kubernetes deployments" (列出所有 Kubernetes Deployment)
-
客户端自动调用工具:MCP 客户端会自动解析您的指令,并调用 K8s MCP Server 提供的相应工具(如 'execute_kubectl'、'execute_helm' 等)来执行 Kubernetes 命令,并将结果返回给您。
注意事项
- 安全性:K8s MCP Server 旨在安全地执行 Kubernetes 命令,但请务必仔细评估您允许语言模型执行的操作,并根据您的安全需求进行配置。
- Kubernetes 权限:确保运行 K8s MCP Server 的 Kubernetes 配置具有执行所需 Kubernetes 操作的足够权限。
- 资源限制:您可以根据需要配置命令超时时间和最大输出大小,以防止资源滥用。
信息
分类
开发者工具