Buildkite 代理集群弹性伸缩器
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/buildkite-agent-fleet-scaler。
技能介绍
解决的问题
Buildkite 流水线的算力供给往往写成一个静态数字:Agent 池固定开多少台,高峰排队、低谷闲置。带来的直接后果是反馈变慢与账单浪费同时存在。队尾的 job 等待时间拉长时,说明容量已经不够,但人工扩缩既慢又容易错过窗口。
核心能力
- 基于指标驱动扩缩:读取
queue depth与作业等待时间,而不是定时器或固定阈值。 - 统一入口:通过 Buildkite GraphQL API 触发扩展动作,与 CI 编排层解耦。
- 多形态后端:同时覆盖 AWS EC2 Spot 实例与 Kubernetes HPA 两类容量来源,适合混合或迁移中的基础设施。
关键步骤大致是:轮询队列状态 → 计算目标容量 → 下发扩缩指令 → 观察新 Agent 接入并承接 job。EC2 侧关注 Spot 容量变化与回收,K8s 侧关注 HPA 的目标指标与扩容延迟。
适用边界与注意点
- 运行前先审阅上游代码:该技能无法自动提取基于源代码的安装或使用说明,建议在敏感工作流中接入前先 review 上游项目。
- 冷启动不是零成本:新实例拉起、镜像拉取、Agent 注册都有延迟,扩得太晚可能让队尾 job 继续等。
- Spot 会中断:EC2 Spot 的回收意味着必须依赖替换机制,否则节点消失会留下悬空 job。
- HPA 指标要选对:容器环境里若只用 CPU 这类滞后指标,容易扩在需求后面。
参考文档:https://buildkite.com/docs
使用场景
- CI 流量短时上涨,队列积压,需要自动补足 Agent 数量。
- 混合环境同时跑 EC2 与 K8s,需要统一按队列指标扩缩容。
- 夜间 batch job 排队过长,希望根据等待时间自动拉起实例。
- Spot 节点被回收后,需要按队列深度快速补齐容量缺口。
适合人员
- CI/CD 平台工程师,负责让流水线在峰值时不排队。
- Kubernetes 运维工程师,需要调优 HPA 以承接构建负载。
- 云基础设施负责人,希望用 Spot 实例压低 CI 账单。
- Buildkite 插件开发者,要在真实队列上验证扩缩逻辑。