GitHub Actions Runner Controller 在 ArgoCD 中删除时的死锁问题分析
GitHub Actions Runner Controller (ARC) 是一个用于在 Kubernetes 集群中管理自托管 GitHub Actions Runner 的工具。当与 ArgoCD 结合使用时,用户报告了一个关键问题:在尝试通过 ArgoCD 卸载 AutoscalingRunnerSet 时会出现死锁情况。
问题现象
在 ArgoCD 环境中部署 ARC 的 AutoscalingRunnerSet 后,当用户尝试卸载 ArgoCD 应用时,删除操作会被阻塞。这是因为 ARC 控制器为多个资源添加了 actions.github.com/cleanup-protection 终结器(finalizer),而 ArgoCD 尝试直接删除这些资源,导致两者互相等待,形成死锁。
受影响的资源类型包括:
- AutoscalingRunnerSet
- Kube 模式的服务账户
- Kube 模式的角色和角色绑定
- RunnerSet 管理器的角色和角色绑定
问题根源分析
这个问题本质上是 Kubernetes 资源生命周期管理和 GitOps 工具工作流之间的冲突。ARC 控制器使用终结器来确保资源被正确清理,而 ArgoCD 作为声明式 GitOps 工具,会直接尝试删除它管理的所有资源。
在标准 Helm 部署中,这种冲突不会发生,因为 Helm 会按正确顺序处理资源删除。但在 ArgoCD 中,由于所有资源都是平等对待的,缺乏对资源间依赖关系的理解,导致了这种死锁情况。
解决方案探讨
社区成员提出了几种解决方案:
-
ArgoCD 注解方案
通过为资源添加特定的 ArgoCD 注解可以解决这个问题:argocd.argoproj.io/sync-options: Delete=false- 告诉 ArgoCD 不要直接删除该资源argocd.argoproj.io/sync-wave: "1"- 控制资源同步顺序
-
分离部署架构
建议将控制器和 RunnerSet 部署为独立的 ArgoCD 应用,这样可以更灵活地管理它们的生命周期。 -
手动干预方案
在紧急情况下,可以手动移除终结器:kubectl patch autoscalingrunnerset <name> --type=json -p='[{"op": "remove", "path": "/metadata/finalizers"}]'
项目维护者立场
GitHub 官方维护团队表示目前没有足够资源正式支持 ArgoCD 集成。他们建议用户在需要特定 ArgoCD 支持时维护自己的 Helm Chart 分支。
最佳实践建议
对于生产环境使用 ARC 和 ArgoCD 的用户,建议采用以下架构:
- 将控制器部署为一个独立的 ArgoCD 应用
- 每个 RunnerSet 也作为独立的 ArgoCD 应用
- 为 RunnerSet 相关资源添加适当的 ArgoCD 注解
- 考虑使用同步波(sync-wave)来控制资源创建和删除顺序
这种架构既保持了 GitOps 的优势,又避免了资源删除时的死锁问题。
未来展望
虽然目前官方不直接支持 ArgoCD 集成,但社区可以继续探索更通用的解决方案,例如通过 Helm values 暴露资源注解配置,这样用户可以根据自己的部署工具需求自定义注解,而不需要维护 Chart 分支。这种方案对其他 GitOps 工具(如 Flux)用户也会有益处。
GLM-5智谱 AI 正式发布 GLM-5,旨在应对复杂系统工程和长时域智能体任务。Jinja00
GLM-5-w4a8GLM-5-w4a8基于混合专家架构,专为复杂系统工程与长周期智能体任务设计。支持单/多节点部署,适配Atlas 800T A3,采用w4a8量化技术,结合vLLM推理优化,高效平衡性能与精度,助力智能应用开发Jinja00
请把这个活动推给顶尖程序员😎本次活动专为懂行的顶尖程序员量身打造,聚焦AtomGit首发开源模型的实际应用与深度测评,拒绝大众化浅层体验,邀请具备扎实技术功底、开源经验或模型测评能力的顶尖开发者,深度参与模型体验、性能测评,通过发布技术帖子、提交测评报告、上传实践项目成果等形式,挖掘模型核心价值,共建AtomGit开源模型生态,彰显顶尖程序员的技术洞察力与实践能力。00
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00
MiniMax-M2.5MiniMax-M2.5开源模型,经数十万复杂环境强化训练,在代码生成、工具调用、办公自动化等经济价值任务中表现卓越。SWE-Bench Verified得分80.2%,Multi-SWE-Bench达51.3%,BrowseComp获76.3%。推理速度比M2.1快37%,与Claude Opus 4.6相当,每小时仅需0.3-1美元,成本仅为同类模型1/10-1/20,为智能应用开发提供高效经济选择。【此简介由AI生成】Python00
Qwen3.5Qwen3.5 昇腾 vLLM 部署教程。Qwen3.5 是 Qwen 系列最新的旗舰多模态模型,采用 MoE(混合专家)架构,在保持强大模型能力的同时显著降低了推理成本。00- RRing-2.5-1TRing-2.5-1T:全球首个基于混合线性注意力架构的开源万亿参数思考模型。Python00