【问题标题】:Kubernetes Helm stuck with an update in progressKubernetes Helm 卡在正在进行的更新中
【发布时间】:2021-03-08 10:33:54
【问题描述】:

我在运行 helm repo update 之前尝试运行 Helm 升级,现在它似乎永久卡在“STATUS: pending-upgrade”中,不允许我再次尝试运行升级。

尝试运行: 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

【问题讨论】:

    标签: kubernetes kubernetes-helm


    【解决方案1】:

    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
    

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

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

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

    更多资源:

    【讨论】:

    • 但是如果这是第一次修订,你会怎么做?没有什么可以回滚的。
    • 我也遇到了这个问题,但是使用了助焊剂,这个解决方案也可以解决这个问题
    【解决方案2】:

    这个解决方案对我有用:

    kubectl get secrets
    kubectl delete secret sh.helm.release.v1.<RELEASE_NAME>.v<LATEST_REVISION>
    

    遵循this issue中描述的解决方案

    【讨论】:

    • This answer 解释了原因,但这解决了我的问题。我已经取消了在 upgrade 命令中间运行的管道,并且没有在 helm 中注册 Release 来执行 rollbackuninstall。删除 helm 的发布密钥是继续前进的唯一方法。 +1
    • 这对我也有用。
    • 很好的解决方案!
    【解决方案3】:

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

    helm delete <release> -n <namespace>
    

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

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

    【讨论】:

      【解决方案4】:

      这对我有用

      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      
      
      1. 请注意 rel2 的状态为 pending-update 。发生这种情况是因为我 在升级过程中按了 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     
      

      【讨论】:

        【解决方案5】:

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

        我无法进行升级。最糟糕的是,即使helm -n code list 也没有显示任何内容,所以我做不到:

        helm -n code code 
        

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

        helm delete --namespace code secret sh.helm.release.v1.code.v1
        

        (最后一个 v1 是版本号,所以如果你同意的话,可以列出并删除所有版本)。

        以及战后的 helm install。

        注意:旧对象(pod 等)将在那里,因此新安装将尝试合并事物。对我来说一切正常,但请注意 -> 这是一个 HACK :)

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

        【讨论】:

          【解决方案6】:

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

          helm rollback <RELEASE_NAME>
          

          当您运行helm list --all 时可以看到RELEASE_NAMENAME 列下的位置。

          (*) 如果终端上下文未设置为命名空间,则添加 --namespace &lt;namespace&gt;

          【讨论】:

            【解决方案7】:

            kubectl 获取秘密 kubectl 删除秘密 sh.helm.release.v1..v

            通过使用上述命令,它将在 helm upgrade 运行过程中删除现有的 secret,并删除卡住的 helm upgrade 并生成新的 secret 以继续新的升级。

            【讨论】:

              【解决方案8】:

              这些是对我有用的步骤:

              1. 查看您的部署状态(我一直处于待处理状态)

                helm list --all

              2. 回滚到以前的版本,因为我已经在这里工作了,下一步可选

                helm rollback &lt;NAMESPACE_NAME&gt; &lt;Previous Version&gt; --namespace &lt;NAMESPACE_NAME&gt;

              3. 如果你想要新的/另一个部署

                helm upgrade . . .

              【讨论】:

                猜你喜欢
                • 2018-02-08
                • 1970-01-01
                • 2018-08-02
                • 2023-03-23
                • 2022-01-13
                • 1970-01-01
                • 2020-05-17
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多