Kubernetes Helm 卡在更新中

Oct*_*xan 28 kubernetes kubernetes-helm

我在运行之前尝试运行 Helm 升级helm repo update,现在它似乎永久停留在“状态:挂起升级”并且不会让我再次尝试运行升级。

试图运行: helm upgrade --namespace coder --install --force --atomic --wait --version 1.13.2 --values ./coder.yaml coder coder/coder

输出: Error: UPGRADE FAILED: another operation (install/upgrade/rollback) is in progress

bwl*_*289 27

TLDR:您需要先回滚到另一个版本,然后helm upgrade再回滚:

helm rollback <release> <revision> --namespace <namespace>


发生这种情况的原因有很多,但最终会在升级/安装过程中出现中断时发生。通常,您SIGKILL( Ctrl C) 在部署正在进行时。

你会注意到,如果你helm ls --namespace <namespace>在它卡在STATUS: pending-upgrade状态时,你会看到以下没有任何其他信息的信息:

NAME    NAMESPACE   REVISION    UPDATED STATUS  CHART   APP VERSION
Run Code Online (Sandbox Code Playgroud)

目前最好的解决方法是回滚到另一个版本,然后helm upgrade再次:

helm rollback <release> <revision> --namespace <namespace>

revision 是可选的,但您应该尝试提供它。

更多资源:

  • 但如果这是第一次修订,您会怎么做?没有什么可以回滚的。 (8认同)
  • 我也遇到了这个问题,但是使用助焊剂,这个解决方案也适用于这个问题 (4认同)
  • 要通过 helm 获取卡住的应用程序列表,请使用 `helm ls --namespace &lt;namespace&gt; -all` (4认同)
  • @Explicitsoul 只是 helm 删除 &lt;release&gt; (如果没有以前的修订) (2认同)

Man*_*j I 27

这对我有用

  1. helm list --all这将列出所有版本及其状态
NAME  NAMESPACE       REVISION        UPDATED                                 STATUS               CHART                   APP VERSION
rel1  default         1               2021-06-04 14:15:37.652066 +0530 IST    deployed             rel1-3.32.0             0.46.0     
rel2  default         29              2021-06-18 11:02:38.779801 +0530 IST    pending-upgrade      rel2-0.0.1                     
rel3  default         3               2021-06-17 11:27:14.608042 +0530 IST    deployed             rel3-0.0.1      
Run Code Online (Sandbox Code Playgroud)
  1. 请注意,rel2 的状态为待更新。发生这种情况是因为我在升级过程中按了 Ctrl+C
  2. 在本例中,我所要做的就是回滚到之前的修订版 28 helm rollback rel2 28 --namespace default
NAME   NAMESPACE       REVISION        UPDATED                                 STATUS          CHART          APP VERSION
rel1   default         1               2021-06-04 14:15:37.652066 +0530 IST    deployed        rel1-3.32.0    0.46.0     
rel2   default         30              2021-06-18 11:26:07.555547 +0530 IST    deployed        rel2-0.0.1                     
rel3   default         3               2021-06-17 11:27:14.608042 +0530 IST    deployed        rel3-0.0.1     
Run Code Online (Sandbox Code Playgroud)


duy*_*tpt 14

这个解决方案对我有用:

kubectl get secrets
kubectl delete secret sh.helm.release.v1.<RELEASE_NAME>.v<LATEST_REVISION>
Run Code Online (Sandbox Code Playgroud)

遵循此问题中描述的解决方案

  • [这个答案](/sf/answers/4559500851/)解释了原因,但这解决了我的问题。我取消了在“升级”命令中间运行的管道,并且在 helm 中没有注册任何版本来执行“回滚”或“卸载”。删除头盔的发布秘密是继续前进的唯一方法。+1 (3认同)
  • 只是添加 - 我必须将 --namespace &lt;name-of-namespace&gt; 添加到两个 kubectl 命令中,以使它们适用于我的部署(否则它假定默认命名空间) (3认同)
  • 这可能是最糟糕的建议。您很可能最终会得到悬而未决的资源。回滚是迄今为止恢复到先前状态的最安全的方法。如果是第一次安装helm(即没有release版本),则强制删除即可。 (2认同)

小智 9

万一对某人有用,并且为了回应explicitsoul的评论,对我来说修复它的是:

helm delete <release> -n <namespace>
Run Code Online (Sandbox Code Playgroud)

这删除了挂起的安装(在我的情况下,是第一个,所以我没有要回滚到以前的版本),然后我能够再次运行安装。

在我的情况下导致卡住的过程是 CTRL-C 取消安装命令,所以不要这样做。


ReS*_*Eng 8

我也面临同样的情况。我使用了 helm 3.4.1...当部署处于挂起状态并且您使用 --atomic (在 helm3 中也意味着 --wait)时,就会发生这种情况。

我无法进行升级。最糟糕的是,甚至helm -n code list没有显示任何内容,所以我无法执行以下操作:

helm -n code code 
Run Code Online (Sandbox Code Playgroud)

由于 helm3 将此类信息保存在机密中,因此只需清理相应的机密并进行安装(或升级 --install ,但不带 --atomic )。在你的情况下类似

helm delete --namespace code secret sh.helm.release.v1.code.v1
Run Code Online (Sandbox Code Playgroud)

(其中最后一个 v1 是版本号,因此如果您同意的话,可以列出并删除所有内容)。

以及战后的 helm 安装。

注意:旧对象(pod 等)将在那里,因此新安装将尝试合并内容。对我来说没问题,但请注意 -> 这是一个黑客:)

更多信息: https: //github.com/helm/helm/issues/5595


Rtm*_*tmY 5

为了回滚到以前的版本,您只需传递版本名称即可

helm rollback <RELEASE_NAME>
Run Code Online (Sandbox Code Playgroud)

当你运行->栏下RELEASE_NAME时可以看到哪里。helm list --allNAME

(*)--namespace <namespace>如果终端上下文未设置为命名空间,则添加。