首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >舵机并行执行,导致在挂起的安装状态下释放

舵机并行执行,导致在挂起的安装状态下释放
EN

Stack Overflow用户
提问于 2022-01-30 20:42:58
回答 1查看 681关注 0票数 1

我有一个CircleCI工作流,在与主分支的任何合并中,它构建代码,创建Docker映像,并运行helm upgrade将最新的构建更新到k8s集群。

我面临着舵机的问题,在主分支上经常发生两次合并,CircleCI试图同时运行两次舵机升级,舵机开始表现怪异。

很多时候的发布都是在pending-install状态下进行的,我不得不手动回滚。即使在回滚之后,也会留下许多孤立的k8s对象,我需要手动删除它们。

我阅读了舵机代码,发现有一个互斥锁将阻止并行发布。我怀疑,由于helm没有维护显式锁(远程锁),而且我的CircleCI在两个不同的会话(两个不同的shell)中运行舵机升级,所以helm不知道正在进行的发布并导致这个问题。

我不知道如何处理这个用例,或者是否有人在过去遇到过这个问题: helm把孤立的对象抛在后面(主要是cronjobsingress)?

我能想到的一个解决办法是在运行舵机升级之前检查helm状态来停止并行构建,该升级并不是空闲的。

K8S版本- 1.21

舵机版本- 3.7.2

EN

回答 1

Stack Overflow用户

发布于 2022-02-08 09:42:58

您描述的问题主要与Helm有关。你正确地注意到,可以找到解决办法:

我能想到的一个解决办法是在运行舵机升级之前检查helm状态来停止并行构建,该升级并不是空闲的。

总的来说,这个特性在过去有很多bug,而且很有可能它不像它应该的那样工作。

此错误也经常由重复的env变量键引起,解决方案用这个问题这个github问题描述。

还请参阅本题有关并行舵机安装和使用--concurrency=N标志。

说到这一点:

我有一个70:30的成功:失败的比率。这很奇怪也很难理解。

试着检查你的日志,看看可能出了什么问题。也许你的资源用完了(例如,内存)?我试图重新创建这个问题,但对我来说,解决方案是删除重复的kyes。你也可以在github上报告一个bug

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70918749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档