使用说明

项目简介

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 模板,优化语言模型交互体验。

安装步骤

  1. 安装 Docker:确保您的系统上已安装 Docker。

  2. 配置 Kubernetes 凭据:将您的 Kubernetes 配置文件(通常为 '~/.kube/config')放置在运行 K8s MCP Server 的主机上。

  3. 运行 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"
    }
  }
}

基本使用方法

  1. 启动 MCP 客户端:启动配置了 K8s MCP Server 的 MCP 客户端应用(如 Claude Desktop)。

  2. 使用自然语言指令:在 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)
  3. 客户端自动调用工具:MCP 客户端会自动解析您的指令,并调用 K8s MCP Server 提供的相应工具(如 'execute_kubectl'、'execute_helm' 等)来执行 Kubernetes 命令,并将结果返回给您。

注意事项

  • 安全性:K8s MCP Server 旨在安全地执行 Kubernetes 命令,但请务必仔细评估您允许语言模型执行的操作,并根据您的安全需求进行配置。
  • Kubernetes 权限:确保运行 K8s MCP Server 的 Kubernetes 配置具有执行所需 Kubernetes 操作的足够权限。
  • 资源限制:您可以根据需要配置命令超时时间和最大输出大小,以防止资源滥用。

信息

分类

开发者工具