关于 Kubeopt
KubeOpt 分析 Kubernetes 集群成本并给出优化建议,适用于 AKS、EKS 和 GKE 环境。它提供可执行的实施计划和 kubectl 命令,并通过 MCP 工具让客户端查询集群成本与分析结果。
主要功能
- 01分析 AKS、EKS 和 GKE 成本
- 02运行 16 种优化算法
- 03计算资源成本与潜在节省
- 04生成优化计划和 kubectl 命令
- 05按 Pod 查看成本明细
- 06提供只读 GitHub Actions 扫描
适用场景
- 01查找集群成本节省机会
- 02评估工作负载的资源配置
- 03查看特定命名空间的 Pod 成本
- 04在拉取请求中汇报成本扫描结果
MCP 相关
MCP 服务通过 stdio 暴露 6 个工具,可列出集群、查询成本汇总和分析、获取建议及 Pod 成本,并触发新分析。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
KubeOpt
Kubernetes 成本工程师
KubeOpt 会分析你的 Kubernetes 集群,找出成本优化机会,并生成可执行的实施计划,其中包含可直接复制粘贴的 kubectl 命令。
支持 Azure AKS、AWS EKS 和 Google GKE。
功能介绍
- 连接云服务提供商 API 和 Kubernetes 集群
- 运行 16 种优化算法(资源规格优化、HPA、存储、网络、节点池、异常检测)
- 按资源计算实际成本与最优成本,并给出具体的节省金额
- 生成为期 3 周的实施计划,其中包含可直接执行的 kubectl 命令
- 提供包含成本明细、工作负载分析和优化评分的仪表板
GitHub Action
在每个拉取请求上或按计划运行 Kubernetes 成本扫描。该 Action 会将节省金额摘要作为 PR 评论发布(重新运行时会更新已有评论),并将结果写入 GitHub Step Summary。
每个 PR 中包含:
## KubeOpt Cost Scan — 2026-04-27
| Cluster | Provider | Monthly Spend | Savings Available |
|------------------|----------|---------------|-------------------|
| prod-eks-us-east | AWS | $4,120 | $890/mo |
| staging-aks-weu | Azure | $1,340 | $210/mo |
**Total potential savings: $1,100/mo**
<details>
<summary>Top opportunities</summary>
1. $540/mo — prod-eks-us-east — Rightsize 6 over-provisioned node groups
2. $350/mo — prod-eks-us-east — Enable HPA on 4 deployments with static replicas
3. $210/mo — staging-aks-weu — Remove 3 idle nodes outside business hours
</details>
设置 — 两个步骤:
1. 添加机密(Settings → Secrets and variables → Actions):
| 机密 | 值 |
|---|---|
KUBEOPT_URL | KubeOpt 实例的 URL(例如 https://demo.kubeopt.com) |
KUBEOPT_USERNAME | KubeOpt 用户名 |
KUBEOPT_PASSWORD | KubeOpt 密码 |
2. 创建 .github/workflows/cost-scan.yml:
name: K8s Cost Scan
on:
pull_request:
types: [opened, synchronize]
schedule:
- cron: '0 8 * * 1' # Every Monday at 08:00 UTC
workflow_dispatch:
permissions:
contents: read
pull-requests: write
jobs:
cost-scan:
runs-on: ubuntu-latest
steps:
- uses: kubeopt/kubeopt@v1
with:
kubeopt-url: ${{ secrets.KUBEOPT_URL }}
kubeopt-username: ${{ secrets.KUBEOPT_USERNAME }}
kubeopt-password: ${{ secrets.KUBEOPT_PASSWORD }}
该 Action 仅执行读取操作,不会修改你的集群。PR 评论会被更新,因此重新运行时会更新现有评论,而不是添加新评论。
Claude AI 集成(MCP)
用通俗的语言向 Claude 询问 Kubernetes 成本。
KubeOpt 附带一个 MCP 服务(mcp_server/),通过 stdio 传输方式提供 6 个工具。连接后,Claude Desktop、Cursor 或 Windsurf 可以直接查询集群数据,无需复制粘贴仪表板内容。
提供的工具:
| 工具 | 功能 |
|---|---|
list_clusters | 列出所有包含成本数据的受监控集群 |
get_cost_summary | 汇总所有集群的整体成本 |
get_cluster_analysis | 分析特定集群的详细信息 |
get_recommendations | 按节省金额影响排序的可执行建议 |
analyze_cluster | 触发新的分析并轮询,直到分析完成 |
get_pod_costs | 按 Pod 展示成本明细,可按命名空间筛选 |
前提条件
- KubeOpt 正在本地运行(
python main.py)或已部署到 Railway - 已安装依赖项的 Python 虚拟环境(
pip install -r requirements.txt)
Claude Desktop
编辑 ~/.claude/claude_desktop_config.json:
{
"mcpServers": {
"kubeopt": {
"command": "uvx",
"args": ["kubeopt-mcp"],
"env": {
"KUBEOPT_API_URL": "https://your-kubeopt-instance.com",
"KUBEOPT_USERNAME": "kubeopt",
"KUBEOPT_PASSWORD": "your-password"
}
}
}
}
保存后重启 Claude Desktop。
Cursor
打开 Cursor Settings → MCP 并添加新的服务条目:
{
"kubeopt": {
"command": "uvx",
"args": ["kubeopt-mcp"],
"env": {
"KUBEOPT_API_URL": "https://your-kubeopt-instance.com",
"KUBEOPT_USERNAME": "kubeopt",
"KUBEOPT_PASSWORD": "your-password"
}
}
}
Windsurf / Codeium
编辑 ~/.codeium/windsurf/mcp_config.json(如果文件不存在,请创建):
{
"mcpServers": {
"kubeopt": {
"command": "uvx",
"args": ["kubeopt-mcp"],
"env": {
"KUBEOPT_API_URL": "https://your-kubeopt-instance.com",
"KUBEOPT_USERNAME": "kubeopt",
"KUBEOPT_PASSWORD": "your-password"
}
}
}
}
保存后重启 Windsurf。
示例提示词
What are my top 3 cost savings opportunities across all clusters?
Which pods are costing the most in the production namespace?
Give me a summary of total Kubernetes spend this month.
What's the optimization score for my staging cluster?
Trigger a fresh analysis on cluster prod-aks-eastus and report back.
了解更多协议信息:modelcontextprotocol.io
GitHub Action — 完整参考
在每个拉取请求上或按计划运行 Kubernetes 成本扫描。该 Action 会将摘要作为 PR 评论发布(重新运行时会更新已有评论),并将结果写入 GitHub Step Summary。
每个 PR 中包含:
## KubeOpt Cost Scan — 2026-04-27
| Cluster | Provider | Monthly Spend | Savings Available |
|------------------|----------|---------------|-------------------|
| prod-eks-us-east | AWS | $4,120 | $890/mo |
| staging-aks-weu | Azure | $1,340 | $210/mo |
**Total potential savings: $1,100/mo**
<details>
<summary>Top opportunities</summary>
1. $540/mo — prod-eks-us-east — Rightsize 6 over-provisioned node groups
2. $350/mo — prod-eks-us-east — Enable HPA on 4 deployments with static replicas
3. $210/mo — staging-aks-weu — Remove 3 idle nodes outside business hours
</details>
设置
1. 将机密添加到仓库
前往 设置 → 机密和变量 → 操作,然后添加:
| 机密 | 值 |
|---|---|
KUBEOPT_URL | KubeOpt 实例的 URL(例如 https://demo.kubeopt.com) |
KUBEOPT_USERNAME | KubeOpt 用户名 |
KUBEOPT_PASSWORD | KubeOpt 密码 |
2. 创建 .github/workflows/cost-scan.yml
name: K8s Cost Scan
on:
pull_request:
types: [opened, synchronize]
schedule:
- cron: '0 8 * * 1' # Every Monday at 08:00 UTC
workflow_dispatch:
permissions:
contents: read
pull-requests: write
jobs:
cost-scan:
name: KubeOpt Cost Scan
runs-on: ubuntu-latest
steps:
- name: Run KubeOpt cost scan
id: kubeopt
uses: kubeopt/kubeopt@v1
with:
kubeopt-url: ${{ secrets.KUBEOPT_URL }}
kubeopt-username: ${{ secrets.KUBEOPT_USERNAME }}
kubeopt-password: ${{ secrets.KUBEOPT_PASSWORD }}
top: 5
post-comment: ${{ github.event_name == 'pull_request' && 'true' || 'false' }}
- name: Print savings to log
if: always()
run: echo "Total savings available: ${{ steps.kubeopt.outputs.total-savings }}/mo"
输入
| 输入 | 必填 | 默认值 | 说明 |
|---|---|---|---|
kubeopt-url | 是 | KubeOpt 实例的 URL | |
kubeopt-username | 是 | kubeopt | KubeOpt 用户名 |
kubeopt-password | 是 | KubeOpt 密码 | |
cluster-id | 否 | (所有集群) | 仅扫描指定集群 |
top | 否 | 5 | 显示的最佳节省机会数量 |
post-comment | 否 | true | 将结果作为 PR 评论发布 |
输出
| 输出 | 说明 |
|---|---|
total-savings | 每月潜在节省总额(美元) |
scan-summary | 完整的 Markdown 摘要(可在后续步骤中使用) |
扫描指定集群
- uses: kubeopt/kubeopt@v1
with:
kubeopt-url: ${{ secrets.KUBEOPT_URL }}
kubeopt-username: ${{ secrets.KUBEOPT_USERNAME }}
kubeopt-password: ${{ secrets.KUBEOPT_PASSWORD }}
cluster-id: prod-eks-us-east-1
top: 10
备注
- 此操作会在运行时检出
kubeopt/kubeopt@v1以执行扫描。无需本地安装。 - PR 评论采用更新或新增的方式:重新运行此操作时会更新现有评论,而不是添加新评论。
- 发布评论需要
pull-requests: write权限。 - 此操作不会修改集群,只会读取数据。
架构
KubeOpt Platform
+----------------------------------------------------------+
| |
| React SPA (Recharts) FastAPI REST API (v2) |
| frontend/dist/ presentation/api/v2/ |
| |
+---------------------------+------------------------------+
|
+------------------+------------------+
| | |
+-------v------+ +-------v------+ +--------v-------+
| Algorithms | | Analytics | | ML Models |
| (16 modules)| | Collectors | | Anomaly Det. |
| rightsizing | | Processors | | CPU Optimizer |
| HPA, storage| | Scorer | | Workload Cls |
+--------------+ +--------------+ +----------------+
| | |
+-------v------------------v------------------v-------+
| Cloud Provider Abstraction |
| 6 interfaces: Auth, Executor, Metrics, Costs, |
| Accounts, Inspector |
+---+-----------------+-----------------+-------------+
| | |
+---v---+ +----v----+ +----v----+
| Azure | | AWS | | GCP |
| (AKS) | | (EKS) | | (GKE) |
+-------+ +---------+ +---------+
托管服务(不在此仓库中)
| 服务 | 用途 | 端点 |
|---|---|---|
| 计划生成 | 生成优化计划 | plan.kubeopt.com |
| AI 聊天 | 对话式集群分析 | ai.kubeopt.com |
| 许可证管理器 | 许可证验证 | license.kubeopt.com |
这些服务需要 PRO 或 ENTERPRISE 许可证。核心分析引擎无需这些服务即可运行。
快速开始
前提条件
- Python 3.11+
- Node.js 18+(用于构建前端)
- 云服务提供商凭据(Azure、AWS 或 GCP)
本地运行
# Clone and install
git clone https://github.com/kubeopt/kubeopt.git
cd kubeopt
pip install -r requirements.txt
# Set up credentials (copy and fill in your values)
cp .env.example .env
# Build frontend
cd frontend && npm install && npm run build && cd ..
# Run
python main.py
# Open http://localhost:5001
使用 Docker 运行
docker build -t kubeopt .
docker run -p 5001:5001 --env-file .env kubeopt
通过 CLI 运行
npx kubeopt clusters # List clusters
npx kubeopt analyze <id> # Run analysis
npx kubeopt report <id> # View report
云服务提供商设置
Azure(AKS)
设置以下环境变量:
AZURE_SUBSCRIPTION_ID=your-subscription-id
AZURE_CLIENT_ID=your-client-id
AZURE_CLIENT_SECRET=your-client-secret
AZURE_TENANT_ID=your-tenant-id
需要具有 Reader 角色的 Service Principal。请参阅 docs/setup/AZURE-SETUP.md。
AWS(EKS)
AWS_ACCESS_KEY_ID=your-access-key
AWS_SECRET_ACCESS_KEY=your-secret-key
AWS_DEFAULT_REGION=us-east-1
需要具有 EKS、Cost Explorer 和 CloudWatch 读取权限的 IAM 用户。
Google Cloud(GKE)
GCP_SERVICE_ACCOUNT_KEY={"type":"service_account",...}
GCP_BILLING_DATASET=your_billing_dataset
GCP_BILLING_ACCOUNT_ID=your-billing-account-id
请参阅 docs/setup/GCP-BILLING-SETUP.md。
项目结构
kubeopt/
algorithms/ 16 optimization algorithm modules
analytics/ Cost collectors, processors, cluster scorer
application/ Orchestrator, command generators
infrastructure/
cloud_providers/ Azure, AWS, GCP adapters (6 interfaces each)
services/ Auth, caching, license validation, settings
persistence/ Database, analysis engine
machine_learning/ Anomaly detection, CPU optimizer, workload classifier
presentation/
api/v2/ FastAPI routers, schemas, dependencies
frontend/ React SPA (TypeScript, Recharts, Tailwind)
shared/
standards/ 16 YAML-based optimization standards
config/ Application configuration
mcp_server/ MCP server (6 tools, stdio transport)
技术栈
| 组件 | 技术 |
|---|---|
| 后端 | Python 3.11+、FastAPI、uvicorn |
| 前端 | React 19、TypeScript、Vite、Recharts、Tailwind CSS |
| 机器学习 | Pandas、NumPy、Scikit-learn |
| 云服务 | Azure SDK、boto3、google-cloud SDK |
| 数据库 | SQLite(开发)、PostgreSQL(生产) |
| 部署 | Docker、Railway、Kubernetes |
许可证
Apache License 2.0。请参阅 LICENSE。
核心分析引擎为开源软件,可免费使用。计划生成和 AI 聊天属于托管服务,需要 PRO 或 ENTERPRISE 许可证。
贡献
请参阅 CONTRIBUTING.md 了解相关指南。
安全
如需报告安全漏洞,请发送邮件至 [email protected]。请参阅 SECURITY.md。
由 Nivaya Technologies 构建
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。