GitHub 发布 Actions Runner Controller (ARC) 0.15.0 版本,为在 Kubernetes 上运行自托管 GitHub Actions 运行器的组织带来了可靠性、可扩展性和可观测性方面的改进。该版本于 10 月 1 日发布,重点在于减少不必要的 Kubernetes API 请求、提升控制器吞吐量,并使升级和关机操作更具可预测性,对于管理大量运行器扩展集的环境而言尤其如此。
ARC 是一个 Kubernetes 操作符,可以根据工作流需求自动扩展自托管的运行器。它允许组织运行自己的执行基础设施,并在任务到达和完成时动态地创建和删除运行器实例。如果企业需要控制构建环境、网络访问、计算资源或工作负载隔离,但又不想维护永久预配置的运行器池,这一点会非常有用。
0.15.0 版本的主要改进之一是减少了控制器为保持运行器资源同步所需的工作量。控制器更新现在采用 Kubernetes 补丁请求(patch requests),而不是完整的更新请求(full update requests),这可以减少 API 有效载荷的大小。此外,运行器状态聚合已经转移至 EphemeralRunnerSet 和 AutoscalingRunnerSet 指标中,这减少了发送到 Kubernetes API 的状态更新的数量。
控制器现在会过滤传入的事件,避免不必要的对账操作;同时,可以通过每秒查询次数和突发设置来配置监听器 API 客户端的速率限制。团队还可以使用 max-concurrent-reconciles 标志,在全球范围内或针对单个控制器配置调和并发数。这些变更组合在一起,便可以使平台团队能够更好地控制 ARC 在高负载下的行为,并有助于在大型部署中减少可避免的处理操作和 API 流量。
该版本还解决了生命周期管理问题。补丁版本升级现在可以就地更新资源,在自动扩展运行器集与临时运行器集之间保持一对一映射,减少升级过程中的中断。
控制器关机行为也得到了改进。现在 terminationGracePeriodSeconds 设置变成了可配置项,并且与控制器管理器的优雅关机超时保持了一致,从而让运维人员能够更好地控制控制器在重启或升级期间的退出方式。
当对应的运行器规模集在 GitHub Actions 服务中不复存在时,ARC 还可以重新注册该运行器规模集。这有助于控制器在其本地 Kubernetes 状态与 GitHub 维护的扩展集状态不一致时进行恢复。
最后,当临时运行器 Pod 成功退出时,ARC 会跳过服务器端在移除运行器时所做的额外检查,从而加快临时运行器的删除速度。虽然单独来看这些更改微不足道,但它们解决了在运行器环境持续创建和销毁过程中,重要性日益攀升的运维细节问题。
对于将 ARC 作为共享 CI 基础设施运行的团队而言,将运行器状态聚合纳入指标体系尤为重要。在任务排队、运行器配置、工作负载执行以及临时环境清理等过程中,大型运行器集群会频繁触发生命周期事件。减少状态更新可以缓解 Kubernetes API 的压力,而指标则为监控控制器和运行器的聚合行为提供了更恰当的依据。
此外,可配置的调和并发数和监听器速率限制也有助于运维人员在吞吐量与 API 压力之间寻求平衡。然而,这些设置并非简单的性能开关:增加并发数可能会提高控制器与 Kubernetes 及 GitHub 服务的交互频率。因此,团队应该根据自身的工作负载模式和集群容量验证更改效果,而不是一味地认为更高的并发数总是更好。
向动态管理的 CI 执行基础设施迈进是一种广泛的趋势,而 ARC 只是其中的一部分。例如,CircleCI 的 Machine Runner Orchestrator 专注于扩展基于机器的运行器,并支持包括 CPU、GPU 和 ARM 工作负载在内的不同资源类型。而 ARC 则直接与 Kubernetes 集成,用于管理 GitHub Actions 的运行器规模集,通常采用临时运行器环境。虽然这两种方法都旨在解决同一项广泛存在的挑战——使执行能力与 CI 需求相匹配——但在平台集成和运行器执行模型方面存在明显的差异。
对于已经将 GitHub Actions 和 Kubernetes 作为标准平台的组织而言,ARC 提供了一种原生方式,让运维人员可以像管理其他集群资源一样管理运行器容量。其取舍在于,平台团队还必须运维控制器、管理 Kubernetes 容量,并理解运行器扩展如何与集群调度、API 限制以及工作流需求进行交互。
ARC 0.15.0 是一个增量版本,但其侧重点反映了一个重要的工程问题:一旦 CI 基础设施服务于众多代码库和团队,控制器的效率和生命周期可靠性本身就成了交付过程中的关键考量因素。
GitHub Actions Runner Controller 0.15.0 致力于实现大规模场景下的可靠性
原文链接:https://www.infoq.com/news/2026/10/github-runner-controller-0-15/





