你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
AKS 模型上下文协议(MCP)服务器使 AI 助手能够清晰、安全和控制地与 Azure Kubernetes 服务(AKS)群集进行交互。 它充当 AI 工具(如 GitHub Copilot、Claude 和其他 MCP 兼容的 AI 助手)和 AKS 之间的桥梁,将自然语言请求转换为 AKS作,并采用 AI 工具可以理解的格式返回结果。
AKS MCP 服务器使用 Azure SDK 连接到 Azure,并提供 AI 助手可用于与 AKS 资源交互的一组工具。 这些工具允许 AI 代理执行如下任务:
- 故障排除和诊断
- 分析群集的运行状况
- 操作 (CRUD) AKS 资源
- 检索与 AKS 群集(VNet、子网、网络安全组(NSG)、路由表等相关的详细信息。
- 启用最佳做法和建议的功能
- 管理 Azure Fleet 操作以支持多集群环境
AKS MCP 服务器是完全开源项目,GitHub 存储库中提供了示例模板和 Helm 配置。
何时使用 AKS MCP 服务器
AKS MCP 服务器可与任何兼容的 AI 助手一起使用,包括 AKS 的代理 CLI 和 Microsoft Copilot。 常见用例包括:
- 询问 AI 助手问题,例如:
- “为什么这些 Pod 在此群集中待处理?”
- “我的 AKS 群集的网络配置是什么?”
- 创建一个计划,将 nginx 负载部署到具有 app=frontend 标签的群集。
- 允许 AI 工具:
- 读取群集状态和配置
- 检查指标、事件和日志
- 在 Kubernetes 和 Azure 资源中关联信号
- 直接在群集上应用更改并启用新功能
通过 AKS MCP 服务器执行的所有操作都受到 Kubernetes 基于角色的访问控制(RBAC)和 Azure RBAC 的约束。 默认情况下,AKS MCP 服务器在访问群集和 Azure 资源时继承用户的权限。 若要自定义 AKS MCP 服务器的角色和权限,请使用内置的 RBAC 控件部署远程 AKS MCP 服务器模式。
可用工具
AKS MCP 服务器提供了一套全面的工具,用于与 AKS 群集和关联的资源进行交互。 默认情况下,服务器使用统一的工具(call_az用于 Azure 操作;call_kubectl用于 Kubernetes 操作),为与 Kubernetes 和 Azure 资源交互提供更灵活的接口。
可以为 AKS MCP 服务器启用三组权限:只读(默认)、读写和管理员。某些工具需要读写或管理员权限,以执行诸如在群集上部署调试pod或进行CRUD操作之类的操作。 若要为 AKS-MCP 服务器启用读写或管理员权限,请将 访问级别 参数添加到 MCP 配置文件:
- 导航到 mcp.json 文件,或转到 MCP:列出服务器 -> AKS-MCP -> 在 命令面板中 显示配置详细信息(对于 VS Code;
Ctrl+Shift+P在 Windows/Linux 或Cmd+Shift+PmacOS 上)。 - 在 AKS-MCP 的“args”部分中,添加以下参数:“--access-level”、“readwrite”或“admin”
例如:
"args": [
"--transport",
"stdio",
"--access-level",
"readwrite"
]
这些工具旨在通过统一接口提供全面的功能:
Azure CLI 操作(统一的工具)
工具:call_az
用于直接执行 Azure CLI 命令的统一工具。 此工具提供了一个灵活的接口来运行任何 Azure CLI 命令。
参数:
-
cli_command:要执行的完整 Azure CLI 命令。 例如,az aks list --resource-group myRG或az vm list --subscription <sub-id>。 -
timeout:可选超时时间(单位:秒,默认值:120)
示例用法:
{
"cli_command": "az aks list --resource-group myResourceGroup --output json"
}
访问控制:
- readonly:仅允许读取操作
- readwrite/admin:允许读取和写入作业
重要
命令必须是简单的 Azure CLI 调用,没有管道(|)、重定向(>、 <、命令替换或分号)等 shell 功能(;))。
Kubernetes操作(统一工具)
统一 kubectl 工具
工具:call_kubectl
用于直接执行 kubectl 命令的统一工具。 此工具提供了一个灵活的接口,用于运行具有完整参数支持的任何 kubectl 命令。
参数:
-
args:kubectl 命令参数。 例如,get pods、describe node mynode或apply -f deployment.yaml。
示例用法:
{
"args": "get pods -n kube-system -o wide"
}
访问控制: 操作会根据配置的访问级别进行限制:
- 只读:只允许读取操作(获取、描述、日志等)
- readwrite/admin:所有操作,包括更改命令(创建、删除、应用等)
Helm
工具:call_helm
Kubernetes 的 Helm 包管理器。
Cilium
工具:call_cilium
Cilium CLI 用于基于 eBPF 的网络和安全性。
哈 勃
工具:call_hubble
Cilium 的哈勃网络可观测性。
网络资源管理
工具:aks_network_resources
统一工具,用于获取 AKS 群集使用的 Azure 网络资源信息。
可用资源类型:
-
all:获取有关所有网络资源的信息 -
vnet:虚拟网络信息 -
subnet:子网信息 -
nsg:网络安全组信息 -
route_table:路由表信息 -
load_balancer:负载均衡器信息 -
private_endpoint:专用终结点信息
监视和诊断
工具:aks_monitoring
适用于 AKS 群集的 Azure 监视和诊断操作的统一工具。
可用操作:
-
metrics:列出资源的指标值 -
resource_health:检索 AKS 群集的资源健康事件 -
app_insights:针对 Application Insights 遥测数据执行 KQL 查询 -
diagnostics:检查 AKS 群集是否已配置诊断设置 -
control_plane_logs:使用安全约束和时间范围验证查询 AKS 控制平面日志
计算资源
工具:get_aks_vmss_info
- 获取 AKS 群集中虚拟机规模集(节点池)的详细配置
车队管理
工具:az_fleet
适用于多群集方案的综合 Azure 机群管理。
可用操作:
- 机队操作:列表、显示、创建、更新、删除、获取凭证
- 成员操作:列出、显示、创建、更新、删除
- 更新运行操作:列出、显示、创建、启动、停止、删除
- 更新策略操作:列出、显示、创建、删除
- ClusterResourcePlacement操作:列出、显示、获取、创建、删除
支持 Azure Fleet 管理和 Kubernetes ClusterResourcePlacement CRD 操作。
诊断检测器
工具:aks_detector
用于执行 AKS 诊断检测器操作的统一工具。
可用操作:
-
list:列出所有可用的 AKS 群集检测器 -
run:运行特定的 AKS 诊断检测器 -
run_by_category:在特定类别中运行所有检测器
参数:
-
operation(必需):执行操作(list、run或run_by_category) -
aks_resource_id(必需):AKS 群集资源 ID -
detector_name(运行run所需):要运行的检测器名称 -
category(run_by_category操作必需):检测器类别 -
start_time(用于run和run_by_category操作的必需信息): UTC ISO 格式的开始时间(过去 30 天内) -
end_time(用于run和run_by_category操作的必需项):UTC ISO 格式的结束时间(必须在过去 30 天内,且从开始时间起最多 24 小时)
可用类别:
- 最佳做法
- 群集和控制平面可用性和性能
- 连接问题
- 创建、升级、删除和缩放
- 弃用
- 标识和安全性
- 节点运行状况
- 存储
示例用法:
工具:run_detectors_by_category
{
"operation": "list",
"aks_resource_id": "/subscriptions/xxx/resourceGroups/xxx/providers/Microsoft.ContainerService/managedClusters/xxx"
}
{
"operation": "run",
"aks_resource_id": "/subscriptions/xxx/resourceGroups/xxx/providers/Microsoft.ContainerService/managedClusters/xxx",
"detector_name": "node-health-detector",
"start_time": "2025-01-15T10:00:00Z",
"end_time": "2025-01-15T12:00:00Z"
}
Azure 顾问
工具:aks_advisor_recommendation
检索和管理 AKS 群集的 Azure 顾问建议。
可用操作:
-
list:使用筛选选项列出建议 -
report:生成建议报告 - 筛选器选项:resource_group、cluster_names、类别(成本、高可用性、性能、安全性)、严重性(高、中、低)
实时可观测性
工具:inspektor_gadget_observability
使用 eBPF 的 Azure Kubernetes 服务 (AKS) 群集的实时可观测性工具。
可用的操作:
-
deploy:将 Inspektor 小工具部署到群集 -
undeploy:从集群中删除 Inspektor Gadget -
is_deployed:检查部署状态 -
run:运行一次性小工具 -
start:启动连续小工具 -
stop:停止运行小工具 -
get_results:检索小工具结果 -
list_gadgets:列出可用的小工具
可用的小工具:
-
observe_dns:监视 DNS 请求和响应 -
observe_tcp:监视 TCP 连接 -
observe_file_open:监视文件系统操作 -
observe_process_execution:监视进程执行 -
observe_signal:监视信号传送 -
observe_system_calls:监视系统调用 -
top_file:按 I/O操作排名靠前的文件 -
top_tcp:流量最多的 TCP 连接 -
tcpdump:捕获网络数据包
AKS MCP 服务器入门
AKS MCP 服务器有两种模式:本地和远程。 在本部分中,我们将介绍这两种模式的用例和安装过程。
本地 MCP 服务器
在本地模式下,MCP 服务器在本地计算机上运行,并使用开发人员的现有权限连接到 AKS。 此模式最适合使用 AKS 专业知识和工具快速设置本地 AI 代理,而无需任何群集端组件。 本地模式可以使用当前的群集上下文,并强制实施开发人员的 Kubernetes 和 Azure RBAC 权限。 默认情况下,本地 AKS MCP 服务器支持 STDIO 和 SSE 传输模式。
先决条件
在安装 AKS MCP 服务器之前,请设置 Azure CLI 并进行身份验证:
az login
AKS-MCP 入门的最简单方法是通过 适用于 VS Code 的 Azure Kubernetes 服务扩展。 AKS 扩展会自动处理二进制下载、更新和配置,确保始终具有具有最佳设置的最新版本。
步骤 1:安装 AKS 扩展
- 打开 VS Code 并转到“扩展”(
Ctrl+Shift+X在 Windows/Linux 或Cmd+Shift+XmacOS 上)。 - 搜索 Azure Kubernetes 服务。
- 安装官方 Microsoft AKS 扩展。
步骤 2:启动 AKS-MCP 服务器
- 打开 命令面板 (
Ctrl+Shift+P在 Windows/Linux 或Cmd+Shift+PmacOS 上)。 - 搜索并运行: AKS:设置 AKS MCP 服务器。
成功安装后,服务器会显示在 MCP 中:列出服务器 (通过命令面板)。 可以从那里启动 MCP 服务器或查看其状态。
步骤 3:开始使用 AKS-MCP
启动后,MCP 服务器会显示在 MCP Server: AKS MCP 下的 Copilot 对话助手:配置工具下拉列表中,准备好根据 AKS 环境增强上下文提示。 默认情况下,所有 AKS-MCP 服务器工具都已启用。 可以查看可用工具列表并禁用方案不需要的任何工具。
尝试“ 列出我的所有 AKS 群集” 等提示以开始使用 AKS-MCP 服务器中的工具。
小窍门
WSL 配置:如果你在 Windows 上使用 VS Code 和 WSL,请使用 "command": "wsl" 调用 WSL 二进制文件。 如果 VS Code 在 WSL(Remote-WSL)中运行,请直接调用二进制文件或使用 bash 包装器。
远程 MCP 服务器
在远程模式下,MCP 服务器作为 AKS 群集中的工作负荷或者你所选的任何计算资源运行。 此模式最适合使用共享工具的生产环境、跨用户一致的权限以及使用 Kubernetes ServiceAccount 和工作负荷标识进行完全访问控制。 远程 AKS MCP 服务器使用 HTTP 协议促进 AI 助手和 AKS 群集之间的交互。
先决条件
- 具有 Kubernetes 1.19+ 的 AKS 群集
- Helm 3.8+
- 已安装并经过身份验证的 Azure CLI(
az login)
使用 Helm 图表进行安装
克隆存储库并安装 AKS-MCP Helm 图表:
git clone https://github.com/Azure/aks-mcp.git
cd aks-mcp/chart
helm install aks-mcp . --namespace aks-mcp --create-namespace
有关配置参数的完整列表,请参阅 Helm 图表文档。
配置身份验证
根据环境和安全要求选择身份验证方法:
工作负荷标识通过将 Kubernetes ServiceAccount 链接到 Azure 托管标识来提供无密码身份验证。
1.在 AKS 群集上启用 OIDC
az aks update \
--resource-group <your-resource-group> \
--name <your-aks-cluster> \
--enable-oidc-issuer \
--enable-workload-identity
2.创建托管标识并分配 RBAC 权限
# Create identity
az identity create --resource-group <your-resource-group> --name aks-mcp-identity --location <your-location>
# Get IDs
IDENTITY_CLIENT_ID=$(az identity show --resource-group <your-resource-group> --name aks-mcp-identity --query "clientId" -o tsv)
IDENTITY_PRINCIPAL_ID=$(az identity show --resource-group <your-resource-group> --name aks-mcp-identity --query "principalId" -o tsv)
# Assign Reader role (use Contributor for readwrite access)
az role assignment create --role "Reader" --assignee-object-id $IDENTITY_PRINCIPAL_ID --assignee-principal-type ServicePrincipal --scope "/subscriptions/<subscription-id>"
3.创建联合标识凭据
AKS_OIDC_ISSUER=$(az aks show --resource-group <your-resource-group> --name <your-aks-cluster> --query "oidcIssuerProfile.issuerUrl" -o tsv)
az identity federated-credential create \
--name "aks-mcp-federated-credential" \
--identity-name aks-mcp-identity \
--resource-group <your-resource-group> \
--issuer $AKS_OIDC_ISSUER \
--subject "system:serviceaccount:aks-mcp:aks-mcp" \
--audience api://AzureADTokenExchange
重要
在安装 Helm 图表之前创建联合凭据。
4. 安装时启用工作负载身份
helm install aks-mcp . \
--namespace aks-mcp \
--create-namespace \
--set workloadIdentity.enabled=true \
--set azure.clientId=$IDENTITY_CLIENT_ID \
--set azure.subscriptionId=<your-subscription-id>
使用 Azure 应用路由启用 Ingress
使用 Azure 应用路由在外部公开 MCP 服务器:
# Enable App Routing on your cluster
az aks approuting enable --resource-group <your-resource-group> --name <your-cluster-name>
# Install with Ingress enabled
helm install aks-mcp . \
--namespace aks-mcp \
--create-namespace \
--set ingress.enabled=true \
--set ingress.hosts[0].host=aks-mcp.example.com \
--set ingress.hosts[0].paths[0].path=/ \
--set ingress.hosts[0].paths[0].pathType=Prefix \
--set azure.existingSecret=azure-credentials
连接 MCP 客户端
部署后,将 AI 助手连接到远程 MCP 服务器:
# Port forward for local testing
kubectl port-forward svc/aks-mcp 8000:8000 -n aks-mcp
配置 MCP 客户端以连接:
{
"mcpServers": {
"aks-mcp": {
"url": "http://localhost:8000",
"transport": "streamable-http"
}
}
}
对于群集内访问,请使用: http://aks-mcp.aks-mcp.svc.cluster.local:8000
Helm 配置参考
| 参数 | Description | 违约 |
|---|---|---|
workloadIdentity.enabled |
启用 Azure 工作负荷标识 | false |
azure.clientId |
Azure 客户端 ID | "" |
azure.tenantId |
Azure 租户 ID | "" |
azure.clientSecret |
Azure 客户端机密 | "" |
azure.subscriptionId |
Azure 订阅 ID | "" |
azure.existingSecret |
使用现有的 Kubernetes 密钥 | "" |
app.accessLevel |
访问级别:readonly、、 readwriteadmin |
readonly |
app.transport |
传输:stdio, sse, streamable-http |
streamable-http |
oauth.enabled |
启用 OAuth 身份验证 | false |
ingress.enabled |
启用入口 | false |
卸载 AKS MCP 服务器
卸载 AKS MCP 服务器的过程取决于部署模式及其当前正在运行的位置。
使用 AKS 扩展的 VS Code
- 打开 命令面板 (
Ctrl+Shift+P在 Windows/Linux 或Cmd+Shift+PmacOS 上)。 - 运行 MCP:列出服务器。
- 从列表中选择 AKS MCP 。
- 选择 “停止服务器 ”以停止正在运行的服务器。
- 若要删除配置,请选择“ 删除服务器配置”。
或者,手动删除服务器配置:
- 打开
.vscode/mcp.json文件或 VS Code 用户设置。 - 从
servers或github.copilot.chat.mcp.servers对象中删除aks-mcp-server该条目。 - 从系统中删除 AKS-MCP 二进制文件(位置因安装方法而异)。
Docker
如果使用 Docker MCP 工具包:
- 打开 Docker Desktop。
- 在左侧栏中选择 MCP 工具包 。
- 找到 AKS-MCP 服务器并禁用它。
如果使用容器化配置,请停止并删除容器:
docker stop <container-id>
docker rm <container-id>
其他 MCP 客户端
从您的 MCP 客户端配置文件中删除aks或aks-mcp条目(例如 Claude Desktop 的claude_desktop_config.json)。
常见问题和故障排除
本部分概述了常见的设置和运行时问题、其症状以及如何解决这些问题。
AKS MCP 服务器无法访问群集
表现:
- 工具返回了授权错误
- 没有资源可见
可能的原因:
- 用户或 MCP 标识没有足够的权限
- ServiceAccount 绑定不正确
- 错误配置的 kubeconfig 上下文(本地模式)
解决方法:
- 本地模式:检查是否有足够的权限访问群集。 验证你是否位于正确的群集和订阅上下文中。
- 远程模式:验证 MCP 服务器使用的 ServiceAccount 的 ClusterRole 绑定
Azure API 调用失败
表现:
- call_az工具返回身份验证或授权错误
可能的原因:
- 未为群集启用工作负荷标识
- ServiceAccount 未联合
- 缺少 Azure RBAC 分配
解决方法:
- 检查群集上是否启用了工作负荷标识
- 验证联合标识配置
- 将适当的 Azure 角色分配给托管标识
后续步骤
详细了解为 AKS 原生构建的智能功能:
- 关于 AKS 的代理 CLI
- 安装和使用 AKS 的代理 CLI