Spotinst集群管理工具

一个用于管理Spotinst平台上AWS和Azure Ocean集群的多账户跨云工具集,支持集群监控、成本分析和自动化操作。

  • by arnstarn
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 arnstarn/mcp-server-spotinst

使用说明

mcp服务器spotins

MCP服务器 Spot.io(Spotinst) API支持具有多帐户访问权限的AWS和Azure Ocean集群。

工具(34)

跨账户

工具 说明
list_accounts 列出当前令牌可访问的所有Spotinst帐户
list_all_clusters 列出所有帐户和云(AWS+Azure)上的所有集群

AWS海洋

工具 说明
list_clusters 列出AWS Ocean K8s集群
get_cluster 获取AWS Ocean集群详细信息
list_vngs 列出AWS虚拟节点组(启动规范)
get_vng 获取AWS VNG详细信息
list_elastigroups 列出所有弹性组
get_elastigroup 获取Elastigroup详细信息
get_allowed_instance_types 获取允许的EC2实例类型
get_right_sizing 获取正确的资源规模建议(仅限AWS)

蓝天碧海

工具 说明
list_clusters_azure 列出Azure Ocean集群
get_cluster_azure 获取Azure Ocean群集详细信息
list_vngs_azure 列出Azure虚拟节点组
get_vng_azure 获取Azure VNG详细信息

两云(通过 cloud="azure" 适用于Azure)

工具 说明
get_cluster_nodes 列出Ocean集群中的节点
get_cluster_costs 按命名空间或资源获取聚合成本明细
list_rolls 列出部署卷
get_roll 获取卷详细信息
get_cluster_log 获取缩放和活动日志事件

状态节点(AWS托管实例)

工具 说明
list_stateful_nodes 列出所有有状态节点(托管实例)
get_stateful_node 获取状态节点详细信息

日程安排和健康

工具 说明
get_cluster_scheduling 获取调度和自动缩放器配置
get_cluster_health 复合健康检查:节点、最近的错误、活动滚动

成本分析

工具 说明
get_cost_trending 每周(或自定义期间)成本比较
get_savings_summary 30天成本和节省汇总

标签筛选

工具 说明
filter_clusters_by_tag 按标签键/值过滤集群
filter_vngs_by_tag 按标签键/值过滤VNG

导出(YAML)

工具 说明
export_cluster_yaml 将集群配置导出为用于GitOps/backup的YAML
export_vng_yaml 将VNG配置导出为用于GitOps/backup的YAML

写入操作(必需 confirm=true)

工具 说明
remove_instances 推荐 --使用命名策略删除实例(见下文)
initiate_roll Ocean集群中节点的滚动重启
detach_instances 从AWS Ocean集群中分离实例,并可选择终止实例
update_vng 更新AWS VNG配置
update_vng_azure 更新Azure VNG配置

所有工具都接受可选 account_id 参数来查询任何帐户。

实例删除策略

这 remove_instances 该工具为删除实例提供了一个安全的、基于意图的接口。您不需要记住要设置哪些API标志,而是选择一种策略:

策略 发生了什么 用例
drain_and_replace 优雅地排空吊舱(尊重PDB),终止,海洋更换。 默认且最安全。 更换生产中有问题的节点
replace 立即终止,海洋自动更换。没有优雅的排水。仅限AWS。 不需要排水时快速更换
remove_permanently 终止+减少集群容量。无需更换。仅限AWS。 缩小集群规模

当 confirm=false (默认),该工具显示详细的执行计划,以便您在继续之前进行查看:

remove_instances("o-abc123", "i-abc123", strategy="drain_and_replace")

→ SAFETY: Action NOT executed. Set confirm=true to proceed.
  DRAIN AND REPLACE 1 instance(s) in cluster o-abc123:
    Instances: ['i-abc123']
    Method: Rolling restart (20% per batch)
    - Pods will be gracefully drained (PDBs respected)
    - Instances will be terminated after drain
    - Ocean will automatically launch replacements

设置

环境变量

export SPOTINST_TOKEN="your-spotinst-api-token"
export SPOTINST_ACCOUNT_ID="act-xxxxxxxx"

使用pip安装

pip install mcp-server-spotinst

使用uvx安装(无需安装)

uvx mcp-server-spotinst

Claude代码配置

添加 ~/.mcp.json:

{
  "mcpServers": {
    "spotinst": {
      "command": "uvx",
      "args": ["mcp-server-spotinst"],
      "env": {
        "SPOTINST_TOKEN": "your-token",
        "SPOTINST_ACCOUNT_ID": "act-xxxxxxxx"
      }
    }
  }
}

码头工人

docker build -t mcp-server-spotinst .
docker run -e SPOTINST_TOKEN=your-token -e SPOTINST_ACCOUNT_ID=act-xxxxxxxx mcp-server-spotinst

独立运行

mcp-server-spotinst

多账户使用

您的个人API令牌可以访问多个Spotinst帐户。使用 list_accounts 查看所有可用帐户,然后传递 account_id 任何工具:

list_clusters(account_id="act-be5e7ffe")
get_cluster_nodes("o-390ef886", account_id="act-9785011e", cloud="azure")

或使用 list_all_clusters 用于所有产品的单次通话库存。

API 参考

使用 Spot.io REST API 在 https://api.spotinst.io.