关于 kubernetes-mcp-server
kubernetes-mcp-server 为 AI 工具提供 Kubernetes 和 OpenShift 管理能力。该 Go 服务直接调用 Kubernetes API,支持多个集群,无需依赖 kubectl 或 helm 命令行工具。
主要功能
- 01管理通用 Kubernetes 资源
- 02查看和操作 Pod
- 03管理 Helm 发布和 Chart
- 04操作 Tekton 流水线与任务
- 05支持多个集群
- 06配置工具集和访问限制
适用场景
- 01查看 Pod 日志和资源用量
- 02创建或更新 Kubernetes 资源
- 03安装或移除 Helm 发布
- 04排查 Tekton 流水线运行问题
MCP 相关
该 MCP 服务向客户端提供可配置的 Kubernetes 和 OpenShift 资源、Pod、Helm、Tekton 等工具与能力。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Kubernetes MCP Server
✨ Features | 🚀 Getting Started | 🎥 Demos | ⚙️ Configuration | 🛠️ Tools | 💬 Community | 🧑💻 Development
https://github.com/user-attachments/assets/be2b67b3-fc1c-4d11-ae46-93deba8ed98e
✨ 功能
功能强大且灵活的 Kubernetes 模型上下文协议(MCP) 服务实现,支持 Kubernetes 和 OpenShift。
- ✅ 配置:
- 自动检测 Kubernetes 配置中的更改,并更新 MCP 服务。
- 查看和管理当前的 Kubernetes
.kube/config或集群内配置。
- ✅ 通用 Kubernetes 资源:对任何 Kubernetes 或 OpenShift 资源执行操作。
- 执行任何 CRUD 操作(创建或更新、获取、列出、删除)。
- ✅ Pod:执行 Pod 专属操作。
- 列出所有命名空间或指定命名空间中的 Pod。
- 按名称从指定命名空间中获取 Pod。
- 按名称从指定命名空间中删除 Pod。
- 显示指定命名空间中某个 Pod 的日志。
- Top:获取所有 Pod 或指定命名空间中特定 Pod 的资源使用指标。
- Exec:进入 Pod 并运行命令。
- 运行容器映像并将其部署到 Pod 中,还可选择将其公开。
- ✅ 命名空间:列出 Kubernetes 命名空间。
- ✅ 事件:查看所有命名空间或指定命名空间中的 Kubernetes 事件。
- ✅ 项目:列出 OpenShift 项目。
- ☸️ Helm:
- 在当前或指定的命名空间中安装 Helm chart。
- 列出所有命名空间或指定命名空间中的 Helm release。
- 在当前或指定的命名空间中卸载 Helm release。
- 🔧 Tekton:Tekton 专属操作,补充通用 Kubernetes 资源管理功能。
- Pipeline:创建 PipelineRun 以启动 Tekton Pipeline。
- PipelineRun:重启、取消、排查问题并获取 PipelineRun 日志。
- Task:创建 TaskRun 以启动 Tekton Task。
- TaskRun:使用相同的 spec 重启 TaskRun,并通过解析 Pod 获取 TaskRun 日志。
- 🔭 可观测性:可选的 OpenTelemetry 分布式追踪和指标,支持自定义采样率。包含用于实时统计的
/stats端点。请参阅 OTEL.md。
与其他 Kubernetes MCP 服务实现不同,本项目并非只是对 kubectl 或 helm 命令行工具的封装。
它是一个基于 Go 的原生实现,可直接与 Kubernetes API 服务交互。
系统无需安装外部依赖或工具。 如果使用原生二进制文件,则无需在系统上安装 Node 或 Python。
- ✅ 轻量:服务以单个原生二进制文件的形式分发,支持 Linux、macOS 和 Windows。
- ✅ 高性能 / 低延迟:直接与 Kubernetes API 服务交互,无需调用外部命令并等待其完成。
- ✅ 多集群:可同时与多个 Kubernetes 集群交互(由 kubeconfig 文件定义)。
- ✅ 跨平台:提供适用于 Linux、macOS 和 Windows 的原生二进制文件,以及 npm 包、Python 包和容器 / Docker 镜像。
- ✅ 可配置:支持命令行参数、TOML 配置文件和环境变量。
- ✅ 经过充分测试:服务拥有全面的测试套件,可确保其在不同 Kubernetes 环境中的可靠性和正确性。
- 📚 文档:全面的用户文档,包括设置指南、配置参考和可观测性。
🚀 快速开始
要求
- 可访问 Kubernetes 集群。
Claude Code
请按照专用的 Claude Code 入门指南操作,该指南位于我们的用户文档中。
如需使用专用 ServiceAccount 和只读访问权限进行安全的生产环境配置,请同时参阅 Kubernetes 配置指南。
Claude Desktop
使用 npx
如果已安装 npm,这是在 Claude Desktop 上开始使用 kubernetes-mcp-server 最快的方法。
打开 claude_desktop_config.json,并将 MCP 服务添加到 mcpServers 列表中:
{
"mcpServers": {
"kubernetes": {
"command": "npx",
"args": ["-y", "kubernetes-mcp-server@latest"]
}
}
}
VS Code / VS Code Insiders
点击以下链接,在 VS Code Insiders 中安装 Kubernetes MCP 服务扩展:
或者,也可以运行以下命令手动安装扩展:
# For VS Code
code --add-mcp '{"name":"kubernetes","command":"npx","args":["kubernetes-mcp-server@latest"]}'
# For VS Code Insiders
code-insiders --add-mcp '{"name":"kubernetes","command":"npx","args":["kubernetes-mcp-server@latest"]}'
Cursor
点击以下链接,在 Cursor 中安装 Kubernetes MCP 服务扩展:
或者,也可以通过编辑 mcp.json 文件手动安装扩展:
{
"mcpServers": {
"kubernetes-mcp-server": {
"command": "npx",
"args": ["-y", "kubernetes-mcp-server@latest"]
}
}
}
Goose CLI
Goose CLI 是开始使用人工智能(AI)Agent 最简单(也最省钱)的方式。
使用 npm
如果已安装 npm,这是开始使用 kubernetes-mcp-server 最快的方法。
打开 goose 的 config.yaml,并将 MCP 服务添加到 mcpServers 列表中:
extensions:
kubernetes:
command: npx
args:
- -y
- kubernetes-mcp-server@latest
🎥 演示
诊断并自动修复 OpenShift Deployment
本演示展示了 Claude Desktop 如何借助 Kubernetes MCP 服务,在无需用户协助的情况下自动诊断并修复 OpenShift 中的 Deployment。
https://github.com/user-attachments/assets/a576176d-a142-4c19-b9aa-a83dc4b8d941
用 Vibe Coding 编写简单游戏并将其部署到 OpenShift
在本演示中,我将带你了解如何使用 VS Code 通过 Vibe Coding 编写简单游戏,以及如何借助 Podman MCP 服务和 Kubernetes MCP 服务将其部署到 OpenShift。
在 VS Code 中通过 Kubernetes MCP 服务增强 GitHub Copilot——一键设置!
在本演示中,我将展示如何只需点击链接,就能在 VS code 中设置 Kubernetes MCP 服务。
## ⚙️ 配置
可以通过命令行(CLI)参数配置 Kubernetes MCP 服务。
你可以使用 npx、uvx,或下载最新发布的二进制文件来运行 CLI 可执行文件。
# Run the Kubernetes MCP server using npx (in case you have npm and node installed)
npx kubernetes-mcp-server@latest --help
# Run the Kubernetes MCP server using uvx (in case you have uv and python installed)
uvx kubernetes-mcp-server@latest --help
# Run the Kubernetes MCP server using the latest release binary
./kubernetes-mcp-server --help
配置选项
| 选项 | 说明 |
|---|---|
--version | 输出版本信息并退出。 |
--config | 主 TOML 配置文件的路径。所有选项(端口、工具集、read_only、kubeconfig 等)请参阅配置参考。 |
--config-dir | 词典序排列的 .toml 文件所在目录。可以单独使用,也可以与 --config 搭配使用。省略时不加载补充配置文件。相对路径以工作目录为基准解析。 |
注意:运行时设置使用 TOML(或现有环境变量名称),而不是 CLI 标志。标志到 TOML 的映射请参阅配置变更。
TOML 配置文件
对于复杂或需要持久化的配置,请使用 TOML 配置文件,而不是 CLI 参数:
kubernetes-mcp-server --config /etc/kubernetes-mcp-server/config.toml
配置示例:
log_level = 2
read_only = true
toolsets = ["core", "config", "helm", "kubevirt"]
# Deny access to sensitive resources
[[denied_resources]]
group = ""
version = "v1"
kind = "Secret"
[telemetry]
endpoint = "http://localhost:4317"
TOML 配置文档内容全面,包括:
- 所有配置选项及其默认值
- 用于模块化设置的补充配置文件
- 通过 SIGHUP 动态重新加载配置
- 用于限制对敏感资源类型的访问的拒绝资源
- MCP Tool Search 的服务端说明
- 自定义 MCP 提示词
- HTTP 模式下的 OAuth/OIDC 身份验证(Keycloak、Microsoft Entra ID)
请参阅**配置参考**。
📊 MCP 日志记录
该服务支持 MCP 日志记录功能,允许客户端通过结构化日志消息接收调试信息。 Kubernetes API 错误会自动分类,并以适当的严重级别记录并发送给客户端。 在发送给客户端之前,敏感数据(令牌、密钥、密码、云凭据)会自动脱敏。
请参阅**MCP 日志记录指南**。
🛠️ 工具和功能
Kubernetes MCP 服务支持通过 toolsets 配置选项启用或禁用特定的工具和功能组(工具、资源、提示词等)。
这样,你就可以控制 AI 工具可用的 Kubernetes 功能。
只启用所需的工具集,有助于缩小上下文大小并提高大模型选择工具的准确性。
已验证的 Kubernetes 生态项目
以下 CNCF 和 Kubernetes 生态项目已纳入
evals/tasks 中的自动化评估场景。大多数场景
只需使用 core 工具集即可。以下专用工具集为可选项,
仅在相应项目的特定场景中才需要使用。
| 项目 | 可选工具集 | 评估场景 |
|---|---|---|
| Helm | helm | 3 |
| Istio | kiali | 5 |
| Kiali | kiali | 16 |
| Kubernetes | - | 32 |
| KubeVirt | kubevirt、tekton | 27 |
| NetObserv | netobserv | 4 |
| Tekton | tekton | 9 |
可用工具集
以下工具集可用(默认列中标有 ✓ 的工具集默认已启用):
| 工具集 | 描述 | 默认 |
|---|---|---|
| config | 查看和管理当前本地 Kubernetes 配置(kubeconfig) | ✓ |
| core | 最常用的 Kubernetes 管理工具(Pods、通用资源、事件等) | ✓ |
| helm | 用于管理 Helm chart 和发行版的工具 | |
| kcp | 管理 kcp 工作区和多租户功能 | |
| kiali | 最常用的 Kiali 管理工具;如需了解详情,请查看 Kiali 文档。 | |
| kubevirt | KubeVirt 虚拟机管理工具;如需了解详情,请查看 KubeVirt 文档。 | |
| netobserv | 由 NetObserv 控制台插件 API(流、指标、导出)提供支持的网络可观测性工具。如需了解详情,请查看 NetObserv 文档。 | |
| observability/logs | 用于查询 Loki 日志的工具集 | |
| observability/metrics | 用于高效查询 Prometheus 和 Alertmanager 端点的工具集 | |
| observability/otelcol | 用于 OpenTelemetry Collector 配置辅助的工具集,包括架构验证、组件文档和版本管理。 | |
| observability/traces | 用于发现 Tempo 实例、搜索和检索跟踪信息以及探索跟踪属性的分布式跟踪工具。 | |
| tekton | 用于管理 Pipelines、PipelineRuns、Tasks、TaskRuns 和故障排查的 Tekton 流水线管理工具。 |
工具
如果已启用多集群支持(默认启用),且你可以访问多个集群,则所有适用的工具都会包含一个额外的 context 参数,用于指定该操作要使用的 Kubernetes context(集群)。
配置
-
configuration_contexts_list - 列出 kubeconfig 文件中所有可用的 context 名称及关联的服务器 URL
-
targets_list - 列出所有可用目标
-
configuration_view - 获取当前 Kubernetes 配置内容,并以 kubeconfig YAML 格式返回
minified(boolean) - 返回精简版配置。若设为 true,则仅保留当前 context 及该 context 的相关配置部分。若设为 false,则在配置中返回所有 context、集群、身份验证信息和用户。(可选,默认值为 true)
核心
-
events_list - 列出当前集群所有命名空间中的 Kubernetes 事件(警告、错误、状态变更),用于调试和故障排查。使用 limit 和 continue 可逐页获取较大的列表。
continue(string) - 上一页的 continue 字段中的不透明令牌。使用相同的 limit、namespace 和选择器,不作修改地发送该令牌,以获取下一页。首次调用时省略。fieldSelector(string) - 可选的 Kubernetes 字段选择器,用于按字段值筛选事件(例如 'type=Warning'、'involvedObject.name=my-pod')。支持的字段:involvedObject.kind、involvedObject.name、involvedObject.namespace、involvedObject.uid、involvedObject.apiVersion、involvedObject.resourceVersion、involvedObject.fieldPath、reason、reportingComponent、source、type。请参阅 https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors/limit(integer) - 要返回的最大条目数。省略或设为 0 表示列出所有条目;若响应超过 max_backend_response_bytes,则会失败。发生这种情况时,请缩小 limit 后重试。API 返回的条目数可能少于请求的数量。namespace(string) - 可选的 Namespace,用于指定要从中检索事件的命名空间。若未提供,则列出所有命名空间中的事件。
-
namespaces_list - 列出当前集群中的所有 Kubernetes 命名空间。使用 limit 和 continue 可逐页获取较大的列表。
continue(string) - 上一页的 continue 字段中的不透明令牌。使用相同的 limit、namespace 和选择器,不作修改地发送该令牌,以获取下一页。首次调用时省略。fieldSelector(string) - 可选的 Kubernetes 字段选择器,用于按字段值筛选命名空间(例如 'metadata.name=default'、'status.phase=Active')。支持的字段:metadata.name、status.phase。请参阅 https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors/limit(integer) - 要返回的最大条目数。省略或设为 0 表示列出所有条目;若响应超过 max_backend_response_bytes,则会失败。发生这种情况时,请缩小 limit 后重试。API 返回的条目数可能少于请求的数量。
-
projects_list - 列出当前集群中的所有 OpenShift 项目。使用 limit 和 continue 可逐页获取较大的列表。
continue(string) - 上一页的 continue 字段中的不透明令牌。使用相同的 limit、namespace 和选择器,不作修改地发送该令牌,以获取下一页。首次调用时省略。limit(integer) - 要返回的最大条目数。省略或设为 0 表示列出所有条目;若响应超过 max_backend_response_bytes,则会失败。发生这种情况时,请缩小 limit 后重试。API 返回的条目数可能少于请求的数量。
-
nodes_stats_summary - 通过 kubelet 的 Summary API 获取 Kubernetes 节点的详细资源使用统计信息。提供全面的指标,包括节点、Pod 和容器级别的 CPU、内存、文件系统和网络使用情况。在使用 cgroup v2 和内核 4.20+ 的系统上,还会包含 PSI(压力停滞信息)指标,用于显示 CPU、内存和 I/O 的资源压力。有关 PSI 指标的详情,请参阅 https://kubernetes.io/docs/reference/instrumentation/understand-psi-metrics/
name(string) (required) - 要获取统计信息的节点名称
-
nodes_top - 列出 Kubernetes Metrics Server 记录的指定 Kubernetes 节点或集群中所有节点的资源消耗(CPU 和内存)。使用 limit 和 continue 分页获取大型列表。
continue(string) - 上一页continue字段中的不透明令牌。发送时须保持不变,并使用相同的 limit、namespace 和选择器来获取下一页。首次调用时省略。label_selector(string) - Kubernetes 标签选择器(例如,'node-role.kubernetes.io/worker='),用于按标签筛选节点(可选,仅当未提供 name 时适用)limit(integer) - 要返回的最大条目数。省略或设为 0 表示列出全部条目;如果响应超过 max_backend_response_bytes,则会失败。发生这种情况时,请使用更小的 limit 重试。API 返回的条目数可能少于请求数。name(string) - 要获取资源消耗的节点名称(可选;未提供时获取所有节点)
-
pods_list - 列出当前集群所有命名空间中的全部 Kubernetes Pod。使用 limit 和 continue 分页获取大型列表。
continue(string) - 上一页continue字段中的不透明令牌。发送时须保持不变,并使用相同的 limit、namespace 和选择器来获取下一页。首次调用时省略。fieldSelector(string) - 可选的 Kubernetes 字段选择器,用于按字段值筛选 Pod(例如,'status.phase=Running'、'spec.nodeName=node1')。支持的字段:metadata.name、metadata.namespace、spec.nodeName、spec.restartPolicy、spec.schedulerName、spec.serviceAccountName、status.phase(Pending/Running/Succeeded/Failed/Unknown)、status.podIP、status.nominatedNodeName。注意:CrashLoopBackOff 是容器状态,而非 Pod 阶段,因此无法直接筛选。请参阅 https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors/labelSelector(string) - 可选的 Kubernetes 标签选择器(例如,'app=myapp,env=prod' 或 'app in (myapp,yourapp)');需要按标签筛选 Pod 时使用此选项limit(integer) - 要返回的最大条目数。省略或设为 0 表示列出全部条目;如果响应超过 max_backend_response_bytes,则会失败。发生这种情况时,请使用更小的 limit 重试。API 返回的条目数可能少于请求数。
-
pods_list_in_namespace - 列出当前集群中指定命名空间的所有 Kubernetes Pod。使用 limit 和 continue 分页获取大型列表。
continue(string) - 上一页continue字段中的不透明令牌。保持原样,并与相同的 limit、namespace 和选择器一起发送,以获取下一页。首次调用时省略。fieldSelector(string) - 可选的 Kubernetes 字段选择器,用于按字段值筛选 Pod(例如 'status.phase=Running'、'spec.nodeName=node1')。支持的字段:metadata.name、metadata.namespace、spec.nodeName、spec.restartPolicy、spec.schedulerName、spec.serviceAccountName、status.phase(Pending/Running/Succeeded/Failed/Unknown)、status.podIP、status.nominatedNodeName。注意:CrashLoopBackOff 是容器状态,而不是 Pod 阶段,因此无法直接筛选。参见 https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors/labelSelector(string) - 可选的 Kubernetes 标签选择器(例如 'app=myapp,env=prod' 或 'app in (myapp,yourapp)'),需要按标签筛选 Pod 时使用此选项limit(integer) - 返回的最大条目数。省略或设为 0 可列出所有条目;如果响应超过 max_backend_response_bytes,则会失败。发生这种情况时,请使用较小的 limit 重试。API 返回的条目数可能少于请求数。namespace(string) (必填) - 要列出 Pod 的命名空间
-
pods_get - 在当前或指定的命名空间中,按提供的名称获取 Kubernetes Pod
name(string) (必填) - Pod 的名称namespace(string) - 要获取 Pod 的命名空间
-
pods_delete - 在当前或指定的命名空间中,按提供的名称删除 Kubernetes Pod
name(string) (必填) - 要删除的 Pod 的名称namespace(string) - 要删除 Pod 的命名空间
-
pods_top - 列出 Kubernetes Metrics Server 记录的指定 Kubernetes Pod 的资源消耗(CPU 和内存)。可指定所有命名空间、提供的命名空间或当前命名空间。使用 limit 和 continue 分页获取大型列表。
all_namespaces(boolean) - 如果为 true,则列出所有命名空间中所有 Pod 的资源消耗。如果为 false,则列出提供的命名空间或当前命名空间中 Pod 的资源消耗continue(string) - 上一页continue字段中的不透明令牌。保持原样,并与相同的 limit、namespace 和选择器一起发送,以获取下一页。首次调用时省略。label_selector(string) - Kubernetes 标签选择器(例如 'app=myapp,env=prod' 或 'app in (myapp,yourapp)'),需要按标签筛选 Pod 时使用此选项(可选,仅在未提供 name 时适用)limit(integer) - 返回的最大条目数。省略或设为 0 可列出所有条目;如果响应超过 max_backend_response_bytes,则会失败。发生这种情况时,请使用较小的 limit 重试。API 返回的条目数可能少于请求数。name(string) - 要获取资源消耗的 Pod 名称(可选;未提供时返回命名空间中的所有 Pod)namespace(string) - 要获取资源消耗的 Pod 所属命名空间(可选;未提供且 all_namespaces 为 false 时,使用当前命名空间)
-
pods_exec - 使用提供的名称和命令,在当前或指定命名空间中的 Kubernetes Pod 内执行命令(访问 shell、在容器中运行命令)
command(array) (必填) - 要在 Pod 容器中执行的命令。第一项是要运行的命令,其余项是该命令的参数。示例:["ls", "-l", "/tmp"]container(string) - 要执行命令的 Pod 容器名称(可选)name(string) (必填) - 要执行命令的 Pod 名称namespace(string) - 要执行命令的 Pod 所在的命名空间
-
pods_log - 使用提供的名称,获取当前或指定命名空间中 Kubernetes Pod 的日志
container(string) - 要获取日志的 Pod 容器名称(可选)name(string) (必填) - 要获取日志的 Pod 名称namespace(string) - 要获取 Pod 日志的命名空间previous(boolean) - 返回之前已终止容器的日志(可选)tail(integer) - 从日志末尾获取的行数(可选,默认值:100)
-
pods_run - 使用提供的容器镜像和可选名称,在当前或指定命名空间中运行 Kubernetes Pod
image(string) (必填) - 要在 Pod 中运行的容器镜像name(string) - Pod 名称(可选;未提供时使用随机名称)namespace(string) - 运行 Pod 的命名空间port(number) - 要从 Pod 容器暴露的 TCP/IP 端口(可选;未提供时不暴露端口)
-
resources_list - 通过提供 apiVersion 和 kind,并可选择提供命名空间和标签选择器,列出当前集群中的 Kubernetes 资源和对象。使用 limit 和 continue 可逐页获取大型列表。 (常见的 apiVersion 和 kind 包括:v1 Pod、v1 Service、v1 Node、apps/v1 Deployment、networking.k8s.io/v1 Ingress、route.openshift.io/v1 Route)
apiVersion(string) (必填) - 资源的 apiVersion(有效 apiVersion 示例:v1、apps/v1、networking.k8s.io/v1)continue(string) - 上一页 continue 字段中的不透明令牌。使用相同的 limit、namespace 和选择器,原样发送该令牌以获取下一页。首次调用时省略。fieldSelector(string) - 可选的 Kubernetes 字段选择器,用于按字段值筛选资源(例如 'status.phase=Running'、'metadata.name=myresource')。支持的字段因资源类型而异。对于 Pod:metadata.name、metadata.namespace、spec.nodeName、spec.restartPolicy、spec.schedulerName、spec.serviceAccountName、status.phase(Pending/Running/Succeeded/Failed/Unknown)、status.podIP、status.nominatedNodeName。参见 https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors/kind(string) (必填) - 资源的 kind(有效 kind 示例:Pod、Service、Deployment、Ingress)labelSelector(string) - 可选的 Kubernetes 标签选择器(例如 'app=myapp,env=prod' 或 'app in (myapp,yourapp)');需要按标签筛选资源时使用此选项limit(integer) - 要返回的最大条目数。省略或设为 0 表示列出所有条目;如果响应超过 max_backend_response_bytes,则会失败。发生这种情况时,请使用较小的 limit 重试。API 返回的条目可能少于请求数量。namespace(string) - 要获取命名空间级资源时使用的可选命名空间(对集群级资源无效)。未提供时,将列出所有命名空间中的资源
-
resources_get - 提供 apiVersion、kind、可选的命名空间及资源名称,获取当前集群中的 Kubernetes 资源 (常见的 apiVersion 和 kind 包括:v1 Pod、v1 Service、v1 Node、apps/v1 Deployment、networking.k8s.io/v1 Ingress、route.openshift.io/v1 Route)
apiVersion(string) (required) - 资源的 apiVersion(有效 apiVersion 示例:v1、apps/v1、networking.k8s.io/v1)kind(string) (required) - 资源的 kind(有效 kind 示例:Pod、Service、Deployment、Ingress)name(string) (required) - 资源名称namespace(string) - 可选的命名空间,用于获取命名空间级资源(对于集群级资源会忽略此参数)。如果未提供,则从已配置的命名空间获取资源
-
resources_create_or_update - 通过 Server-Side Apply 创建或更新 Kubernetes 资源。清单表示完整的期望状态:此工具之前设置过但新清单中未包含的字段将被移除。要编辑现有资源,请使用 resources_get 获取该资源,修改后再重新应用完整资源。 (常见的 apiVersion 和 kind 包括:v1 Pod、v1 Service、v1 Node、apps/v1 Deployment、networking.k8s.io/v1 Ingress、route.openshift.io/v1 Route)
resource(string) (required) - Kubernetes 资源的完整 YAML 或 JSON 表示(完整的期望状态,而非部分补丁)。请包含 apiVersion、kind、metadata 和完整的 spec。
-
resources_delete - 提供 apiVersion、kind、可选的命名空间及资源名称,删除当前集群中的 Kubernetes 资源 (常见的 apiVersion 和 kind 包括:v1 Pod、v1 Service、v1 Node、apps/v1 Deployment、networking.k8s.io/v1 Ingress、route.openshift.io/v1 Route)
apiVersion(string) (required) - 资源的 apiVersion(有效 apiVersion 示例:v1、apps/v1、networking.k8s.io/v1)gracePeriodSeconds(integer) - 删除对象前等待的可选时长,单位为秒。值必须是非负整数。值为零表示立即删除。如果此值为 nil,则使用指定类型的默认宽限期kind(string) (required) - 资源的 kind(有效 kind 示例:Pod、Service、Deployment、Ingress)name(string) (required) - 资源名称namespace(string) - 可选的命名空间,用于删除命名空间级资源(对于集群级资源会忽略此参数)。如果未提供,则从已配置的命名空间删除资源
-
resources_scale - 提供 apiVersion、kind、名称及可选的命名空间,获取或更新当前集群中 Kubernetes 资源的副本数。如果在工具调用中设置了副本数,则会将其更新为该值。始终返回资源当前的副本数
apiVersion(string) (required) - 资源的 apiVersion(有效 apiVersion 示例:apps/v1)kind(string) (required) - 资源的 kind(有效 kind 示例:StatefulSet、Deployment)name(string) (required) - 资源名称namespace(string) - 可选的命名空间,用于获取/更新命名空间级资源的副本数(对于集群级资源会忽略此参数)。如果未提供,则从已配置的命名空间获取/更新资源副本数scale(integer) - 可选的副本数,用于更新资源的副本数。如果未提供,则返回资源当前的副本数,不作更新
helm
- **helm_install** - 安装(部署)Helm chart,以在当前命名空间或指定命名空间中创建一个 release - `chart` (`string`) **(required)** - 要安装的 chart 引用(例如:stable/grafana、oci://ghcr.io/nginxinc/charts/nginx-ingress) - `name` (`string`) - Helm release 的名称(可选;如果未提供,则使用随机名称) - `namespace` (`string`) - 安装 Helm chart 的命名空间(可选;如果未提供,则使用当前命名空间) - `values` (`object`) - 要传递给 Helm chart 的值(可选)-
helm_list - 列出当前命名空间或指定命名空间中的所有 Helm release(如果指定,也可以列出所有命名空间中的 release)。使用 limit 和 offset 对返回的 release 分页。Helm 会在应用分页之前加载 release 密钥,因此,即使密钥列表超出 max_backend_response_bytes,操作仍可能失败。
all_namespaces(boolean) - 如果为 true,则忽略 namespace 参数,列出所有命名空间中的所有 Helm release(可选)limit(integer) - 要返回的 release 数量上限。省略或设为 0,则返回 Helm 加载的所有 release。完整的一页会告知下一个 offset。namespace(string) - 要从中列出 Helm release 的命名空间(可选;如果未提供,则列出所有命名空间)offset(integer) - 要跳过的 release 数量。若收到完整的一页,请使用相同的 limit 发送下一页的 offset。
-
helm_uninstall - 卸载当前命名空间或指定命名空间中的 Helm release
name(string) (required) - 要卸载的 Helm release 名称namespace(string) - 要从中卸载 Helm release 的命名空间(可选;如果未提供,则使用当前命名空间)
kcp
-
kcp_workspaces_list - 列出当前集群中所有可用的 kcp 工作区
-
kcp_workspace_describe - 获取特定 kcp 工作区的详细信息
workspace(string) (required) - 要描述的工作区名称或路径
kiali
-
kiali_get_mesh_traffic_graph - 返回指定命名空间的服务间流量拓扑、依赖关系和网络指标(吞吐量、响应时间、mTLS)。使用此工具诊断路由问题、延迟,或查找上游/下游依赖项。
graphType(string) - 图的粒度。'app' 按应用名称聚合,'versionedApp' 按版本区分,'workload' 映射特定的 Pod/Deployment。默认值:versionedApp。meshCluster(string) - 可选的 Istio 网格集群名称,来自 kiali_list_mesh_clusters(例如 west)。省略时,Kiali 默认使用其主集群。namespaces(string)` (required) - 要映射的逗号分隔命名空间列表
-
kiali_get_mesh_status - 获取 Istio 服务网格的总体运行状况、拓扑和环境详情。返回多集群控制平面状态(istiod)、数据平面命名空间运行状况(包括 ambient mesh 状态)、可观测性技术栈运行状况(Prometheus、Grafana 等)以及组件连通性。将此工具作为诊断整个网格问题、验证 Istio/Kiali 版本,或在深入检查特定工作负载前检查整体运行状况的第一步。
-
kiali_manage_istio_config - 创建、修补或删除 Istio、Gateway API 和 Inference API 配置。支持 Istio 资源(networking.istio.io、security.istio.io)、Gateway API 资源(gateway.networking.k8s.io),以及在集群上已安装时的 Inference API 资源(inference.networking.k8s.io)。读取列表和对象请使用 manage_istio_config_read。
action(string)(必需) - 要执行的操作(写入)data(string)- 资源的 JSON 或 YAML 数据。执行 create 和 patch 操作时必需。执行 create 时,可提供部分内容(例如仅提供 spec),系统会将其与带默认值的有效模板合并。数组(如 servers、http 等)会被整体替换,因此请包含所需的所有元素。group(string)(必需) - Istio 对象的 API 组。Gateway API 资源请使用'gateway.networking.k8s.io'。Inference API 资源请使用'inference.networking.k8s.io'。kind(string)(必需) - Istio 对象的类型(例如,'VirtualService'、'DestinationRule')。meshCluster(string)- 可选的 Istio 网格集群名称,取自 kiali_list_mesh_clusters(例如 west)。省略时,Kiali 默认使用其所在的集群。namespace(string)(必需) - 包含 Istio 对象的命名空间。object(string)(必需) - Istio 对象的名称。version(string)(必需) - API 版本。所有资源类型均使用'v1'。
-
kiali_list_mesh_clusters - 返回 Kiali 可访问的 Istio 网格集群列表。每个条目都包含集群名称,以及该集群是否为 home 集群(即部署 Kiali 的集群)。目标集群未知时,请在其他 Kiali 工具中使用 meshCluster 前调用此工具。
-
kiali_get_resource_details - 获取资源列表,或检索特定资源的详细数据。如果省略 'resourceName',则返回列表。如果提供了 'resourceName',则返回该特定资源的详细信息。
meshCluster(string) - 可选的 Istio 网格集群名称,来自 kiali_list_mesh_clusters(例如 west)。省略时,Kiali 默认使用其主集群。namespaces(string) - 要查询的命名空间,以逗号分隔的列表(例如 'bookinfo' 或 'bookinfo,default')。如果未提供,则会查询所有可访问的命名空间。resourceName(string) - 可选。资源的具体名称。如果留空,工具会返回指定类型的所有资源列表。如果提供,则会返回该特定资源的详细信息。resourceType(string) (必填) - 要查询的资源类型。对于 Kiali 应用(按 Kubernetes 'app' 标签分组),使用 'app'。对于 ArgoCD Application CRD,使用 'argoapp'(需要安装 ArgoCD,且 Kiali 服务账号必须具有 applications.argoproj.io 的读取权限)。
-
kiali_list_traces - 列出某个命名空间中某项服务的分布式跟踪记录。返回摘要(namespace、service、total_found、avg_duration_ms)以及包含 id、duration_ms、spans_count、root_op、slowest_service、has_errors 的跟踪记录列表。使用带有跟踪 ID 的 get_trace_details 获取完整层级结构。
errorOnly(boolean) - 如果为 true,则只考虑包含错误的跟踪记录。默认为 false。limit(integer) - 要返回的跟踪记录的最大数量。默认为 10。lookbackSeconds(integer) - 向前回溯搜索的时长。默认为 600(10m)。meshCluster(string) - 可选的 Istio 网格集群名称,来自 kiali_list_mesh_clusters(例如 west)。省略时,Kiali 默认使用其主集群。namespace(string) (必填) - 服务所在的 Kubernetes 命名空间。serviceName(string) (必填) - 要搜索跟踪记录的服务名称(必填)。最多返回 limit 条跟踪记录。
-
kiali_get_trace_details - 根据 trace_id 获取单条分布式跟踪记录,并返回其调用层级结构(包含持续时间、状态和嵌套调用的服务树)。使用此工具可在调用 list_traces 后深入查看特定跟踪记录。
traceId(string) (必填) - 要获取并汇总的跟踪 ID。如果提供,则忽略 namespace/service_name。
-
kiali_get_pod_performance - 返回易读的文本摘要,对比当前 Pod 的 CPU/内存用量(来自 Prometheus)与 Kubernetes 请求/限制(来自 Pod 规格)。可用于回答“此工作负载是否使用了过多内存?”等问题。
meshCluster(string) - 可选的 Istio 网格集群名称,来自 kiali_list_mesh_clusters(例如 west)。省略时,Kiali 默认使用其主集群。namespace(string) (必填) - Pod 所在的 Kubernetes 命名空间。podName(string) - Kubernetes Pod 名称。如果提供了 workloadName,工具会先尝试从该工作负载中解析一个 Pod。queryTime(string) - 可选的查询结束时间戳(RFC3339)。默认为当前时间。timeRange(string) - 用于计算 CPU 速率的时间窗口(Prometheus 时长格式,如 '5m'、'10m'、'1h'、'1d')。默认为 '10m'。workloadName(string) - Kubernetes 工作负载名称(例如 Deployment/StatefulSet 等)。工具会查找该工作负载并选取其中一个 Pod。如果未找到,则会将此值作为 podName 处理。
-
kiali_get_logs - 获取 Kubernetes Pod(或可解析为 Pod 的工作负载名称)在某个命名空间中的日志。输出为纯文本,与 kubernetes-mcp-server 的 pods_log 格式一致。line_count 字段表示返回的日志总行数。请分析所有日志行,但除非用户明确要求原始输出,否则请总结结果。不要遗漏任何错误或警告行。
container(string) - 可选。要获取日志的 Pod 容器名称。format(string) - 聊天输出格式。'codeblock' 会用 ~~~ 围住日志(推荐)。'plain' 返回类似 kubernetes-mcp-server pods_log 的原始文本。meshCluster(string) - 可选。来自 kiali_list_mesh_clusters 的 Istio 网格集群名称(例如 west)。省略时,Kiali 默认使用其主集群。name(string) (required) - 要获取日志的 Pod 名称。如果该 Pod 不存在,则会将其视为工作负载名称,并选择一个正在运行的 Pod。namespace(string) (required) - 获取 Pod 日志的命名空间previous(boolean) - 可选。返回先前已终止容器的日志severity(string) - 可选。在客户端应用的严重性筛选条件。接受 'ERROR'、'WARN' 或 'ERROR,WARN' 这类组合。tail(integer) - 从日志末尾获取的行数(可选,默认值为 50)。不得超过 200 行。workload(string) - 可选。覆盖工作负载名称(在名称查找失败时使用)。
-
kiali_get_metrics - 返回给定资源的 Istio 指标精简 JSON 摘要(延迟分位数、流量趋势、吞吐量、有效载荷大小)。
byLabels(string) - 用于对指标分组的逗号分隔标签列表(例如 'source_workload,destination_service')。可选direction(string) - 流量方向。可选,默认为 'outbound'meshCluster(string) - 可选。来自 kiali_list_mesh_clusters 的 Istio 网格集群名称(例如 west)。省略时,Kiali 默认使用其主集群。namespace(string) (required) - 获取指标的命名空间quantiles(string) - 直方图指标分位数的逗号分隔列表(例如 '0.5,0.95,0.99')。可选rateInterval(string) - 指标的速率间隔(例如 '1m'、'5m')。可选,默认为 '10m'reporter(string) - 指标报告方。逗号分隔的列表,可选值为 'source'、'destination'、'waypoint',或特殊值 'both'(不筛选报告方)。可选,默认为 'source'。示例:'source,waypoint'requestProtocol(string) - 按请求协议筛选(例如 'http'、'grpc'、'tcp')。可选resourceName(string) (required) - 要获取指标的资源名称resourceType(string) (required) - 资源类型step(string) - 数据点之间的步长(秒)(例如 '15')。可选,默认为 15 秒
kubevirt
-
vm_clone - 在 KubeVirt 上通过创建 VirtualMachineClone 资源克隆 VirtualMachine。此操作会使用 KubeVirt Clone API,以新名称创建源 VM 的副本
name(string) (required) - 要克隆的源虚拟机名称namespace(string) (required) - 源虚拟机所在的命名空间targetName(string) (required) - 新克隆虚拟机的名称
-
vm_console_screenshot - 将 KubeVirt 上 VirtualMachine 的图形(VNC)控制台截取为 PNG 图像。可使用此工具查看 VM 屏幕上当前显示的内容(例如固件、引导加载程序或登录提示)。只读:绝不会向来宾发送输入。
name(string) (required) - 虚拟机名称namespace(string) (required) - 虚拟机所在的命名空间
-
vm_create - 使用指定配置在 KubeVirt 上创建 VirtualMachine,并自动解析实例类型、偏好设置和容器磁盘镜像。默认情况下,VM 将以 Halted 状态创建;使用 autostart 参数可立即启动。
autostart(boolean) - 可选标志,用于在创建后自动启动 VM(将 runStrategy 设置为 Always,而非 Halted)。默认为 false。instancetype(string) - VM 的可选实例类型名称(例如,'u1.small'、'u1.medium'、'u1.large')name(string) (required) - 虚拟机名称namespace(string) (required) - 虚拟机所在的命名空间networks(array) - 要附加到 VM 的可选辅助网络接口。每个条目指定要附加的 Multus NetworkAttachmentDefinition。接受简单字符串(NetworkAttachmentDefinition 名称)或包含 'name'(VM 中的接口名称)和 'networkName'(NetworkAttachmentDefinition 名称)属性的对象。每个网络都会在 VM 上创建一个桥接接口。performance(string) - VM 实例类型的可选性能系列提示(例如,'u1' 表示通用型,'o1' 表示超分配型,'c1' 表示计算优化型,'m1' 表示内存优化型)。如果未指定,则默认为 'u1'(通用型)。preference(string) - VM 的可选偏好设置名称size(string) - VM 的可选工作负载规模提示(例如,'small'、'medium'、'large'、'xlarge')。如果未明确指定实例类型,则用于自动选择合适的实例类型。storage(string) - 使用 DataSources 时,VM 根磁盘的可选存储大小(例如,'30Gi'、'50Gi'、'100Gi')。默认为 30Gi。使用容器磁盘时将忽略此项。workload(string) - VM 的工作负载。接受 OS 名称(例如,'fedora'(默认)、'ubuntu'、'centos'、'centos-stream'、'debian'、'rhel'、'opensuse'、'opensuse-tumbleweed'、'opensuse-leap')或完整的容器磁盘镜像 URL
-
vm_guest_info - 从 VirtualMachine 的 QEMU guest agent 获取来宾操作系统信息。要求在 VM 内安装并运行 guest agent。提供有关 OS、文件系统、网络接口和已登录用户的详细信息。
info_type(string) - 要获取的信息类型:'all'(默认值,所有可用信息)、'os'(操作系统详情)、'filesystem'(磁盘和文件系统信息)、'users'(已登录用户)、'network'(网络接口和 IP)name(string) (required) - 虚拟机名称namespace(string) (required) - 虚拟机所在的命名空间
-
vm_lifecycle - 管理 KubeVirt VirtualMachine 生命周期:启动、停止、重启、暂停或取消暂停 VM
action(string) (required) - 要执行的生命周期操作:'start'(将 runStrategy 改为 Always)、'stop'(将 runStrategy 改为 Halted)、'restart'(先停止再启动 VM)、'pause'(就地挂起正在运行的 VMI)或 'unpause'(恢复已暂停的 VMI)name(string) (required) - 虚拟机名称namespace(string) (required) - 虚拟机所在的命名空间
-
vm_create_from_template - 根据 KubeVirt 上的 VirtualMachineTemplate(virt-template)创建 VirtualMachine。在服务器端处理模板以替换参数(必填值、默认值和密码等自动生成的值),然后在同一命名空间中创建生成的 VirtualMachine。不支持跨命名空间使用模板。
namespace(string)(必填) - VirtualMachineTemplate 和生成的 VirtualMachine 所在的命名空间(必须相同)parameters(object)- 要替换到模板中的参数值。键为参数名称(例如 VM_NAME),值为字符串。必须提供必填参数;如果省略可选参数,则使用其默认值;如果未提供带有 generate/from 的参数,则会自动生成。template_name(string)(必填) - 用于创建 VM 的 VirtualMachineTemplate 名称
-
vm_troubleshoot - 通过自动根因检测诊断 KubeVirt VirtualMachine 问题。收集 VM 状态、VMI 状态、卷、DataVolume/PVC 状态、cloud-init 配置、Pod 状态、日志和事件,然后运行启发式检查,以识别具体问题并建议修复方法。返回包含 CRITICAL/WARNING 发现项和可执行修复步骤的“Detected Issues”部分,后面附上原始诊断数据。用户询问 VM 为何无法启动、卡在 Provisioning、陷入 crashloop、迁移失败或表现异常时,请始终先使用此工具。如果用户要求修复或处理问题,请使用报告中的 Suggested Fixes,并通过 vm_lifecycle(重启)或 resources_create_or_update 执行。
name(string)(必填) - 要排查的 VirtualMachine 名称namespace(string)(必填) - 要排查的 VirtualMachine 所在命名空间
netobserv
- netobserv_list_flows - 从 Loki 列出 NetObserv 网络流记录。用于调查某个命名空间或时间范围内工作负载、IP、端口或协议之间的流量。
endTime(integer)- 时间范围的结束时间,以 Unix 纪元秒数表示。默认为当前时间。filters(string)- 传递给控制台插件的 NetObserv 过滤表达式(纯文本;客户端会对其进行 URL 编码)。
语法:
- key=value — 精确匹配;key=a,b — 同一键的多个值取 OR
- key~pattern — 正则表达式/包含匹配;key!~pattern — 非正则匹配
- key!=value — 不等于;key>number — 数值大于或等于(例如 Bytes>1000)
- 组内 AND:&(例如 SrcK8S_Namespace=default&Proto=6)
- 组间 OR:|(例如 SrcK8S_Name=pod-a|SrcK8S_Name=pod-b)
可能时,优先使用专用的 "namespace" 参数指定命名空间范围。 使用 Kubernetes 列表工具(namespaces、pods、deployments 等)来查找过滤值。
常见 Kubernetes 字段(Src/Dst 前缀相互对应):
- SrcK8S_Namespace、DstK8S_Namespace、SrcK8S_Name、DstK8S_Name
- SrcK8S_Type、DstK8S_Type(例如 Pod、Service、Node)
- SrcK8S_OwnerName、DstK8S_OwnerName、SrcK8S_OwnerType、DstK8S_OwnerType(用于 Deployment、StatefulSet 等)
- SrcK8S_HostName、DstK8S_HostName、SrcK8S_Zone、DstK8S_Zone、K8S_ClusterName、UDN
网络与流量:
- SrcAddr、DstAddr(IP)、SrcPort、DstPort、Proto(IANA 编号,例如 6=TCP、17=UDP)
- FlowDirection(0=Ingress、1=Egress、2=Inner)、Bytes、Packets、Dscp、Flags
数据包丢弃(通常带有 recordType flowLog 和 packetLoss dropped/hasDrops):
- PktDropPackets、PktDropBytes、PktDropLatestState、PktDropLatestDropCause
DNS:
- DnsName、DnsId、DnsLatencyMs、DnsErrno、DnsFlagsResponseCode
- netobserv_export_flows - 将 NetObserv 流记录导出为 CSV,支持与 list_flows 相同的筛选条件。用户需要下载流数据以进行审计或离线分析时使用。
columns(string) - 可选的逗号分隔列名,指定要包含的列(例如 SrcK8S_Namespace,DstK8S_Namespace,Bytes)。省略时导出结果中包含的所有列。endTime(integer) - 时间范围的结束时间,以 Unix 纪元秒数表示。默认为当前时间。filters(string) - 传递给控制台插件的 NetObserv 筛选表达式(纯文本;客户端会对其进行 URL 编码)。
语法:
- key=value — 精确匹配;key=a,b — 对同一 key 的多个值执行 OR 匹配
- key~pattern — 正则表达式/包含匹配;key!~pattern — NOT 正则表达式
- key!=value — 不等于;key>number — 数值大于或等于(例如 Bytes>1000)
- 组内 AND:&(例如 SrcK8S_Namespace=default&Proto=6)
- 组间 OR:|(例如 SrcK8S_Name=pod-a|SrcK8S_Name=pod-b)
条件允许时,优先使用专用的 "namespace" 参数限定命名空间范围。 使用 Kubernetes 列表工具(namespaces、pods、deployments 等)发现筛选值。
常见的 Kubernetes 字段(Src/Dst 前缀相互对应):
- SrcK8S_Namespace、DstK8S_Namespace、SrcK8S_Name、DstK8S_Name
- SrcK8S_Type、DstK8S_Type(例如 Pod、Service、Node)
- SrcK8S_OwnerName、DstK8S_OwnerName、SrcK8S_OwnerType、DstK8S_OwnerType(适用于 Deployment、StatefulSet 等)
- SrcK8S_HostName、DstK8S_HostName、SrcK8S_Zone、DstK8S_Zone、K8S_ClusterName、UDN
网络与流:
- SrcAddr、DstAddr(IP)、SrcPort、DstPort、Proto(IANA 编号,例如 6=TCP、17=UDP)
- FlowDirection(0=Ingress、1=Egress、2=Inner)、Bytes、Packets、Dscp、Flags
丢包(通常搭配 recordType flowLog 以及 packetLoss dropped/hasDrops):
- PktDropPackets、PktDropBytes、PktDropLatestState、PktDropLatestDropCause
DNS:
- DnsName、DnsId、DnsLatencyMs、DnsErrno、DnsFlagsResponseCode
示例:
-
SrcK8S_Namespace=openshift-netobserv&SrcK8S_Name~my-app
-
Proto=6&DstPort=443
-
SrcK8S_Name=pod-a|SrcK8S_Name=pod-b
format(string) - 导出格式。仅支持 csv。limit(integer) - 要返回的流记录的最大数量。默认值为 100。namespace(string) - 限定为源命名空间或目标命名空间匹配的流(限定于开发环境的 Loki 租户)。packetLoss(string) - 丢包筛选条件。recordType(string) - 流记录类型筛选条件。startTime(integer) - 时间范围的起始时间,以 Unix 纪元秒数表示。设置后会覆盖 timeRange。timeRange(integer) - 未指定 startTime 时的回溯时间窗口,以秒为单位。默认值为 300。
-
netobserv_get_flow_metrics - 返回聚合后的 NetObserv 流指标,形式为拓扑数据或时间序列数据。可用于分析吞吐量、TLS/DNS/丢包情况,以及命名空间或工作负载流量;分组方式请参见 aggregateBy 和 groups。
aggregateBy(string) (required) - netobserv_get_flow_metrics(控制台插件 /api/flow/metrics)的主要维度。
两种形式(请使用准确拼写):
- 拓扑范围 — 为图形/拓扑视图聚合端点:
- app — 应用工作负载(Pod/Service),不包括基础设施流量
- namespace — Kubernetes 命名空间(默认)
- owner — 控制器所有者(Deployment、StatefulSet,……)
- resource — Pod、Service 或 Node(工作负载的最细粒度)
- host — 节点名称
- zone — 可用区
- cluster — 集群名称(多集群)
- network — 用户定义的/辅助网络名称
- 流记录字段 — 按单个流属性分组(PascalCase 字段名称)。 用于细分图表(TLS、DNS、丢弃、协议)。字段名称与过滤器/流日志中的名称一致。
TLS(需要在 FlowCollector 上启用 TLS 跟踪):
- TLSVersion、TLSCipherSuite、TLSGroup、TLSTypes
DNS:
- DnsName、DnsFlagsResponseCode、DnsErrno
数据包丢弃:
- PktDropLatestState、PktDropLatestDropCause
网络 / K8s(单侧细分;搭配 src/dst 过滤器使用):
- Proto、SrcPort、DstPort、FlowDirection、Dscp
- SrcK8S_Namespace、DstK8S_Namespace、SrcK8S_Name、DstK8S_Name
- SrcK8S_Type、DstK8S_Type、SrcK8S_OwnerName、DstK8S_OwnerName
- SrcK8S_HostName、DstK8S_HostName、SrcK8S_Zone、DstK8S_Zone
- K8S_ClusterName、SrcK8S_NetworkName、DstK8S_NetworkName
将 aggregateBy 与 type 和 function 配对使用:
- 吞吐量:type=Bytes 或 Packets,function=rate
- 流数量:type=Flows,function=count 或 rate
- DNS 流量:type=DnsFlows,function=count
- DNS 延迟:type=DnsLatencyMs,function=avg、p90 或 max
- RTT:type=TimeFlowRttNs,function=avg、min 或 p90
- 丢弃:type=PktDropPackets 或 PktDropBytes,function=rate
示例:
- aggregateBy=namespace, type=Bytes, function=rate
- aggregateBy=TLSVersion, type=Bytes, function=rate, filters=TLSTypes!~""
- aggregateBy=TLSGroup, type=Flows, function=count
- aggregateBy=DnsFlagsResponseCode, type=DnsFlows, function=count
- aggregateBy=PktDropLatestState, type=PktDropPackets, function=rate, packetLoss=dropped
- aggregateBy=resource, type=Bytes, function=rate, namespace=netobserv
dataSource(string) - 指标后端:auto(优先使用 Prometheus,回退到 Loki)、prom 或 loki。endTime(integer) - 时间范围的结束时间,以 Unix epoch 秒为单位。默认为当前时间。filters(string) - 传递给控制台插件的 NetObserv 过滤表达式(纯文本;客户端会对其进行 URL 编码)。
语法:
- key=value — 精确匹配;key=a,b — 同一 key 的多个值取 OR
- key~pattern — 正则表达式/包含匹配;key!~pattern — 非正则匹配
- key!=value — 不等于;key>number — 数值大于或等于(例如 Bytes>1000)
- 组内 AND:&(例如 SrcK8S_Namespace=default&Proto=6)
- 组间 OR:|(例如 SrcK8S_Name=pod-a|SrcK8S_Name=pod-b)
在可能的情况下,优先使用专用的 "namespace" 参数指定命名空间范围。 使用 Kubernetes 列表工具(namespaces、pods、deployments 等)发现过滤值。
常见 Kubernetes 字段(Src/Dst 前缀相互对应):
- SrcK8S_Namespace、DstK8S_Namespace、SrcK8S_Name、DstK8S_Name
- SrcK8S_Type、DstK8S_Type(例如 Pod、Service、Node)
- SrcK8S_OwnerName、DstK8S_OwnerName、SrcK8S_OwnerType、DstK8S_OwnerType(适用于 Deployment、StatefulSet 等)
- SrcK8S_HostName、DstK8S_HostName、SrcK8S_Zone、DstK8S_Zone、K8S_ClusterName、UDN
网络与流量:
- SrcAddr、DstAddr(IP)、SrcPort、DstPort、Proto(IANA 编号,例如 6=TCP、17=UDP)
- FlowDirection(0=Ingress,1=Egress,2=Inner)、Bytes、Packets、Dscp、Flags
数据包丢弃(通常搭配 recordType flowLog 和 packetLoss dropped/hasDrops):
- PktDropPackets、PktDropBytes、PktDropLatestState、PktDropLatestDropCause
DNS:
- DnsName、DnsId、DnsLatencyMs、DnsErrno、DnsFlagsResponseCode 示例:
- SrcK8S_Namespace=openshift-netobserv&SrcK8S_Name~my-app
- Proto=6&DstPort=443
- SrcK8S_Name=pod-a|SrcK8S_Name=pod-b
function(string) - 聚合函数。groups(string) - 当 aggregateBy 为拓扑范围时,可选的逗号分隔父级范围。 添加额外的标签维度(例如,按集群或区域细分命名空间结果)。 当 aggregateBy 已经是原始流字段(例如 TLSVersion)时,此项会被忽略或作用有限;请改用过滤器。
单一范围:
- clusters、networks、zones、hosts、namespaces、owners
组合范围(使用 +,不要加空格):
- clusters+zones、clusters+hosts、clusters+namespaces、clusters+owners
- zones+hosts、zones+namespaces、zones+owners
- hosts+namespaces、hosts+owners
- namespaces+owners
- networks+zones、networks+hosts、networks+namespaces、networks+owners
示例:
- aggregateBy=namespace, groups=clusters
- aggregateBy=resource, groups=namespaces
- aggregateBy=owner, groups=zones,hosts
limit(integer) - 返回的流记录最大数量。默认值为 100。namespace(string) - 将结果限制为源或目标命名空间匹配的流(dev 范围的 Loki 租户)。packetLoss(string) - 丢包过滤器。rateInterval(string) - Prometheus 速率间隔(例如 1m、5m)。recordType(string) - 流记录类型过滤器。startTime(integer) - 时间范围的起始时间,以 Unix 纪元秒数表示。设置后会覆盖 timeRange。step(string) - 查询分辨率步长(例如 30s、1m)。timeRange(integer) - 未指定 startTime 时的回溯窗口,单位为秒。默认值为 300。type(string) - 要聚合的指标类型。
可观测性/日志
-
loki_list_instances - 列出 Kubernetes 集群中可用的 LokiStack 实例。 使用由 Loki Operator 管理的堆栈时,请先调用此工具,以便向其他 Loki 工具传入 lokiNamespace 和 lokiName。
-
loki_label_names - 列出指定时间范围内可用的 Loki 标签名称。在编写 LogQL 查询前使用此工具。
end(string) - 结束时间,格式为 RFC3339、Unix 时间戳、NOW 或相对于 NOW 的表达式(可选)。lokiName(string) - LokiStack 的名称。使用 loki_list_instances 查找有效值。lokiNamespace(string) - LokiStack 所在的 Kubernetes 命名空间。使用 loki_list_instances 查找有效值。start(string) - 开始时间,格式为 RFC3339、Unix 时间戳、NOW 或相对于 NOW 的表达式(可选)。tenant(string) - Loki 租户 ID(X-Scope-OrgID)。对于 LokiStack 网关模式(例如 openshift-network),此参数会选择/api/logs/v1/<tenant>路径;对于 openshift-network,请使用network。
-
loki_label_values - 列出 Loki 标签键的可能取值。使用此工具在 LogQL 中构造精确的标签匹配器。
end(string) - 结束时间,格式为 RFC3339、Unix 时间戳、NOW 或相对于 NOW 的表达式(可选)。label(string) (必填) - 要检查的标签键(例如 namespace、pod、container)。lokiName(string) - LokiStack 的名称。使用 loki_list_instances 查找有效值。lokiNamespace(string) - LokiStack 所在的 Kubernetes 命名空间。使用 loki_list_instances 查找有效值。start(string) - 开始时间,格式为 RFC3339、Unix 时间戳、NOW 或相对于 NOW 的表达式(可选)。tenant(string) - Loki 租户 ID(X-Scope-OrgID)。对于 LokiStack 网关模式(例如 openshift-network),此参数会选择/api/logs/v1/<tenant>路径;对于 openshift-network,请使用network。
-
loki_query_range - 执行 Loki LogQL 范围查询,并返回匹配的日志流和日志行。
可观测性/指标
- list_metrics - 必须首先执行:列出 Prometheus 中所有可用的指标名称。
在使用任何其他查询工具之前,必须调用此工具。
对于每个可观测性问题,都必须首先调用此工具,以便:
- 发现此环境中实际存在的指标
- 找到查询中要使用的确切指标名称
- 避免查询不存在的指标
- 始终应提供
name_regex参数,并尽可能猜测指标名称的形式。 - 不要在
name_regex参数中使用.*或.+之类的通用正则表达式。请使用kube.*、node.*等具体模式。
正则表达式模式指南:
- Prometheus 指标通常带有前缀(例如,
prometheus_tsdb_head_series、kube_pod_status_phase) - 若要匹配包含某个子字符串的指标,请使用通配符:
.*tsdb.*可匹配prometheus_tsdb_head_series - 不使用通配符时,模式将进行精确匹配:
tsdb只匹配名称恰好为tsdb的指标(这种情况很少见) - 常见模式:
kube_pod.*(Pod)、.*memory.*(内存相关)、node_.*(节点指标) - 如果没有结果,请尝试在搜索词前后添加
.*
绝不要跳过此步骤。绝不要猜测指标名称。不同环境中的指标名称各不相同。
调用此工具后:
- 在返回的列表中搜索相关指标
- 在后续查询中使用找到的确切指标名称
- 如果没有相关指标,请告知用户
-
name_regex(string) (必填) - 用于筛选指标名称的正则表达式模式。重要:指标名称通常带有前缀(例如,prometheus_tsdb_head_series)。使用通配符匹配子字符串:.*tsdb.*可匹配任何包含tsdb的指标,而tsdb只匹配名称恰好为tsdb的指标。示例:http_.*(以 http_ 开头)、.*memory.*(包含 memory)、node_.*(以 node_ 开头)。此参数为必填项。不要传入.*或.+之类的通用正则表达式。 -
execute_instant_query - 执行 PromQL 即时查询,以获取当前值或某个时间点的值。
前提条件:必须先调用 list_metrics,以确认指标存在。
使用场景:
- 查询当前状态:“当前错误率是多少?”
- 查询某个时间点的快照:“有多少个 Pod 正在运行?”
- 查询最新值:“哪些 Pod 处于 Pending 状态?”
query 参数必须使用 list_metrics 返回的指标名称。
-
query(string) (必填) - PromQL 查询字符串,使用经 list_metrics 验证的指标名称 -
time(string) - 评估时间,格式为 RFC3339 或 Unix 时间戳。省略或使用 'NOW' 表示当前时间。 -
execute_range_query - 执行 PromQL 范围查询,以获取一段时间内的时间序列数据。
前提条件:必须先调用 list_metrics,以确认指标存在。 适用场景:
- 随时间变化的趋势:“过去 1 小时的 CPU 使用率是多少?”
- 速率计算:“每秒有多少个请求?”
- 历史分析:“过去 5 分钟内是否发生过重启?”
时间参数:
- 'duration':从现在往回查询的时长(例如,“5m”、“1h”、“24h”)
- 'step':数据点的分辨率(例如,时长为 1 小时时使用“1m”,时长为 24 小时时使用“5m”)
'query' 参数必须使用 list_metrics 返回的指标名称。
-
duration(string) - 从现在往回查询的时长(例如,'1h'、'30m'、'1d'、'2w')(可选) -
end(string) - 结束时间,格式为 RFC3339 或 Unix 时间戳(可选)。当前时间请使用NOW。 -
query(string) (必填) - PromQL 查询字符串,使用通过 list_metrics 验证的指标名称 -
start(string) - 开始时间,格式为 RFC3339 或 Unix 时间戳(可选) -
step(string) (必填) - 查询分辨率步长(例如,'15s'、'1m'、'1h')。请根据时间范围选择:较短的范围使用较小的步长。 -
show_timeseries - 将结果显示为交互式时间序列图表。
此工具的工作方式与 execute_range_query 类似,但会在 UI 客户端中将结果渲染为可视化图表。 当用户希望查看时间序列数据的图表或可视化内容,并通过图表提供答案时,请使用此工具。 在所有其他 Prometheus 工具调用完成并确定结果后,将 show_timeseries 作为最后一个工具调用。
时间参数:
- 'duration':从现在往回查询的时长(例如,“5m”、“1h”、“24h”)
- 'step':数据点的分辨率(例如,时长为 1 小时时使用“1m”,时长为 24 小时时使用“5m”)
- 'title':描述性图表标题(例如,“过去 1 小时的 API 错误率”)
- 'description':对图表含义或上下文的说明(例如,“显示按 Pod 拆分的每秒 HTTP 5xx 错误率”)
'query' 参数必须是范围查询,并且必须使用 list_metrics 返回的指标名称。
-
description(string) - 对图表含义或上下文的说明(例如,'显示按 Pod 拆分的每秒 HTTP 5xx 错误率')。提供后会显示在标题下方。 -
duration(string) - 从现在往回查询的时长(例如,'1h'、'30m'、'1d'、'2w')(可选) -
end(string) - 结束时间,格式为 RFC3339 或 Unix 时间戳(可选)。当前时间请使用NOW。 -
query(string) (必填) - PromQL 查询字符串,使用通过 list_metrics 验证的指标名称 -
start(string) - 开始时间,格式为 RFC3339 或 Unix 时间戳(可选) -
step(string) (必填) - 查询分辨率步长(例如,'15s'、'1m'、'1h')。请根据时间范围选择:较短的范围使用较小的步长。 -
title(string) - 描述查询内容的易读图表标题(例如,'过去 1 小时的 API 错误率')。提供后会显示在图表上方。 -
get_label_names - 获取可用于筛选指标的所有标签名称(维度)。
适用场景(调用 list_metrics 后):
- 了解如何筛选指标(按命名空间、Pod、服务等)
- 在 PromQL 查询中构造标签匹配器之前
'metric' 参数应使用 list_metrics 输出中的指标名称。
-
end(string) - 标签发现的结束时间,格式为 RFC3339 或 Unix 时间戳(可选,默认为现在) -
metric(string) - 要获取标签名称的指标名称(来自 list_metrics)。留空则获取所有指标。 -
start(string) - 标签发现的开始时间,格式为 RFC3339 或 Unix 时间戳(可选,默认为 1 小时前) -
get_label_values - 获取特定标签的所有唯一值。
适用场景(调用 list_metrics 和 get_label_names 后):
-
查找用于筛选的确切标签值(命名空间名称、Pod 名称等)
-
在构造查询之前查看有哪些值 应使用
list_metrics输出中的指标名称作为metric参数。end(string)- 标签值发现的结束时间,格式为 RFC3339 或 Unix 时间戳(可选,默认为当前时间)label(string)(必填)- 要获取其值的标签名称(来自 get_label_names)metric(string)- 指标名称(来自 list_metrics),用于限定标签值的范围。留空表示所有指标。start(string)- 标签值发现的开始时间,格式为 RFC3339 或 Unix 时间戳(可选,默认为 1 小时前)
-
get_series - 获取与选择器匹配的时间序列并预览基数。
何时使用(可选,在调用 list_metrics 后):
- 查询前验证标签筛选条件是否匹配预期的时间序列
- 检查基数,避免查询缓慢
基数指南:
- 少于 100 个时间序列:安全
- 100–1000 个:通常没问题
- 超过 1000 个:添加更多标签筛选条件
选择器应使用 list_metrics 输出中的指标名称。
-
end(string)- 时间序列发现的结束时间,格式为 RFC3339 或 Unix 时间戳(可选,默认为当前时间) -
matches(string)(必填)- 使用list_metrics中指标名称的 PromQL 时间序列选择器 -
start(string)- 时间序列发现的开始时间,格式为 RFC3339 或 Unix 时间戳(可选,默认为 1 小时前) -
get_alerts - 从 Alertmanager 获取告警。
何时使用:
- 调查问题时从此处开始:如果用户询问故障、错误、失败、服务中断、服务宕机,或集群中出现的任何异常情况
- 用户提到特定告警名称时,使用此工具获取该告警的完整标签(namespace、pod、service 等),这些信息对于使用其他工具进一步调查至关重要
- 查看集群中当前正在触发的告警
- 检查哪些告警处于活动、已静默或已抑制状态
- 在深入查看指标或日志之前了解当前情况
调查提示:告警标签通常包含使用 Prometheus 工具执行定向查询所需的确切标识符(pod 名称、namespace、job 名称)。
筛选:
- 使用 'active' 仅筛选活动告警(未解决)
- 使用 'silenced' 筛选已静默的告警
- 使用 'inhibited' 筛选已抑制的告警
- 使用 'filter' 应用标签匹配器(例如:"alertname=HighCPU")
- 使用 'receiver' 按接收器名称筛选告警
所有筛选参数均为可选。不使用筛选条件时,将返回所有告警。
-
active(boolean)- 仅筛选活动告警(true/false,可选) -
filter(string)- 用于筛选告警的标签匹配器(例如:'alertname=HighCPU',可选) -
inhibited(boolean)- 仅筛选已抑制的告警(true/false,可选) -
receiver(string)- 用于筛选告警的接收器名称(可选) -
silenced(boolean)- 仅筛选已静默的告警(true/false,可选) -
unprocessed(boolean)- 仅筛选尚未处理的告警(true/false,可选) -
get_silences - 从 Alertmanager 获取静默规则。
何时使用:
- 查看当前处于静默状态的告警
- 检查活动、待处理或已过期的静默规则
- 调查特定告警未触发通知的原因
筛选:
- 使用 'filter' 应用标签匹配器,以查找特定的静默规则
静默规则根据标签匹配器临时静默告警。此工具可帮助你了解环境中当前处于静默状态的内容。
filter(string)- 用于筛选静默规则的标签匹配器(例如:'alertname=HighCPU',可选)
observability/otelcol
-
otelcol_list_components - 列出指定版本的可用 OpenTelemetry Collector 组件(接收器、处理器、导出器、扩展和连接器)。
version(string)- Collector 版本(例如:'v0.100.0')。默认为最新可用版本。
-
otelcol_get_component_schema - 获取 OpenTelemetry Collector 组件配置选项的 JSON 架构。
component_name(string) (必填) - 来自 otelcol_list_components 的组件名称(例如:'otlp'、'batch'、'debug')component_type(string) (必填) - 组件类型:receiver、processor、exporter、extension、connectorversion(string) - Collector 版本(例如:'v0.100.0')。默认为最新可用版本。
-
otelcol_validate_config - 根据 JSON 架构验证 OpenTelemetry Collector 组件配置。
component_name(string) (必填) - 来自 otelcol_list_components 的组件名称(例如:'otlp'、'batch'、'debug')component_type(string) (必填) - 组件类型:receiver、processor、exporter、extension、connectorconfig(string) (必填) - 要验证的配置,以 YAML 或 JSON 字符串形式提供format(string) - 配置格式:'yaml'(默认)或 'json'version(string) - Collector 版本(例如:'v0.100.0')。默认为最新可用版本。
-
otelcol_get_versions - 列出可用的 OpenTelemetry Collector 版本并确定最新版本。
可观测性/追踪
-
tempo_list_instances - 列出 Kubernetes 集群中所有可用的 Tempo 实例。 在使用其他 Tempo 工具之前,请先调用此工具以发现可用的 Tempo 实例, 因为返回的 namespace、name 和 tenant 值是所有其他 Tempo 工具的必需参数。 请始终以表格形式打印此工具的输出。
-
tempo_get_trace_by_id - 根据 trace ID 从 Tempo 检索单条分布式追踪。 返回包含所有 span 的完整追踪,包括服务名称、操作名称、持续时间和属性。 如果已有特定的 trace ID(例如来自搜索结果或日志),请使用此工具。
end(string) - 时间范围的可选结束时间,采用 RFC 3339 格式,例如 "2025-01-02T00:00:00Z"。 缩小时间范围以提升查询性能。start(string) - 时间范围的可选开始时间,采用 RFC 3339 格式,例如 "2025-01-01T00:00:00Z"。 缩小时间范围以提升查询性能。tempoName(string) (必填) - 要查询的 Tempo 实例名称。使用 tempo_list_instances 发现可用的实例名称。tempoNamespace(string) (必填) - 部署 Tempo 实例的 Kubernetes 命名空间。使用 tempo_list_instances 发现可用的命名空间。tenant(string) - 要查询的租户。对于多租户实例,此参数为必填项。使用 tempo_list_instances 发现每个实例可用的租户。traceid(string) (必填) - 要检索的 trace ID,例如 "26dad4a0e2b0dd9a440dd5ff203a24a4"。
-
tempo_search_traces - 使用 TraceQL 搜索 Tempo 中的分布式追踪。 使用此工具查找符合特定条件的追踪,例如服务名称、HTTP 状态码、持续时间或其他 span 或资源属性。
重要——“慢”或“长”追踪请求:不要猜测持续时间阈值。 首先调用此工具,不添加持续时间筛选条件,以确定延迟基线;然后使用该基线设置合理的阈值。 这两个步骤都必须执行——不要跳过第二次带持续时间筛选条件的搜索。 仅当用户提供了明确的持续时间(例如“查找耗时超过 2s 的追踪”)时,才跳过此两步流程。
end(string) - 时间范围的结束时间,采用 RFC 3339 格式,例如 "2025-01-01T00:00:00Z"。 当前时间请使用 "NOW"。 要搜索完整时间范围,必须同时提供 start 和 end;如果省略,则只搜索最近一小段时间的数据。limit(integer) - 返回的追踪数量上限。如果未指定,则默认为服务端限制。query(string) (必填) - TraceQL 查询表达式。格式: query: "{ <filters joined by &&> }"
重要:status 的值(error、ok、unset)是关键字,不是字符串。请写 status=error,绝不要写 status="error"。
运算符:=、!=、>、<、>=、<=
常见属性:
- resource.service.name(服务名称)
- resource.k8s.namespace.name(Kubernetes 命名空间)
- resource.k8s.deployment.name(Kubernetes 部署)
- resource.k8s.statefulset.name(Kubernetes StatefulSet)
- resource.k8s.daemonset.name(Kubernetes DaemonSet)
- resource.k8s.replicaset.name(Kubernetes ReplicaSet)
- resource.k8s.pod.name(Kubernetes Pod)
- resource.k8s.container.name(Kubernetes 容器)
- resource.k8s.job.name(Kubernetes Job)
- resource.k8s.cronjob.name(Kubernetes CronJob)
- resource.k8s.node.name(Kubernetes 节点)
- resource.k8s.cluster.name(Kubernetes 集群)
- span.http.response.status_code(HTTP 响应码)
- span.http.request.method(HTTP 方法,例如 GET、POST)
- span.url.full(请求 URL)
- name(span 名称/操作名称,例如 "GET /api/users")
- duration(跟踪时长,例如 100ms、2s)
- status(跟踪状态:ok、error、unset)
注意:较旧的插桩可能使用旧版 HTTP 属性名称(例如使用 span.http.status_code 代替 span.http.response.status_code)。 如果查询没有返回结果,请尝试使用 tempo_search_tags 检查存在哪些属性。
重要:
- 始终将筛选条件括在花括号 { } 中。
- 不要使用 SQL、PromQL 或 Lucene 语法。
- 不要省略属性名称中的 "resource." 或 "span." 前缀。
- 当用户提到 Kubernetes 资源类型(deployment、pod、namespace 等)时,请使用相应的 resource.k8s.* 属性,而不是 resource.service.name。
示例:
- { resource.service.name="frontend" }
- { resource.k8s.deployment.name="checkout" && span.http.response.status_code>=500 }
- { status=error && duration>2s }
如果不确定要按哪些属性筛选,请先使用 tempo_search_tags 查找可用属性,再构建查询。
-
spss(integer) - 每条 trace 最多返回的匹配 span 数量。 -
start(string) - 时间范围的起始时间,采用 RFC 3339 格式,例如 "2025-01-01T00:00:00Z"。 使用 "NOW" 表示当前时间。 应同时提供 start 和 end,才能搜索完整时间范围;如果省略,则只搜索近期数据中的一个较小时间窗口。 -
tempoName(string) (必填) - 要查询的 Tempo 实例名称。使用 tempo_list_instances 查找可用的实例名称。 -
tempoNamespace(string) (必填) - 部署 Tempo 实例的 Kubernetes 命名空间。使用 tempo_list_instances 查找可用的命名空间。 -
tenant(string) - 要查询的租户。对于多租户实例,此参数为必填项。使用 tempo_list_instances 查找每个实例的可用租户。 -
tempo_search_tags - 列出 Tempo 中按作用域分组的可用标签名称(属性键)。 使用此工具可发现可用于通过 tempo_search_traces 构建 TraceQL 查询的属性。 例如,此工具可能会显示诸如“service.name”(位于“resource”作用域)或“http.response.status_code”(位于“span”作用域)之类的标签名称。 若要在 TraceQL 查询中使用这些标签,请在前面加上作用域,例如“resource.service.name”或“span.http.response.status_code”。
end(string) - 时间范围的可选结束时间(采用 RFC 3339 格式,例如“2025-01-01T00:00:00Z”),用于筛选列出标签时纳入考虑的追踪。limit(integer) - 每个作用域最多返回的标签名称数量。maxStaleValues(integer) - 搜索提前停止前,连续未发现新标签名称的数据块数量上限。值越大,搜索越全面,但速度越慢。query(string) - 可选的 TraceQL 查询,用于筛选列出标签时纳入考虑的追踪, 例如,{ resource.service.name="payment-service" },只显示来自“payment-service”服务的追踪中存在的标签。scope(string) - 将标签筛选到特定作用域。可选值: “resource”(服务级属性,例如 service.name), “span”(单个 span 的属性,例如 http.response.status_code), “intrinsic”(内置字段,例如 duration、status、name)。 若省略,则返回所有作用域中的标签。start(string) - 时间范围的可选起始时间(采用 RFC 3339 格式,例如“2025-01-01T00:00:00Z”),用于筛选列出标签时纳入考虑的追踪。tempoName(string) (required) - 要查询的 Tempo 实例名称。使用 tempo_list_instances 可发现可用的实例名称。tempoNamespace(string) (required) - 部署 Tempo 实例的 Kubernetes 命名空间。使用 tempo_list_instances 可发现可用的命名空间。tenant(string) - 要查询的租户。对于多租户实例,此参数为必填项。使用 tempo_list_instances 可发现每个实例的可用租户。
-
tempo_search_tag_values - 列出 Tempo 中某个特定标签(属性键)的已知值。 使用此工具可发现某个标签对应的值,例如查找所有服务名称(“resource.service.name”的值)或所有 HTTP 方法(“span.http.request.method”的值)。 这有助于通过 tempo_search_traces 构建准确的 TraceQL 查询。
end(string) - 时间范围的可选结束时间(采用 RFC 3339 格式,例如“2025-01-01T00:00:00Z”),用于筛选列出值时纳入考虑的追踪。limit(integer) - 最多返回的标签值数量。maxStaleValues(integer) - 搜索提前停止前,连续未发现新值的数据块数量上限。值越大,搜索越全面,但速度越慢。query(string) - 可选的 TraceQL 查询,用于筛选列出值时纳入考虑的追踪, 例如,{ resource.service.name="payment-service" },只显示来自“payment-service”服务的追踪中的标签值。start(string) - 时间范围的可选起始时间(采用 RFC 3339 格式,例如“2025-01-01T00:00:00Z”),用于筛选列出值时纳入考虑的追踪。tag(string) (required) - 要获取值的完整限定标签名称,包含作用域前缀,例如“resource.service.name”或“span.http.response.status_code”。 使用 tempo_search_tags 可发现可用的标签名称。tempoName(string) (required) - 要查询的 Tempo 实例名称。使用 tempo_list_instances 可发现可用的实例名称。tempoNamespace(string) (required) - 部署 Tempo 实例的 Kubernetes 命名空间。使用 tempo_list_instances 可发现可用的命名空间。tenant(string) - 要查询的租户。对于多租户实例,此参数为必填项。使用 tempo_list_instances 可发现每个实例的可用租户。
tekton
- **tekton_pipeline_start** - 通过创建引用 Tekton Pipeline 的 PipelineRun 来启动 Tekton Pipeline - `name` (`string`) **(required)** - 要启动的 Pipeline 名称 - `namespace` (`string`) - Pipeline 所属的命名空间 - `params` (`object`) - 传递给 Pipeline 的参数值。键为参数名称;值可以是字符串、字符串数组或对象(字符串到字符串的映射),具体取决于 Pipeline 规范中定义的参数类型-
tekton_pipelinerun_lifecycle - 管理 Tekton PipelineRun 的生命周期:使用相同的规范重新启动它,或将 spec.status 设为 Cancelled 来取消它。
action(string) (required) - 要执行的生命周期操作:'restart' 使用相同的规范创建新的 PipelineRun;'cancel' 将 spec.status 设为 Cancelled。name(string) (required) - 要管理的 PipelineRun 名称namespace(string) - PipelineRun 所属的命名空间
-
tekton_pipelinerun_logs - 获取 Tekton PipelineRun 所拥有的所有 TaskRun 的日志。无需手动查找 Pod,即可使用此工具检查 PipelineRun 的执行输出。
name(string) (required) - 要获取日志的 PipelineRun 名称namespace(string) - PipelineRun 所属的命名空间step(string) - 要包含在匹配的 TaskRun 中的步骤名称tail(integer) - 从每个容器日志末尾获取的行数(默认值:100)task(string) - 用于筛选的 Pipeline 任务名称(tekton.dev/pipelineTask 标签)
-
tekton_task_start - 通过创建引用 Tekton Task 的 TaskRun 来启动 Tekton Task
name(string) (required) - 要启动的 Task 名称namespace(string) - Task 所属的命名空间params(object) - 传递给 Task 的参数值。键为参数名称;值可以是字符串、字符串数组或对象(字符串到字符串的映射),具体取决于 Task 规范中定义的参数类型
-
tekton_taskrun_restart - 使用相同的规范创建新的 TaskRun,以重新启动 Tekton TaskRun
name(string) (required) - 要重新启动的 TaskRun 名称namespace(string) - TaskRun 所属的命名空间
-
tekton_taskrun_logs - 通过解析 Tekton TaskRun 底层的 Pod,获取其日志
name(string) (required) - 要获取日志的 TaskRun 名称namespace(string) - TaskRun 所属的命名空间step(string) - 要包含的步骤名称。若省略,则返回所有步骤和 sidecar 的日志tail(integer) - 从日志末尾获取的行数(可选,默认值:100)
某些工具需要额外的集群 API、资源实例或权限。请参阅工具要求,了解可用性前提条件。
提示词
core
- cluster-health-check - 对 Kubernetes/OpenShift 集群进行全面的健康状况评估
namespace(string) - 可选,用于限定健康检查范围的命名空间(默认值:所有命名空间)check_events(string) - 是否包含近期警告/错误事件(true/false,默认值:true)
kiali
-
mesh-list-applications - 列出网格命名空间中的应用
namespace(string) - 可选,用于筛选应用的命名空间(默认值:所有命名空间)
-
list-istio-config - 列出网格命名空间中的 Istio 配置资源
namespace(string) - 可选,用于筛选 Istio 配置的命名空间(默认值:所有命名空间)
-
mesh-list-namespaces - 列出所有命名空间及其 sidecar 注入状态和 Istio 标签
-
mesh-list-services - 列出网格命名空间中的服务
namespace(string) - 可选,用于筛选服务的命名空间(默认值:所有命名空间)
-
mesh-list-workloads - 列出网格命名空间中的工作负载
namespace(string) - 可选,用于筛选工作负载的命名空间(默认值:所有命名空间)
-
mesh-topology - 显示服务网格拓扑,包括控制平面组件和集群连接情况
-
traffic-topology - 分析服务网格流量拓扑,展示服务依赖关系、流量流向和通信模式
namespaces(string) (required) - 要纳入图表的命名空间列表,以逗号分隔;或填写 'all' 以纳入所有可访问的网格命名空间
-
service-troubleshoot - 使用日志、追踪和 Istio 配置排查服务错误,找出根本原因
namespace(string) (required) - 服务部署所在的命名空间service(string) (required) - 要排查的服务名称workload(string) - 可选,要获取日志的工作负载或 Pod 名称(如省略,则使用服务名称)
-
trace-analysis - 分析服务的分布式追踪,以找出延迟瓶颈、错误来源和耗时较长的 Span
namespace(string) (required) - 服务部署所在的命名空间service(string) (required) - 要调查追踪信息的服务名称
-
istio-config-review - 检查并验证命名空间中的 Istio 配置,查找配置错误和违反最佳实践的情况
namespace(string) (required) - 要检查 Istio 配置的命名空间
kubevirt
-
vm-troubleshoot - 生成分步故障排查指南,用于诊断 KubeVirt VirtualMachine 问题
namespace(string) (required) - 要排查的 VirtualMachine 所在的命名空间name(string) (required) - 要排查的 VirtualMachine 名称
-
windows-golden-image - 指导如何通过 KubeVirt windows-efi-installer Tekton 流水线创建 Windows 黄金镜像
winImageDownloadURL(string) (required) - Microsoft Windows ISO 下载 URL(必须以 https:// 开头)namespace(string) - PipelineRun 的目标命名空间windowsVersion(string) - Windows 版本:10、11、2k22(默认)或 2k25pipelineVersion(string) - 流水线版本(默认:latest)。如有需要,可使用特定版本,例如 0.25.0
-
hco-status - 生成 HyperConverged Cluster Operator (HCO) 状态报告,该 Operator 管理 KubeVirt 及相关组件
tekton
- pipeline-troubleshoot - 收集 PipelineRun 状态、其 Pipeline 定义、TaskRun、失败或出错步骤的日志、警告事件、Pipeline-as-Code Repository,以及 TektonConfig 上下文,用于排查 Tekton 问题
namespace(string) (required) - 要排查的 PipelineRun 所在的命名空间name(string) (required) - 要排查的 PipelineRun 名称
资源
资源模板
Helm Chart
Helm Chart 可简化 Kubernetes MCP 服务的部署。
helm install kubernetes-mcp-server oci://ghcr.io/containers/charts/kubernetes-mcp-server
有关 OAuth、遥测和资源限制等配置选项,请参阅 chart README 和 values.yaml。
💬 社区
加入讨论,与其他用户和贡献者交流:
🧑💻 开发
使用 mcp-inspector 运行
编译项目,并使用 mcp-inspector 运行 Kubernetes MCP 服务,以检查 MCP 服务。
# Compile the project
make build
# Run the Kubernetes MCP server with mcp-inspector
npx @modelcontextprotocol/inspector@latest $(pwd)/kubernetes-mcp-server
mcp-name: io.github.containers/kubernetes-mcp-server
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。