OpenCost 为团队提供当前和历史 Kubernetes 及云支出与资源分配的可见性。这些模型在支持多个应用程序、团队、部门等的 Kubernetes 环境中提供成本透明度。它还提供跨多个云服务提供商的云成本可见性。
OpenCost 最初由 Kubecost 开发并开源。该项目结合了规范以及这些详细要求的 Golang 实现。Web UI 可在 opencost/opencost-ui 仓库中获取。
要查看 OpenCost 的完整功能,您可以查看 OpenCost 特性。以下是已启用特性的摘要:
OpenCost 现在仅通过官方 Helm chart 进行安装和管理。
在任何 Kubernetes 1.20+ 集群上快速安装:
helm repo add opencost https://opencost.github.io/opencost-helm-chart
helm repo update
helm install opencost opencost/opencost
[!NOTE] 独立的 Kubernetes 清单文件已被移除。请使用 Helm 进行所有安装和升级。有关详细信息和配置,请参阅 Helm 安装文档。
[!NOTE] 针对分片 Prometheus 用户的说明:如果您运行分片(HA)模式的 Prometheus,请将 PROMETHEUS_SERVER_ENDPOINT 设置为全局查询端点(例如 Thanos Query、Cortex 或 Mimir)。指向单个 Prometheus pod 可能会导致导出结果不完整或间歇性问题。有关详细信息,请参阅 Prometheus 集成文档。
[!NOTE] 针对分片 Prometheus 用户的说明:如果您运行分片(HA)模式的 Prometheus,请将 PROMETHEUS_SERVER_ENDPOINT 设置为全局查询端点(例如 Thanos Query、Cortex 或 Mimir)。指向单个 Prometheus pod 可能会导致导出结果不完整或间歇性问题。有关详细信息,请参阅 Prometheus 集成文档。
PROMETHEUS_SERVER_ENDPOINT
MCP服务器为AI代理提供以下工具:
get_allocation_costs:通过筛选和聚合检索成本分配数据。
参数:
windowaggregatestepaccumulateshare_idleinclude_idleget_asset_costs:检索资产成本数据,包括节点、磁盘、负载均衡器等。
参数:
windowget_cloud_costs:通过提供商、服务和区域筛选检索云成本数据。
参数:
windowaggregateaccumulateproviderservicecategoryregionaccountID配置完成后,AI代理可以如下查询成本数据:
// 获取过去7天的成本分配
const allocation = await mcpClient.callTool('get_allocation_costs', {
window: '7d',
aggregate: 'namespace,node'
});
// 获取过去24小时的资产成本
const assets = await mcpClient.callTool('get_asset_costs', {
window: '1d'
});
// 获取us-west-1区域AWS EC2的云成本
const cloudCosts = await mcpClient.callTool('get_cloud_costs', {
window: '7d',
aggregate: 'service',
provider: 'aws',
service: 'ec2',
accumulate: 'day',
filter: 'regionID:"us-west-1"'
});
有关详细的设置说明和高级配置,请参阅Helm图表文档。
# 克隆并启动带MCP服务器的OpenCost
# 您可能还需要克隆opencost-ui和opencost-helm-charts仓库
# 确保克隆的仓库与opencost位于同一父目录下
git clone https://github.com/opencost/opencost.git
cd opencost
tilt up
UI和Prometheus均运行在9090端口。您可能需要端口转发到非默认端口以同时访问两者。
Tilt配置说明(云成本):
OpenCost的Tilt配置值(tilt-values.yaml)包含额外环境变量,用于在开发环境中启用云成本数据摄入:
# tilt-values.yaml(节选)
opencost:
exporter:
extraEnv:
CLOUD_COST_ENABLED: "true"
CLOUD_COST_CONFIG_PATH: "/var/cloud-integration/cloud-integration.json"
CLOUD_COST_ENABLED设置为"true"以开启云成本数据摄入。CLOUD_COST_CONFIG_PATH指向Tilt使用的已挂载云集成文件(例如:/var/cloud-integration/cloud-integration.json)。tilt-values.yaml中的其他值。# 添加OpenCost Helm仓库
helm repo add opencost https://opencost.github.io/opencost-helm-chart
helm repo update
# 部署启用MCP服务器的OpenCost(选择加入)
helm install opencost opencost/opencost --set opencost.mcp.enabled=true
# 通过端口转发访问MCP服务器(示例)
kubectl port-forward svc/opencost 8081:8081
Helm图表中MCP服务器默认禁用。如需自定义配置:
# 部署启用MCP服务器
helm install opencost opencost/opencost \
--set opencost.mcp.enabled=true
# 部署自定义MCP端口
helm install opencost opencost/opencost \
--set opencost.mcp.port=9091
# 部署带调试日志
helm install opencost opencost/opencost \
--set opencost.mcp.extraEnv.MCP_LOG_LEVEL=debug
| 配置 | 命令 | 描述 |
|---|---|---|
| 默认 | helm install opencost opencost/opencost | MCP默认禁用 |
| 启用 | --set opencost.mcp.enabled=true | 在8081端口启用MCP服务器 |
| 自定义端口 | --set opencost.mcp.port=9091 | 使用不同端口 |
| 调试模式 | --set opencost.mcp.extraEnv.MCP_LOG_LEVEL=debug | 启用调试日志 |
配置您的MCP客户端(如Cursor)以连接到OpenCost MCP服务器:
默认配置(端口8081):
{
"mcpServers": {
"opencost": {
"type": "http",
"url": "http://localhost:8081"
}
}
}
自定义端口配置:
{
"mcpServers": {
"opencost": {
"type": "http",
"url": "http://localhost:9091"
}
}
}
Kubernetes部署场景:
{
"mcpServers": {
"opencost": {
"type": "http",
"url": "http://opencost.opencost.svc.cluster.local:8081"
}
}
}
外部访问场景(使用Load*/Ingress):**
{
"mcpServers": {
"opencost": {
"type": "http",
"url": "http://your-opencost-domain.com:8081"
}
}
}
MCP服务器为AI代理提供以下工具:
get_allocation_costs通过过滤和聚合检索成本分配数据。
参数:
window(必填):时间窗口(例如:"7d"、"1h"、"30m")aggregate(可选):聚合属性(例如:"namespace"、"pod"、"node")step(可选):分辨率步长accumulate(可选):是否随时间累积share_idle(可选):是否分摊空闲成本include_idle(可选):是否包含空闲资源get_asset_costs检索资产成本数据,包括节点、磁盘、负载均衡器等。
参数:
window(必填):时间窗口(例如:"7d"、"1h"、"30m")get_cloud_costs通过提供商、服务和区域过滤检索云成本数据。
参数:
window(必填):时间窗口(例如:"7d"、"1h"、"30m")aggregate(可选):聚合属性(例如:"provider"、"service"、"region")accumulate(可选):时间累积方式("day"、"week"、"month")provider(可选):按云提供商过滤(例如:"aws"、"gcp"、"azure")service(可选):按服务过滤(例如:"ec2"、"compute"、"s3")category(可选):按类别过滤(例如:"compute"、"storage"、"network")region(可选):按区域过滤(例如:"us-west-1"、"us-central1")accountID(可选):按账户ID过滤配置完成后,AI代理可以如下查询成本数据:
// 获取过去7天的成本分配
const allocation = await mcpClient.callTool('get_allocation_costs', {
window: '7d',
aggregate: 'namespace,node'
});
// 获取过去24小时的资产成本
const assets = await mcpClient.callTool('get_asset_costs', {
window: '1d'
});
// 获取us-west-1区域AWS EC2的云成本
const cloudCosts = await mcpClient.callTool('get_cloud_costs', {
window: '7d',
aggregate: 'service',
provider: 'aws',
service: 'ec2',
accumulate: 'day',
filter: 'regionID:"us-west-1"'
});
有关详细的设置说明和高级配置,请参阅https://github.com/opencost/opencost-helm-chart/blob/main/charts/opencost/README.md#mcp-server%E3%80%82
我们 :heart: 拉取请求!有关从源代码构建项目和贡献更改的信息,请参见CONTRIBUTING.md。
您可以查看OpenCost文档获取常见问题列表。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
不支持 push
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务